2013-03-27 5 views
1

J'essaie de me connecter à une base de données MSSQL avec PHP et je rencontre une erreur très frustrante en essayant de me connecter. Il charge pendant une minute, avant d'imprimer le message suivant:Erreur de connexion à MSSQL avec SQLSrv et PHP 5.4.7

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[08001]: 
[Microsoft][SQL Server Native Client 11.0]Named Pipes Provider: Could not open a connection to SQL Server [53]. 

Voici mon chaîne de connexion:

DB::config("sqlsrv:Server={$dbHost} ; Database={$dbName}", $dbUser, $dbPass); 

Et dans ma classe DB:

public static function config($dsn, $user, $pass) 
    { 
     self::$_pdo = @new PDO($dsn, $user, $pass); 
     ...// intentionally left out 

Je suis très déconcerté . J'ai le module suivant configuré dans mon fichier php.ini: extension = php_pdo_sqlsrv_54_ts.dll. Bien que je pense que je l'ai installé à droite et je ne reçois pas de message d'erreur sur le pilote ne fonctionne pas, ce bit de PHP imprime rien:

if (function_exists('sqlsrv_connect')) 
    echo "hey"; 

et comme vous pouvez le voir dans mon message d'erreur ci-dessus SQL Server Native Client 11 semble fonctionner. Je suis sur une plate-forme Windows. J'ai essayé de désactiver le pare-feu en vain. Je n'ai pas beaucoup d'informations sur le serveur SQL ou je le partage ici.

Ceci est ma première publication sur Stack, alors je m'excuse si je laisse de côté une information clé ou si je ne suis pas d'une certaine manière une bonne étiquette, mais toute aide est certainement appréciée.


En outre, je devrais ajouter que j'ai déjà fait trop de googling, et n'ai eu aucun succès.

+0

Le serveur SQL autorise-t-il les connexions réseau? Avec SQL Express, ils sont désactivés par défaut. –

+0

En fait, c'est quelque chose avec mon ordinateur essayant de se connecter.J'ai essayé de me connecter à un autre serveur et j'ai échoué. En outre, quelqu'un utilisant l'équivalent sqlsrv pour Mac pourrait se connecter d'accord. – ncksllvn

Répondre

6

Mon processus d'installation a effectivement fonctionné, mais la connexion était en effet invalide. J'aurais dû utiliser l'adresse IP comme nom d'hôte, ce que je n'étais pas. J'utilisais aussi un deux-points au lieu d'une virgule avant le numéro de port. Enfin, aucun espace ne peut être autorisé dans la chaîne de connexion, ce que je pensais être automatiquement retiré. Alors, voici une chaîne de connexion valide pour ceux qui peuvent se retrouver dans une situation similaire:

$connectionString="sqlsrv:Server=123.123.12.1,9864;Database=mssqldatabaseWootWoot"; 

En outre, en réponse à mes observations plus tôt sur cette fonction sqlsrv_connect, je ne l'avais pas permis au pilote nécessaire à cette fonction . Il est situé dans php_sqlsrv_54_ts.dll, qui après activation, signalé la fonction comme existant.

Merci à tous ceux qui ont mis du temps à résoudre ce problème.

1

J'ai rencontré le même problème mais j'ai trouvé que je n'avais pas besoin d'utiliser l'adresse IP, le nom du serveur fonctionnait juste. Aussi je ne savais pas quel port mon serveur utilisait, j'ai trouvé les informations ici: How to find the port for MS SQL Server 2008?

J'ai aussi trouvé les liens suivants utiles pour obtenir PDO travailler:

PHP PDO Connection to SQL Server with integrated security?

Use of PDO in classes

MS SQL Server (PDO) — Microsoft SQL Server Functions (PDO_SQLSRV)

Je sais ncksllvn résolu son problème, donc j'espère que cela aide quiconque visite!

Questions connexes