【问题标题】:Error when creating a SQL Server 2008 R2 database using VBS (SQL DMO)使用 VBS (SQL DMO) 创建 SQL Server 2008 R2 数据库时出错
【发布时间】:2013-10-11 14:05:14
【问题描述】:

我曾经使用 SQL-DMO 在 VBS 中运行脚本来创建新数据库。这是为 SQL Server 2000 完成的,但在 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(database)”)时,我得到错误号 -2147219701 ...它不包含任何描述。我不确定它来自哪里。 我知道微软放弃了 DMO,但由于 SMO 不支持 VBScript,我有点别无选择。

有什么想法吗?

【问题讨论】:

    标签: sql-server sql-server-2008 vbscript sql-server-2008-r2 sqldmo


    【解决方案1】:

    哦,好吧,最后我只是使用了一个很好的旧 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
    

    【讨论】:

      猜你喜欢
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2011-11-20
      • 1970-01-01
      • 1970-01-01
      • 2013-06-06
      相关资源
      最近更新 更多