【问题标题】:Issues Connecting to Local SQL Server database连接到本地 SQL Server 数据库的问题
【发布时间】:2020-03-02 23:42:17
【问题描述】:

我一直在尝试连接到通过 Excel VBA 创建的本地 SQL Server,但遇到了问题。

我可以使用 Excel 中的“获取数据”功能连接到数据库,并在服务器中输入 (Local DB)\MSSQLLocalDB

但是,当我尝试使用 VBA 进行连接时,它无法使用 Windows 身份验证。有任何想法吗?

这是我使用的字符串:

strConnString = "Provider=SQLOLEDB;Data Source=(LocalDB)\MSSQLLocalDB;Integrated Security=SSPI"

我得到的错误是

运行时错误'2147467259 (80004005)'

[DBNETLIB][ConnectionOpen (Connect()).]

SQL Server 不存在或访问被拒绝。

【问题讨论】:

    标签: sql-server excel vba


    【解决方案1】:

    我就是这样用的,测试一下。 TEST 是数据库名称。

    con.ConnectionString = "Provider=SQLOLEDB.1;" _
             & "Server=(local);" _
             & "Database=TEST;" _
             & "Integrated Security=SSPI;" _
             & "DataTypeCompatibility=80;"
    

    【讨论】:

      【解决方案2】:

      试试这个方法。

      Sub ADOExcelSQLServer()
           ' Carl SQL Server Connection
           '
           ' FOR THIS CODE TO WORK
           ' In VBE you need to go Tools References and check Microsoft Active X Data Objects 2.x library
           '
      
          Dim Cn As ADODB.Connection
          Dim Server_Name As String
          Dim Database_Name As String
          Dim User_ID As String
          Dim Password As String
          Dim SQLStr As String
          Dim rs As ADODB.Recordset
          Set rs = New ADODB.Recordset
      
          Server_Name = "Your_Server_Name" ' Enter your server name here
          Database_Name = "NORTHWND" ' Enter your database name here
          User_ID = "" ' enter your user ID here
          Password = "" ' Enter your password here
          SQLStr = "SELECT * FROM [Customers]" ' Enter your SQL here
      
          Set Cn = New ADODB.Connection
          Cn.Open "Driver={SQL Server};Server=" & Server_Name & ";Database=" & Database_Name & _
          ";Uid=" & User_ID & ";Pwd=" & Password & ";"
      
          rs.Open SQLStr, Cn, adOpenStatic
           ' Dump to spreadsheet
          For iCols = 0 To rs.Fields.Count - 1
              Worksheets("Sheet1").Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
          Next
          With Worksheets("sheet1").Range("a2:z500") ' Enter your sheet name and range here
              '.ClearContents
              .CopyFromRecordset rs
          End With
           '            Tidy up
          rs.Close
          Set rs = Nothing
          Cn.Close
          Set Cn = Nothing
      End Sub
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-26
        • 2012-01-13
        • 1970-01-01
        • 2018-04-26
        • 2018-02-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多