Erstellen von ODBC DSN inklusive User und Passwort Angabe
Muß eine System DSN mit User / Passwort Angabe erzeugen und es klappt nicht. Ziel Datenbank auf MS SQL Server 2000. Client: Win XP
Es ist soweit, ich muß auch mal ein Frage stellen:
Ich brauche eine ODBC System DSN inklusive Angabe von Username / Passwort. Das Programm welches das benötigt stammt nicht von mir, daher muß User/Passwort angegeben werden.
Manuell über den ODBC Administrator ist es möglich.
Ich habe schon folgendes versucht:
1. Direktes Schreiben der Einträge in die Registry HKLMSoftwareODBCODBC.INI, geht für Trusted_Connection, aber ich kriege damit keine User/Passwörter rein.
Habe auch den Beitrag Datenquelle (ODBC) für SQL-Server per BAtch eintragen Datenquelle (ODBC) für SQL-Server per BAtch eintragen gelesen, funktioniert aber nicht (vermutlich mag der SQL 2000 Treiber keine Passwörter in der Registry)
2. Mittels ODBCCONF.EXE
Trusted Connection tut mal wieder:
odbcconf /A {CONFIGSYSDSN "SQL Server" "DSN=TEST|Server=Server1|Database=UserTemp|Description=Test|Trusted_Connection=yes"}
Der Versuch User/Passwort mitzugeben scheitert mit Ungültige SchlüsselwortWerte Paare:
odbcconf /A {CONFIGSYSDSN "SQL Server" "DSN=TEST|Server=Server1|Database=UserTemp|Description=Test|Trusted_Connection=no|UID=Test|pwd=Test"}
3. Über die ODBC API:
Trusted_Connection tut auch hier, aber User/Passwort mal wieder nicht.
Ich habe auch schon statt UID/PWD (obwohl die stimmen müssten, beim Connection String bei einer DSN losen Verbindung heißt es so), Login, UserID, User, Password etc. in allen möglichen Kombinationen verwenden, es ändert nichts.
Prinzipiell muß es aber über die API doch gehen, schließlich nimmt der ODBC Admin doch auch die API, oder nicht?
Alternativ, wenn mir jemand sagt, wie ich bei einer Trusted Connection es hinbekomme, daß für den SQL Server es so aussieht als ob der Zugriff von User Test kommt würde das auch helfen.
Einfach einen neuen DB Benutzer hinzufügen mit DB Namen Test geht aber nicht, weil es gibt ja schon einen User Test. Und den vorhandenen kann ich nicht löschen, weil er Besitzer von zig Tabellen etc. ist.
Gruß,
Andreas
Nachtrag: Ich habe es auf gelöst gesetzt, nicht weil ich es hinbekommen hätte, aber weil ich die Software soweit bekommen habe, selber User und Passwort mitzugeben.
Es ist soweit, ich muß auch mal ein Frage stellen:
Ich brauche eine ODBC System DSN inklusive Angabe von Username / Passwort. Das Programm welches das benötigt stammt nicht von mir, daher muß User/Passwort angegeben werden.
Manuell über den ODBC Administrator ist es möglich.
Ich habe schon folgendes versucht:
1. Direktes Schreiben der Einträge in die Registry HKLMSoftwareODBCODBC.INI, geht für Trusted_Connection, aber ich kriege damit keine User/Passwörter rein.
Habe auch den Beitrag Datenquelle (ODBC) für SQL-Server per BAtch eintragen Datenquelle (ODBC) für SQL-Server per BAtch eintragen gelesen, funktioniert aber nicht (vermutlich mag der SQL 2000 Treiber keine Passwörter in der Registry)
2. Mittels ODBCCONF.EXE
Trusted Connection tut mal wieder:
odbcconf /A {CONFIGSYSDSN "SQL Server" "DSN=TEST|Server=Server1|Database=UserTemp|Description=Test|Trusted_Connection=yes"}
Der Versuch User/Passwort mitzugeben scheitert mit Ungültige SchlüsselwortWerte Paare:
odbcconf /A {CONFIGSYSDSN "SQL Server" "DSN=TEST|Server=Server1|Database=UserTemp|Description=Test|Trusted_Connection=no|UID=Test|pwd=Test"}
3. Über die ODBC API:
Option Explicit
'Constant Declaration
Private Const ODBC_ADD_DSN = 1 ' Add data source
Private Const ODBC_ADD_SYS_DSN = 4 ' Add system data source
Private Const ODBC_CONFIG_DSN = 2 ' Configure (edit) data source
Private Const ODBC_REMOVE_DSN = 3 ' Remove data source
Private Const vbAPINull As Long = 0& ' NULL Pointer
'Function Declare
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" _
(ByVal hwndParent As Long, ByVal fRequest As Long, _
ByVal lpszDriver As String, ByVal lpszAttributes As String) _
As Long
Private Sub Command1_Click()
Dim intRet As Long
Dim strDriver As String
Dim strAttributes As String
'Set the driver to SQL Server because it is most common.
strDriver = "SQL Server"
'Set the attributes delimited by null.
'See driver documentation for a complete
'list of supported attributes.
strAttributes = "SERVER=Server1" & Chr$(0)
strAttributes = strAttributes & "DESCRIPTION=TEST Datenbank" & Chr$(0)
strAttributes = strAttributes & "DSN=TestDB" & Chr$(0)
strAttributes = strAttributes & "DATABASE=UserTemp" & Chr$(0)
strAttributes = strAttributes & "Trusted_Connection=no" & Chr$(0)
strAttributes = strAttributes & "UID=Test" & Chr$(0)
strAttributes = strAttributes & "PWD=Test" & Chr$(0)
'To show dialog, use Form1.Hwnd instead of vbAPINull.
intRet = SQLConfigDataSource(vbAPINull, ODBC_ADD_SYS_DSN, _
strDriver, strAttributes)
If intRet Then
MsgBox "DSN Created"
Else
MsgBox "Create Failed"
End If
End Sub
Ich habe auch schon statt UID/PWD (obwohl die stimmen müssten, beim Connection String bei einer DSN losen Verbindung heißt es so), Login, UserID, User, Password etc. in allen möglichen Kombinationen verwenden, es ändert nichts.
Prinzipiell muß es aber über die API doch gehen, schließlich nimmt der ODBC Admin doch auch die API, oder nicht?
Alternativ, wenn mir jemand sagt, wie ich bei einer Trusted Connection es hinbekomme, daß für den SQL Server es so aussieht als ob der Zugriff von User Test kommt würde das auch helfen.
Einfach einen neuen DB Benutzer hinzufügen mit DB Namen Test geht aber nicht, weil es gibt ja schon einen User Test. Und den vorhandenen kann ich nicht löschen, weil er Besitzer von zig Tabellen etc. ist.
Gruß,
Andreas
Nachtrag: Ich habe es auf gelöst gesetzt, nicht weil ich es hinbekommen hätte, aber weil ich die Software soweit bekommen habe, selber User und Passwort mitzugeben.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 63877
Url: https://administrator.de/contentid/63877
Ausgedruckt am: 21.11.2024 um 22:11 Uhr