wie ODBC-Datenquelle (System-DSN) nutzen

  • Hallo zusammen,

    zu ODBC habe ich mal ein paar Fragen.

    Wie kann ich eine eingetragene System-DSN -Verbindung zu einem SQL-Server nutzen (s.Bild)?
    Wie komme ich an den Connectionstring, oder brauche ich den nicht weil ich zB. OPEN(MeineVerbindung) machen kann?
    Oder muss ich die registry auslesen und mir den Connectionstring selber zusammen bauen oder wie macht man das?

    Vielen Dank für eure Hilfe.
    Gruß Schumi

  • Hi,
    habe zwar keinen SQL-Server im momentanen Zugriff, aber ggf helfen dir folgende Scripte weiter.
    Übrigens wurden die Scripte automatisch erstellt von "AutoIt Scriptomatic Tool" (das erstellt zum Thema ODBC noch mehr )

    Spoiler anzeigen
    [autoit]

    ; Generated by AutoIt Scriptomatic

    [/autoit] [autoit][/autoit] [autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ODBCAttribute", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "Attribute: " & $objItem.Attribute & @CRLF
    $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    $Output = $Output & "Description: " & $objItem.Description & @CRLF
    $Output = $Output & "Driver: " & $objItem.Driver & @CRLF
    $Output = $Output & "SettingID: " & $objItem.SettingID & @CRLF
    $Output = $Output & "Value: " & $objItem.Value & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ODBCAttribute" )
    Endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
    Spoiler anzeigen
    [autoit]

    ; Generated by AutoIt Scriptomatic

    [/autoit] [autoit][/autoit] [autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ODBCDataSourceAttribute", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "Check: " & $objItem.Check & @CRLF
    $Output = $Output & "Setting: " & $objItem.Setting & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ODBCDataSourceAttribute" )
    Endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
    Spoiler anzeigen
    [autoit]

    ; Generated by AutoIt Scriptomatic

    [/autoit] [autoit][/autoit] [autoit]

    $wbemFlagReturnImmediately = 0x10
    $wbemFlagForwardOnly = 0x20
    $colItems = ""
    $strComputer = "localhost"

    [/autoit] [autoit][/autoit] [autoit]

    $Output=""
    $Output = $Output & "Computer: " & $strComputer & @CRLF
    $Output = $Output & "==========================================" & @CRLF
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\CIMV2")
    $colItems = $objWMIService.ExecQuery("SELECT * FROM Win32_ODBCDataSourceSpecification", "WQL", _
    $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

    [/autoit] [autoit][/autoit] [autoit]

    If IsObj($colItems) then
    For $objItem In $colItems
    $Output = $Output & "Caption: " & $objItem.Caption & @CRLF
    $Output = $Output & "CheckID: " & $objItem.CheckID & @CRLF
    $Output = $Output & "CheckMode: " & $objItem.CheckMode & @CRLF
    $Output = $Output & "DataSource: " & $objItem.DataSource & @CRLF
    $Output = $Output & "Description: " & $objItem.Description & @CRLF
    $Output = $Output & "DriverDescription: " & $objItem.DriverDescription & @CRLF
    $Output = $Output & "Name: " & $objItem.Name & @CRLF
    $Output = $Output & "Registration: " & $objItem.Registration & @CRLF
    $Output = $Output & "SoftwareElementID: " & $objItem.SoftwareElementID & @CRLF
    $Output = $Output & "SoftwareElementState: " & $objItem.SoftwareElementState & @CRLF
    $Output = $Output & "TargetOperatingSystem: " & $objItem.TargetOperatingSystem & @CRLF
    $Output = $Output & "Version: " & $objItem.Version & @CRLF
    if Msgbox(1,"WMI Output",$Output) = 2 then ExitLoop
    $Output=""
    Next
    Else
    Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "Win32_ODBCDataSourceSpecification" )
    Endif

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]
  • Hallo Andy,
    so richtig hat dein Tipp bei mir nicht funktioniert.

    Dafür konnte ich das hier testen und das funktioniert.

    [autoit]


    $sqlCon = ObjCreate("ADODB.Connection")
    $sqlCon.Open ("DSN=MeineVerbindung;Uid=sa;Pwd=xxx") ; mit User und PW

    [/autoit][autoit][/autoit][autoit]

    ; oder (ungetestet)
    ; $sqlCon.Open ("DSN=MeineVerbindung") ; mit NT Authentifizierung

    [/autoit][autoit][/autoit][autoit][/autoit]

    Danke für den Versuch.
    Gruß Schumi