2009-04-28 7 views
0

Я пытаюсь подключиться к SQL Server 2008 (не выразить) с помощью PHP 5.2.9-2 в Windows XP sp2. Я могу подключиться к удаленному SQL Server отлично от SQL Server Management Studio с той же машины.Подключиться к SQL Server 2008 с PDO

Моя первая попытка была такова:

$conn = new PDO("mssql:host={$host};dbname={$db}", $user, $pass); 

Что дает эту ошибку:

 
PHP Fatal error: 
Uncaught exception 'PDOException' with message 
'SQLSTATE[0100] Unable to connect: SQL Server is unavailable or does not exist. 
Access denied. (severity 9)'

Вторая попытка (находится на experts-exchange)

$conn = new PDO("odbc:Driver={SQL Server Native Client 10.0};Server={$host};Database={$db};Uid={$user};Pwd={$pass}", 
         $user, $pass); 

Это работает, но я могу» t использовать PDO::lastInsertId(), что я хотел бы иметь возможность:

 Driver does not support this function: driver does not support lastInsertId()

Есть ли у вас какие-либо предложения? Любая помощь будет принята с благодарностью.

ответ

1

Я уверен, что pdo с типом сервера данных mssql требует подключения dblib. у вас установлен dblib на машине? убедитесь, что вы можете найти ntwdblib.dll где-то в пути в вашей системе. Я знаю, что это не значит, что вы получите сообщение об ошибке, но я не уверен, что верю в сообщение об ошибке.

0

That you cannot use SQL Server authentication because only Windows authentication is permitted.

Проверьте сервер running Mixed mode authentication.

Также проверьте, если this SO question поможет вам.

+0

Спасибо за это. Однако у другого вопроса не было резолюции. Он работает в смешанном режиме, потому что я могу подключиться через SQL Server Management Studio либо с помощью проверки подлинности Windows, либо с помощью входа SQL Server, который я создал для базы данных. –

1

Я обновил ntwdblib.dll, как предлагалось here, и теперь он работает.

К сожалению, я до сих пор не могу использовать PDO::lastInsertId(), потому что, по-видимому, этот драйвер также не поддерживает его, поэтому это не стоило того хлопот. Однако я могу использовать эквивалент SELECT @@IDENTITY as Id.

Смежные вопросы