Проблемы с подключением к локальной SQL базе данных сервера - PullRequest
0 голосов
/ 03 марта 2020

Я пытался подключиться к локальному SQL Серверу, который я создал через Excel VBA, но у меня возникли проблемы.

Я могу подключиться к базе данных с помощью функции «Получить данные» в Excel и войти на сервер как (Local DB)\MSSQLLocalDB.

Однако, когда я пытаюсь подключиться, используя VBA, он не работает, используя Windows аутентификацию. Любые идеи?

Вот строка, которую я использовал:

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

Я получаю ошибку

Ошибка времени выполнения '2147467259 (80004005)'

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

SQL Сервер не существует или доступ запрещен.

Ответы [ 2 ]

0 голосов
/ 03 марта 2020

Попробуйте так.

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
0 голосов
/ 03 марта 2020

Вот как я это использую, проверь. ТЕСТ - это имя базы данных.

con.ConnectionString = "Provider=SQLOLEDB.1;" _
         & "Server=(local);" _
         & "Database=TEST;" _
         & "Integrated Security=SSPI;" _
         & "DataTypeCompatibility=80;"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...