Sql server 使用VBA Excel在SQL Server中创建数据库(仅一次)

Sql server 使用VBA Excel在SQL Server中创建数据库(仅一次),sql-server,database,excel,vba,Sql Server,Database,Excel,Vba,我想在第一次运行代码时使用VBA(Excel)在SQL server中创建一个数据库。因此,第二次运行代码时,数据库将存在,而不会创建另一个数据库。@abarisone `公共子CreateDBTable() 端接头 ` 此行中有一个错误: Catalog.createdbconnectstr 错误:不支持此类接口这不是很复杂。首先确保您引用的是适当的ADO库 然后,您必须使用某些构建块:首先创建连接对象(带有连接字符串),然后创建命令对象,最后但并非最不重要的是在连接对象上使用命令的Execu

我想在第一次运行代码时使用VBA(Excel)在SQL server中创建一个数据库。因此,第二次运行代码时,数据库将存在,而不会创建另一个数据库。

@abarisone

`公共子CreateDBTable()

端接头 `

此行中有一个错误: Catalog.createdbconnectstr


错误:不支持此类接口

这不是很复杂。首先确保您引用的是适当的ADO库

然后,您必须使用某些构建块:首先创建连接对象(带有连接字符串),然后创建命令对象,最后但并非最不重要的是在连接对象上使用命令的ExecuteOnQuery方法。它执行名称所说的:执行SQL命令,而不将记录集作为返回对象。请参见中的示例

我以前没有尝试过,但要做到这一点而不出错,如果在MS SQL Server上工作,您可能必须将连接字符串设置为名为“Master”的系统数据库

当然,您必须执行的SQL命令是(1)、(2)和表(如果不是)

然后可以创建到数据库的“普通”连接对象


警告:为了能够创建数据库,VBA脚本中定义的技术用户必须具有较高的(系统管理员)权限,即使您保护excel,这肯定是一个巨大的风险。如果不是沙箱环境,就不要这样做

你能告诉我你试过什么吗?也许最好是修改你原来的问题?等一下。您是想像最初的问题一样只创建表还是创建整个数据库?@laszloteki谢谢!我正在尝试创建数据库和一个表。
Dim dbConnectStr As String
Dim Catalog As Object
Dim cnt As ADODB.Connection
Dim dbName As String
Dim tblName As String, ServerName As String, UserID As String, pw As String

tblName = shControl.Range("B5") 'Table Name
ServerName = "SERVICESWS15"                 'Enter Server Name or IP
dbName = shControl.Range("B4") 'Enter Database Name
UserID = ""                     'Leave blank for Windows Authentification
pw = ""                   'Leave blank for Windows Authentification

dbConnectStr = "Provider=SQLOLEDB;Data Source=" & ServerName & ";Initial Catalog=" & dbName & ";User Id=" & UserID & ";Password=" & pw & ";"

Set Catalog = CreateObject("ADOX.Catalog")
Catalog.Create dbConnectStr
Set Catalog = Nothing

Set cnt = New ADODB.Connection
With cnt
    .Open dbConnectStr
    .Execute "CREATE TABLE " & tblName & " (KEY nvarchar(100) NOT NULL, " & _
             "Date nvarchar(100) NOT NULL, " & _
             "PRIMARY KEY (KEY));"
End With
Set cnt = Nothing