【问题标题】:connecting to native client 11 on VBA在 VBA 上连接到本机客户端 11
【发布时间】:2021-04-20 20:02:40
【问题描述】:

我有一些运行良好的 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 & "\Desktop\db\" & 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

【问题讨论】:

    标签: sql-server excel vba connection-string


    【解决方案1】:

    您可以尝试使用以下连接字符串与 Windows 身份验证进行连接:

    Provider=SQLOLEDB;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=DatabaseName;Data Source=ServerName
    

    【讨论】:

      【解决方案2】:

      SQL Server Native Client 11 Ole db 提供程序的连接字符串类似于:

      Provider=SQLNCLI11.1;Integrated Security=SSPI;Initial Catalog=DatabaseName;Data Source=ServerName\InstanceName
      

      如果 SQL Server 实例是默认实例,则仅使用服务器名称 Data Source=ServerName

      您无需再进行任何更改。也许您需要更改查询以与 SQL Server 兼容。

      【讨论】:

        猜你喜欢
        • 2015-10-15
        • 2014-11-29
        • 2023-02-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-22
        • 2015-11-19
        • 1970-01-01
        相关资源
        最近更新 更多