0

SQL-DMO를 사용하여 VBS에서 스크립트를 실행하여 새 데이터베이스를 만들었습니다. 이것은 SQL Server 2000에서 수행되었지만 SQL Server 2008 R2에서는 더 이상 작동하지 않습니다.VBS (SQL DMO)를 사용하여 SQL Server 2008 R2 데이터베이스를 만들 때 오류가 발생했습니다.

스크립트는 다음과 같이이다 :

Const C_SQL_UID = "sa" 
Const C_SQL_PWD = "sa" 
Const C_SQL_SERVER = "dbserver" 
Const C_SQL_TMPDBNAME = "TMP_DB" 
Const C_SQLDIR = "d:\data" 

Dim SqlServer: Set SqlServer = CreateObject("SQLDMO.SqlServer") 
SqlServer.Connect C_SQL_SERVER, C_SQL_UID, C_SQL_PWD 

Dim database: Set database = CreateObject("SQLDMO.Database") 
Dim dbDataFile: Set dbDataFile = CreateObject("SQLDMO.DBFile") 
Dim dbLogFile: Set dbLogFile = CreateObject("SQLDMO.LogFile") 

database.Name = C_SQL_TMPDBNAME 

dbDataFile.Name = C_SQL_TMPDBNAME 
dbDataFile.PhysicalName = C_SQLDIR & "\" & C_SQL_TMPDBNAME & "_Data.mdf" 
dbDataFile.PrimaryFile = True 
dbDataFile.Size = 2 
dbDataFile.FileGrowthType = 0 'SQLDMOGrowth_MB 
dbDataFile.FileGrowth = 1 

database.FileGroups.Item("PRIMARY").DBFiles.Add(dbDataFile) 

dbLogFile.Name = C_SQL_TMPDBNAME & "Log" 
dbLogFile.PhysicalName = C_SQLDIR & "\" & C_SQL_TMPDBNAME & "_Log.ldf" 
dbLogFile.Size = 2 

database.TransactionLog.LogFiles.Add(dbLogFile) 

On Error Resume Next 
SqlServer.Databases.Add(database) 
If Err Then 
    wscript.echo Now & " Error creating DB (" & Err.Number & ") " & Err.Description 
End If 
On Error GoTo 0 

는 마지막 명령 ("SqlServer.Databases.Add (데이터베이스)"), 내가 포함되지 않은 오류 번호 -2147219701 ...를 얻을를 실행 모든 설명. 나는 그것이 어디에서 유래 할 수 있는지 모른다. Microsoft가 DMO를 삭제 한 것을 알고 있지만 SMO가 VBScript를 지원하지 않기 때문에 다소 선택의 여지가 없습니다.

아이디어가 있으십니까?

답변

0

오, 결국 나는 좋은 오래된 ADODB 연결을 사용했고 T-SQL의 모든 요청을했다. 이 스크립트의 경우 간단하게 :

Dim conn 
Set conn = CreateObject("ADODB.Connection") 
conn.CommandTimeout = 9999 
conn.Provider = "SQLOLEDB" 
conn.ConnectionTimeout = 10 
conn.Open "server=" & C_SQL_SERVER & ";uid=" & C_SQL_UID & ";pwd=" & C_SQL_PWD & ";database=Master" 

sql = "CREATE DATABASE " & C_DB_NAME & " " 
sql = sql & "ON (NAME = '" & C_DB_NAME & "', FILENAME = '" & C_SQLDIR & "\" & C_DB_NAME & "_Data.mdf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5MB) " 
sql = sql & "LOG ON(NAME = '" & C_DB_NAME & "Log', FILENAME = '" & C_SQLDIR & "\" & C_DB_NAME & "_Log.ldf', SIZE = 5MB, MAXSIZE = UNLIMITED, FILEGROWTH = 5MB)" 
conn.Execute sql