ODBC Datenquelle (System-DSN) automatisch anlegen
Hallo zusammen,
wir müssen auf einigen Rechner (Windows 7 Enterprise, SP1, 64Bit) eine ODBC-Datenquelle (32Bit, SYSTEM-DSN) anlegen. Wir haben bereits einige Versuche hinter uns.
Leider können wir nicht den Windowsbenutzernamen verwenden, sondern einen dedizierten SQL-Benutzer. Lässt sich leider nicht ändern.
Versuch 1:
Verteilung per Gruppenrichtlinie. Leider hat dies nicht funktioniert. Auf Nachfrage beim Microsoft Support wurde uns mitgeteilt, dass dieses Problem unter Windows Server 2008R2 SP1, 64Bit bekannt sei. Leider steht noch nicht fest, ob der Fehler überhaupt gefixt wird. Hat es jemand von euch am Laufen?
Versuch 2:
Es gibt ein Tool odbcconf.exe. Dieses haben wir wie folgt aufgerufen:
.
Damit wird die Verbindung sauber angelegt. Ich habe aber keinen Parameter gefunden um Benutzername und Passwort mitzugeben.
Hier im Forum bin auf ODBC (User-DSN) Datenquelle mit Password per Script anlegen gestoßen, funktioniert aber nicht (mehr).
Unter Windows 8 bzw. Server 2012/r2 gibt es eine neue Reihe von Befehlen für ODBC. Leider nicht verfügbar für Windows 7.
Was für uns noch unklar ist, ob es per VBScript, Powershell, etc... eine Möglichkeit gibt, diese Datenquelle anzulegen? Es muss eben der Benutzer + Passwort übergeben werden.
Grüße,
Dani
wir müssen auf einigen Rechner (Windows 7 Enterprise, SP1, 64Bit) eine ODBC-Datenquelle (32Bit, SYSTEM-DSN) anlegen. Wir haben bereits einige Versuche hinter uns.
Leider können wir nicht den Windowsbenutzernamen verwenden, sondern einen dedizierten SQL-Benutzer. Lässt sich leider nicht ändern.
Versuch 1:
Verteilung per Gruppenrichtlinie. Leider hat dies nicht funktioniert. Auf Nachfrage beim Microsoft Support wurde uns mitgeteilt, dass dieses Problem unter Windows Server 2008R2 SP1, 64Bit bekannt sei. Leider steht noch nicht fest, ob der Fehler überhaupt gefixt wird. Hat es jemand von euch am Laufen?
Versuch 2:
Es gibt ein Tool odbcconf.exe. Dieses haben wir wie folgt aufgerufen:
ODBCCONF.EXE /a {CONFIGSYSDSN "SQL Server" "DSN=dsnanme|Server=dbserver|Database=datenbank"}
Damit wird die Verbindung sauber angelegt. Ich habe aber keinen Parameter gefunden um Benutzername und Passwort mitzugeben.
Hier im Forum bin auf ODBC (User-DSN) Datenquelle mit Password per Script anlegen gestoßen, funktioniert aber nicht (mehr).
Unter Windows 8 bzw. Server 2012/r2 gibt es eine neue Reihe von Befehlen für ODBC. Leider nicht verfügbar für Windows 7.
Was für uns noch unklar ist, ob es per VBScript, Powershell, etc... eine Möglichkeit gibt, diese Datenquelle anzulegen? Es muss eben der Benutzer + Passwort übergeben werden.
Grüße,
Dani
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 234590
Url: https://administrator.de/forum/odbc-datenquelle-system-dsn-automatisch-anlegen-234590.html
Ausgedruckt am: 12.04.2025 um 04:04 Uhr
10 Kommentare
Neuester Kommentar
Mahlzeit.
Uih, das ist schon ne Weile her, aber letztlich sind die System-DSNs auch nur Registry-Einträge - und genau darüber hab ich die auch angelegt, allerdings unter HKCU statt unter HKLM, aber die Pfade kannst du ja anpassen. Diese wären:
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\<softwarename>]
Installiere mal ein System manuell und schau dir dann die gemachten Einträge an. Prinzipiell sollte das funktionieren, wenn du die einfach auf allen Systemen per GPO und/oder Skript in die Registry schreibst.
Cheers,
jsysde
Uih, das ist schon ne Weile her, aber letztlich sind die System-DSNs auch nur Registry-Einträge - und genau darüber hab ich die auch angelegt, allerdings unter HKCU statt unter HKLM, aber die Pfade kannst du ja anpassen. Diese wären:
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources]
[HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\<softwarename>]
Installiere mal ein System manuell und schau dir dann die gemachten Einträge an. Prinzipiell sollte das funktionieren, wenn du die einfach auf allen Systemen per GPO und/oder Skript in die Registry schreibst.
Cheers,
jsysde
Hallo Dani,
das haben andere auch schon versucht:
Übergebe Benutzername und Kennwort im Connection-String an die Datenbank.
Schönes Wochenende ...
Grüße Uwe
das haben andere auch schon versucht:
- ODBC User DSN über Batch Datei erstellen
- http://dba.stackexchange.com/questions/2910/can-a-username-and-password ...
Übergebe Benutzername und Kennwort im Connection-String an die Datenbank.
Schönes Wochenende ...
Grüße Uwe
Zitat von @Dani:
Der Hersteller lässt dies leider nicht zu. Die Software liest einen System-DSN mit einem bestimmten Namen aus. Bei 50 Rechner
würde sagen "Okay Jungs, heute klopfen wir die Dinger rein". Aber es geht um dreistellige Rechneranzahl, das ist
schon Strafarbeit!
Der Hersteller lässt dies leider nicht zu. Die Software liest einen System-DSN mit einem bestimmten Namen aus. Bei 50 Rechner
würde sagen "Okay Jungs, heute klopfen wir die Dinger rein". Aber es geht um dreistellige Rechneranzahl, das ist
schon Strafarbeit!
Wenn du es brauchen kannst, habe den Dialog mal vor einiger Zeit mit AutoIT über die GUI automatisiert (Gilt für ein deutsches Windows 7):
#NoTrayIcon
$username = "Username"
$password = "abcde"
BlockInput(1)
RunWait("ODBCCONF.EXE /a {CONFIGSYSDSN ""SQL Server"" ""DSN=dsnname|Server=dbserver|Database=datenbank""}")
Run("odbcad32.exe")
WinWait("ODBC-Datenquellen","",10)
WinActivate("ODBC-Datenquellen")
ControlClick("ODBC-Datenquellen","","[CLASSNN:SysTabControl321]","left",1,194,31)
sleep(500)
$listindex = ControlListView("ODBC-Datenquellen","","SysListView321","FindItem","dsnname")
if $listindex <> -1 then
ControlListView("ODBC-Datenquellen","","SysListView321","Select",$listindex)
Else
msgbox(0,"","Eintrag nicht gefunden")
BlockInput(0)
exit 1
endif
ControlClick("ODBC-Datenquellen","","Button3")
$entrydlgtitle = "Microsoft SQL Server DSN Konfiguration"
WinWaitActive($entrydlgtitle)
ControlCLick($entrydlgtitle,"","Button2")
WinWaitActive($entrydlgtitle,"",3)
ControlCLick($entrydlgtitle,"","Button2")
ControlSetText($entrydlgtitle,"","Edit1",$username)
ControlSetText($entrydlgtitle,"","Edit2",$password)
;ControlCLick($entrydlgtitle,"","Button4")
ControlCLick($entrydlgtitle,"","Button6")
WinWaitActive($entrydlgtitle,"",20)
ControlCLick($entrydlgtitle,"","Button14")
WinWaitActive($entrydlgtitle,"",3)
ControlCLick($entrydlgtitle,"","Button23")
WinWaitActive("ODBC Microsoft SQL Server Setup","",3)
ControlCLick("ODBC Microsoft SQL Server Setup","","Button2")
WinWaitActive("ODBC-Datenquellen","",3)
ControlClick("ODBC-Datenquellen","","Button5")
BlockInput(0)
Zitat von @Dani:
Guten Abend Uwe,
bei der manuelle Konfiguration legst du den DSN an, gibtst Server, Benutzer und Passwort an - fertig. Dieser gilt bei uns solange,
bis jemand an der Konfiguration des DSNs etwas dreht.
stimmt muss mich da korrigieren, meine Test-VM hatte dann doch schon ne Macke, mal wieder Zeit um zum Snapshot zurückzukehren Guten Abend Uwe,
bei der manuelle Konfiguration legst du den DSN an, gibtst Server, Benutzer und Passwort an - fertig. Dieser gilt bei uns solange,
bis jemand an der Konfiguration des DSNs etwas dreht.
ja, wenn das Programm eine FileDSN nutzen würde könntet ihr das Passwort in diesem *.dsn File hinterlegen:
http://msdn.microsoft.com/en-us/library/ms710900(v=vs.85).aspx
Der Connection-String sähe dann z.B. so aus:
FILEDSN=c:\myDsnFile.dsn;
Sieht interessant aus... Danke schon mal. Wie zuverlässig war das Skript bei euch?
Von 50 Maschinen hat es keine einzige nicht geschluckt ... trotzdem vorher natürlich anpassen(Zeile 6 u. 12) und testen...Grüße Uwe
Zitat von @Dani:
Guten Abend Uwe,
> Die Option als File wäre natürlich elegant, denn somit müssten wir die Datei in das Verzeichnis "x"
kopieren und fertig. Gebe ich mal weiter...
Nach langem Nerven hat der Hersteller nachgegeben und hat die Option als File implementiert. Macht vieles einfacher...
dann hat sich das 'Nerven' ja ausgezahlt Guten Abend Uwe,
> Die Option als File wäre natürlich elegant, denn somit müssten wir die Datei in das Verzeichnis "x"
kopieren und fertig. Gebe ich mal weiter...
Nach langem Nerven hat der Hersteller nachgegeben und hat die Option als File implementiert. Macht vieles einfacher...
Schönen Abend
Grüße Uwe