Всегда получая "соединение не удалось", соединение sqlserver с использованием VBA - PullRequest
0 голосов
/ 30 ноября 2018

Я пытаюсь подключить sqlserver из программы VBA, для достижения этой цели я использую следующий код, но у меня возникла проблема: не удалось подключиться.Любая помощь.Заранее спасибо.

Код:

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 = "EXCEL-PC\EXCELDEVELOPER" ' Enter your server name here
Database_Name = "AdventureWorksLT2012" ' Enter your database name here
User_ID = "" ' enter your user ID here
Password = "" ' Enter your password here
SQLStr = "SELECT * FROM [SalesLT].[Customer]" ' 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
With Worksheets("sheet1").Range("a1: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

Ответы [ 2 ]

0 голосов
/ 01 декабря 2018

Я проверил ваш код, и он работает для меня.Поэтому я думаю, что это должно быть проблемой конфигурации SQL, например, разрешения или проблема с портом.Вам необходимо проверить состояние соединения с помощью клиента sqlserver и проверить связанную проблему соединения.

0 голосов
/ 30 ноября 2018

проверить это.

Sub cn()
    Dim con As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rst As New ADODB.Recordset
    Dim i As Integer

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

    con.Open


    Set cmd.ActiveConnection = con
    cmd.CommandText = "SELECT * FROM [SalesLT].[Customer]"
    Set rst = cmd.Execute
    Range("A1").CopyFromRecordset rst

    con.Close
    Set con = Nothing

End Sub
...