Próbuję połączyć się z bazą danych MSSQL 2008. Używam VBA. Poniżej zamieszczam kod:
Sub PobierzDane()
Dim connADO As ADODB.Connection
Dim recADO As ADODB.Recordset
Dim strSQL As String
Dim connStr As String
Dim BladNumer As Long
Dim BladOpis As String
connStr = "Provider=SQLOLEDB.1;" & _
"Server=***;" & _
"Uid=***;" & _
"Initial Catalog=CDNXL_Refleks_Spzoo;" & _
"Pwd=***;" & _
"Connection Timeout=1200"
strSQL = "select * from [CDN].[REFLEKS_ESKLEP_SprzedazTwr]"
Set connADO = CreateObject("ADODB.Connection")
Set recADO = CreateObject("ADODB.Recordset")
connADO.ConnectionTimeout = 600
connADO.CommandTimeout = 600
connADO.Open connStr ' --- tu pojawia się błąd: -2147217887: Wielokrokowa operacja bazy danych OLE wygenerowała błędy. Sprawdź wszystkie wartości stanu bazy danych OLE. Nie wykonano żadnego działania.
On Error GoTo ZakonczPolaczenie
recADO.Open strSQL, connADO, adOpenStatic, adLockOptimistic
ThisWorkbook.Worksheets(1).Cells(1, 1).CopyFromRecordset recADO
ZakonczPolaczenie:
BladNumer = Err.Number
BladOpis = Err.Description
connADO.Close
Set connADO = Nothing
Set recADO = Nothing
Debug.Print "Połączenie zakończone. Błąd nr " & BladNumer & ". " & BladOpis
On Error GoTo 0
End Sub
[REFLEKS_ESKLEP_SprzedazTwr] - jest widokiem
Błąd pojawia się zarówno przy użyciu ActiveX Data Objects 6.1 Library jak i ActiveX Data Objects 2.8.
Co oznacza błąd i jak z nim sobie poradzić?
Bartosz Bujanowski.