我有一些工作良好的vba代码,但我现在必须从不同的数据库运行此代码的数据。新的数据库驱动程序是SQL Server Native Client 11。我怀疑连接字符串有问题,因为它是一个不同的驱动程序。如果我只是替换"provider="{SQL Server Native Client 11.0}或者是否需要声明所有的新变量,等等…
Private Sub sqlQueryScript()
On Error GoTo CleanUp
'Declare variables'
Dim user As String
Dim conn As Object
Dim rs As Object
Dim strSql As String
Set conn = CreateObject("ADODB.Connection")
'Open receipt connection'
user = Environ("username")
conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:Users" & user & "Desktopdb" & dbName
conn.Open
'Set and Excecute SQL Command'
strSql = query
'Open Recordset'
Set rs = conn.Execute(strSql)
rs.Close
rs.Open strSql
'Copy Data to Excel'
Set data = Workbooks(fName).Sheets(fac)
data.Range("A2").CopyFromRecordset rs
'Copy Header to Excel
For i = 0 To rs.Fields.Count - 1
data.Cells(1, i + 1).Value = rs.Fields(i).Name
Next i
CleanUp:
'Close Connection'
conn.Close
End Sub
您可以尝试使用以下连接字符串连接Windows身份验证:
Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DatabaseName;Data Source=ServerName
SQL Server Native Client 11 Ole db provider的连接字符串如下:
Provider=SQLNCLI11.1;Integrated Security=SSPI;Initial Catalog=DatabaseName;Data Source=ServerNameInstanceName
如果SQL Server实例是默认实例,则只使用服务器名称Data Source=ServerName
你不需要再改变任何东西了。也许你需要更改查询以与SQL Server兼容。