Verbindung zu MSSQL Server mit _sql.au3

  • Hallo zusammen,

    beim Versuch eine Verbindung zu einem MSSQL-Server per Windows Authentifizierung aufzubauen bekomme ich folgende Fehlermeldung:

    Hier die verwendete Funktion:

    Weiß jemand wo der Fehler liegt?

  • Hi,

    wie sieht dein Connection-String aus?

    €dit: Ich benutze folgende Funktion aus der "mssql.au3" und es funktioniert:

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ;
    ; Function Name....: _MSSQL_Con
    ; Description......: Connect to a Database
    ; Syntax...........: _MSSQL_Con($scIP, $scUser, $scPass, $scDB)
    ; Parameter(s).....: $scIP = IP adress
    ; $scUser = User
    ; $scPass = Pass
    ; $scDB = Database
    ; Return Value(s)..: Success - Returns the Database-"handle"
    ;
    ;===============================================================================
    Func _MSSQL_Con($scIP, $scUser, $scPass, $scDB)
    Local $sqlCon
    $sqlCon = ObjCreate("ADODB.Connection")
    $sqlCon.Open("Provider=SQLOLEDB; Data Source=" & $scIP & "; User ID=" & $scUser & "; Password=" & $scPass & "; database=" & $scDB & ";")
    Return $sqlCon
    EndFunc ;==>_MSSQL_Con

    [/autoit]

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

    Einmal editiert, zuletzt von x0r (12. Dezember 2012 um 10:47)

  • Hi,

    eigentlich ruf ich nur die gezeigte Funktion auf:

    [autoit]

    _SQL_Connect(-1, $sSQLServerIP, $sSQLDatabaseName, $sSQLUserName, $sSQLPassword, False)

    [/autoit]

    Da die Windows Authentifizierung benutzt wird (und werden muss), wird der Else Zweig durchlaufen, da wo ich die Zeile 222 kommentiert habe in der der Fehler auftritt.

  • Aso :)
    Bei Server hab ich schon alle Varianten versucht, die mir einfallen. IP-Adresse, Hostname und FQDN. Den Datenbanknamen hab ich einfach aus dem Management Studio kopiert und der lautet einfach nur "Altiris"
    Für Benutzernamen hab ich auch schon verschiedenes versucht User@Domain; Domain\User; User@FQDN; FQDN\User...

    Die MSSQL.au3 hab ich auch schon versucht, da konnte wohl auch die Connection nicht aufgebaut werden. Problem scheint wirklich die Windows Authentifizierung zu sein.

    Einmal editiert, zuletzt von Bitboy (12. Dezember 2012 um 12:37)

  • also hier in der Firma funktionierts. Einfach ganz normal die Einlog-Daten verwenden, ohne "Domain" oder solche Scherze.

    Füg dir mal ein Beispiel an (ist schon bestimmt 2 Jahre her, dass ich das gebaut hab :))

    Spoiler anzeigen
    [autoit]

    func sqlread()
    local $str, $plz, $ort, $vorwahl, $tel, $bl
    local $sqlCon
    local $sqlVar

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

    if GUICtrlRead($Radio1) = 1 then $select = "where Plz = " & GUICtrlRead($Input1)
    if GUICtrlRead($Radio2) = 1 then $select = "where Ort = '" & GUICtrlRead($Input1) & "'"
    if GUICtrlRead($Radio3) = 1 then $select = "where Vorwahl = " & GUICtrlRead($Input1)

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

    $sqlCon = _MSSQL_Con("DNS-des-Servers","User","Password","Datenbank")

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

    $sqlVar = $sqlCon.execute("SELECT * FROM Tabelle " & $select & " order by Plz;")

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

    ;~ $sqlVar = $sqlCon.execute("SELECT * FROM Tabelle;")

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

    With $sqlVar
    While Not .EOF
    $id = .Fields("ID").value
    $ort = .Fields("Ort").value
    $plz = .Fields("Plz").value
    $tel = .Fields("Vorwahl").value
    $bl = .Fields("BL").value

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

    while stringlen($plz) < 5
    $plz = 0 & $plz
    WEnd

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

    if StringLeft($tel,1) <> '0' Then
    $tel = 0 & $tel
    EndIf

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

    $str = $plz & chr(9)& $ort & chr(9) & $tel & chr(9) & $bl

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

    ;~ if StringLen($str) > 15 then GUICtrlSetData($output,GUICtrlRead($output) & $str & @CRLF)
    FileWrite("temp.txt",$str & @CRLF)

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

    .MoveNext
    WEnd
    EndWith
    _MSSQL_End($sqlCon)
    EndFunc

    [/autoit]

    Das war quasi mein erster MS-SQL-Abfrage-Test :)

    (über mysql gehts viel schöner find ich)

    €dit: So findest du wenigstens raus, ob die Connection überhaupt klappt - wegen der Windows Authentifizierung kannst dir danach noch Gedanken machen.

    Gruß
    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.

    Einmal editiert, zuletzt von x0r (13. Dezember 2012 um 08:29)