Ich verwende den folgenden Code, der von meinem Autoexec-Makro ausgeführt wird, um die ODBC-Verbindung herzustellen.

'Name     :   CreateDSNConnection
'Purpose  :   Create a DSN to link tables to SQL Server
'Parameters
'     sServer: Name of SQL Server that you are linking to
'     sDatabase: Name of the SQL Server database that you are linking to
'     sUsername: Name of the SQL Server user who can connect to SQL Server, leave blank to use a Trusted Connection
'     sPassword: SQL Server user password
Public Function CreateDSNConnection(sServer As String, sDatabase As String, sUsername As String, sPassword As String) As Boolean
Dim sConnect As String
On Error GoTo CreateDSNConnection_Err

  If Len(sUsername) = 0 Then
    '//Use trusted authentication if stUsername is not supplied.
    sConnect = "Description=DBTraining" & vbCr & "SERVER=" & sServer & vbCr & "DATABASE=" & sDatabase & vbCr & "Trusted_Connection=Yes"
  Else
    sConnect = "Description=DBTraining" & vbCr & "SERVER=" & sServer & vbCr & "DATABASE=" & sDatabase
  End If

  DBEngine.RegisterDatabase "DBTraining", "SQL Server", True, sConnect

  'Add error checking.
  CreateDSNConnection = True
  Debug.Print "Connection made"
  Exit Function

CreateDSNConnection_Err:
  CreateDSNConnection = False
  MsgBox "CreateDSNConnection encountered an unexpected error: " & Err.Description, vbCritical, "Unexpected Error!"

End Function

Ziemlich normales Zeug ... aber es scheint, dass die ODBC-Verbindung immer so eingerichtet ist, dass sie Windows-Authentifizierung verwendet, und ich brauche sie, um SQL Server-Authentifizierung zu verwenden. Ich habe versucht, UID= und PWD= einzufügen, aber es wird immer noch versucht, Windows zu verwenden.

0
Rdster 23 Dez. 2015 im 21:55

3 Antworten

Beste Antwort

Was für mich letztendlich funktioniert hat, war, es von vorne zu beginnen.

  • Ich habe den vorhandenen UserDSN aus der ODBC-Verbindung ausgeblasen.
  • Dann öffnete ich meine Datenbank und führte den CreateDSNConnection-Code aus
  • Dadurch wurde der UserDSN wieder aktiviert und die SQL Server-Authentifizierung wurde verwendet, aber mein Windows-Login wurde verwendet
  • Alle verknüpften Tabellen und Ansichten wurden gelöscht
  • Die Links für Tabellen und Ansichten wurden mithilfe des generischen SQL-Anmeldekontos neu erstellt und die Option Kennwort speichern aktiviert
  • Verdichtet und repariert
  • Zum Testen an einen Benutzer gesendet ... es hat funktioniert

Ich hatte jeden dieser Schritte mehrmals versucht ... bis auf den ersten. Ich vermute, dass in der UserDSN-Datei etwas beschädigt war ??? Ich habe keine Ahnung. Durch Löschen und erneutes Starten wurde das Problem jedoch vollständig behoben.

0
Rdster 23 Dez. 2015 im 22:09

Hier ist eine vertrauenswürdige Verbindung von Access zu SQL Server:

strConnectString = "Driver={SQL Server};" & _
                   "Server=" & strDSN & ";" & _
                   "Database=" & strDatabase & ";" & _
                    "Trusted_Connection=yes"

Oder für die SQL Server-Authentifizierung:

strConnectString = "Driver={SQL Server};" & _
                   "Server=" & strDSN & ";" & _
                   "Database=" & strDatabase & ";" & _
                   "User Id=,myUID>;Password=<MyPWD>" 
1
Wayne G. Dunn 23 Dez. 2015 im 19:16
Dim CurConn As ADODB.Connection
Set CurConn = New ADODB.Connection
CurConn.Open "Provider=myProvider;" & _
             "Server=myServer;" & _
             "Database=myDatabase;" & _
             "Trusted_Connection=no;" & _
             "User Id=myUsername;" & _
             "Password=myPassword;"

So mache ich das in Access VBA.

0
gofr1 24 Dez. 2015 im 13:12