2016-09-09 2 views
1

Wenn meine MSSQL-Datenbank zu verbinden versucht, ich den Fehler "SQLSTATE [01002] Adaptive Server-Verbindung fehlgeschlagen (Dringlichkeitsstufe 9)"Verbindung mit SQL Server-Daten mit PHP auf ubuntu

Unten finden Sie die ich PHP-Code ‚m laufen

<?php 

    try { 
    $hostname = "hostname.database.windows.net"; 
    $port = 1433; 
    $dbname = "database-dev"; 
    $username = "dbuser"; 
    $pw = "dbpassword"; 
    $dbh = new PDO  ("dblib:host=$hostname:$port;dbname=$dbname","$username","$pw"); 
    } catch (PDOException $e) { 
    echo "Failed to get DB handle: " . $e->getMessage() . "\n"; 
    exit; 
    } 
    $stmt = $dbh->prepare("select name from master..sysdatabases where  name = db_name()"); 
    $stmt->execute(); 
    while ($row = $stmt->fetch()) { 
    print_r($row); 
    } 
    unset($dbh); unset($stmt); 
?> 

und unter meinem odbc.ini ist, odbcinst.ini und freetds.conf, du bist mein phpinfo sehen() hier ("http://wingedw.com/matiks/connect.php") wird der Fahrer auf freetds gesetzt und der gU und pdo_dlib Module wurden PHP 5 hinzugefügt, irgendwelche Hinweise, warum ich bekomme Fehler, ich bin sicher, dass die Anmeldeinformationen richtig sind.

odbc.ini

[MSSQLServer] 
Driver = FreeTDS 
Description = Any description 
Trace = No 
Server = servername 
Port = 1433 
Database = dbname 
wTDS_Verison = 7.1 

odbcinst.ini

[FreeTDS] 
Driver  = /usr/lib/i386-linux-gnu/odbc/libtdsodbc.so 
Setup   = /usr/lib/i386-linux-gnu/odbc/libtdsS.so 
UsageCount  = 1 

freetds.conf

[global] 
    # TDS protocol version 
;  tds version = 7.1 

    # Whether to write a TDSDUMP file for diagnostic purposes 
    # (setting this to /tmp is insecure on a multi-user system) 
;  dump file = /tmp/freetds.log 
;  debug flags = 0xffff 

    # Command and connection timeouts 
;  timeout = 100 
;  connect timeout = 100 

    # If you get out-of-memory errors, it may mean that your client 
    # is trying to allocate a huge buffer for a TEXT field. 
    # Try setting 'text size' to a more reasonable limit 
    text size = 64512 

# A typical Sybase server 
[egServer50] 
    host = symachine.domain.com 
    port = 5000 
    tds version = 7.1 

# A typical Microsoft server 
[MSSQLServer] 
    host = servername 
    port = 1433 
    tds version = 7.1 
+0

In Ihrer 'odbc.ini' scheinen Sie' wTDS_Verison = 7.1' anstelle von 'TDS_Verison = 7.1' zu haben. – FlipperPA

Antwort

0

alles richtig konfiguriert Es stellte sich heraus, wurde die Frage über odbc mit dblib finden Code unten.

try { 
    $hostname = "hostname.database.windows.net"; 
    $port = 1433; 
    $dbName = "databasename"; 
    $dbuser = "[email protected]"; 
    $dbpass = "password"; 
$dbh = new PDO('odbc:DRIVER=FreeTDS;SERVERNAME=mssql;DATABASE=' . $dbName, 
      $dbuser, $dbpass); 
    //echo "COnnected"; 

    } catch (PDOException $e) { 
    echo "Failed to get DB handle: " . $e->getMessage() . "\n"; 
    exit; 
}