keine Verbindung zum Server möglich (A2003/SQL-Server 2005)

08/11/2007 - 11:06 von Swen Snicinski | Report spam
Hallo miteinander,

folgendes Problem ist bei mir aufgetreten:

Ich versuche von Access per VBA eine ODBC-Verbindung zum SQL-Server
aufzubauen. Jedoch erscheint nach einiger Rechenzeit immer eine Fehlermeldung
die folgendermaßen aussieht:

"Microsoft SQL Server-Anmeldung:
Fehler bei der Verbindung
SQLState: '01000'
SQL Server-Fehler:53
..."

Ich habe bereits nach dieser Fehlermeldung im Netz geschaut, wo ich aber in
der Registry Änderungen vornehmen müßte. Dies kann ich hier auf Arbeit aber
nicht machen.

Mein Quellcode sieht folgendermaßen aus:

Const ODBCConnectionString As String = "ODBC;DRIVER={SQL
Server};SERVER=(SMAUG2);DATABASE=IKK_Thueringen;Trusted_Connection=Yes;"

Private m_currentdbBE As DAO.Database

Public Property Get CurrentDbBE() As DAO.Database
If m_currentdbBE Is Nothing Then
Set m_currentdbBE = DBEngine.OpenDatabase("", False, False,
ODBCConnectionString)
End If
Set CurrentDbBE = m_currentdbBE
End Property

Private Sub testODBC()
Dim strSQL As String
Dim rst As DAO.Recordset

strSQL = "SELECT Count(*) FROM User_Parametereingabe"

Set rst = CurrentDbBE.OpenRecordset(strSQL)

Debug.Print rst.Fields(0)
rst.Close
End Sub

Ich denke, dass die Werte für die ODBCConnection stimmen d.h. kein Passwort
nötig und die Server- und Datenbanknamen stimmen auch.
Wenn ich eine Tabelle per ODBC direkt verknüpfe, funktioniert das (mal
abgesehen, dass in einigen Tabellen nur #Gelöscht-Werte drin stehen. Aber das
ist ein anderes Thema denke ich).

Vielleicht könnt ihr mir da weiter helfen.

Gruß, Swen.
 

Lesen sie die antworten

#1 Stephan Wreschniok \(SWR\)
10/11/2007 - 04:24 | Warnen spam
Hallo Swen,

lass' ADODB Deinen neuen Freund sein . . . ;-)
-
Dim Con As ADODB.Connection
Dim RS As ADODB.Recordset
Dim strSQL As String

Set Con = New ADODB.Connection
Set RS = New ADODB.Recordset

' Recordset clientseitig editierbar (updatable) machen
' RS.CursorLocation = adUseClient

Con.ConnectionString = "Provider=SQLOLEDB.1;" _
& "Integrated Security=SSPI;" _
& "Initial Catalog=SLM;" _
& "Data Source=TOWER"

strSQL = "SELECT * FROM schema.tabelle WHERE ."

On Error GoTo Er
Con.Open
RS.Open strSQL, Con, adOpenKeyset, adLockOptimistic
RS.MoveFirst
Do While Not RS.EOF

Debug.Print RS(3)

RS.MoveNext
Loop

' Oder das Recordset als Datasource für ein Formular
' DoCmd.OpenForm ("MyForm")
' Set Forms!MyForm.Recordset = RS

RS.Close
Set RS = Nothing
Con.Close
Set Con = Nothing

Ex:
Exit Sub
Er:
Set RS = Nothing
Set Con = Nothing
MsgBox err.Description
Resume Ex
-
und anstatt clientseitig SQL-Statements loszuschicken, stösst man
besser Gespeicherte Prozeduren an:
RS.Open "MyStoredProcedure", Con, adOpenKeyset, adLockOptimistic
(wobei man "MyStoredProcedure" auch gleich eventuelle Parameter mit auf die
Reise geben kann)

#Gelöscht-Problem:
Die Servertabellen brauchen alle jeweils einen PrimaryKey sowie eine
Timestamp-Spalte.

Gruß
Stephan

Ähnliche fragen