2013-01-17 292 views
0

我的环境:
- Windows Server 2008 R2。
- Apache Webserver。
- PHP 5.4.7使用SQL Server身份验证代替Windows身份验证的PDO和SQL Server

我刚刚下载并安装了Microsoft SQL Server驱动程序3.0 for PHP。
我已将“php_pdo_sqlsrv_54_ts.dll”包含在php中。

Microsoft已经在驱动程序中包含了一个有用的chm文件(SQLSRV_Help.chm)。

在此帮助文件是有PDO例如使用Windows身份验证:

/* Connect using Windows Authentication. */ 
try { 
    $conn = new PDO("sqlsrv:server=$serverName ; Database=AdventureWorks", "", ""); 
    $conn->setAttribute(PDO::ATTR ERRMOE, PDO::ERRMODE EXCEPTION); 
} 

但我必须连接到我们的MS SQL Server 2008 R2中使用SQL Server身份验证!

有什么区别是连接到SQL Server

  1. 使用PDO和Windows身份验证
  2. 使用PDO和SQL Server身份验证

难道仅仅是连接字符串之间?我必须写:

$conn = new PDO("sqlsrv:server=$serverName; Database=AdventureWorks; UID=sa; PWD=abc"); 

还是我写的:提前

$conn = new PDO("sqlsrv:server=$serverName; Database=AdventureWorks; User Id=sa; password=abc"); 

感谢

更新:

我发现了一个resoure:

http://www.connectionstrings.com/sql-server-2008

回答

2

有些情况下,指定用户名和密码as described here构造可选的第二个和第三个参数:

PDO :: __构建

创建一个SQL Server数据库的连接。

语法PDO :: __结构($ DSN [,$用户名[,$密码 [,$ driver_options]]])

参数

$ DSN:包含前缀名称的字符串(总是sqlsrv),冒号 和Server关键字。例如“sqlsrv:server =(local)”。您可以 (可选)指定其他连接关键字。有关服务器关键字和其他连接 关键字的说明,请参阅连接选项 。整个$ dsn用引号标出,因此每个连接 关键字不应单独引用。

$ username:可选。包含用户名称的字符串。要使用SQL Server身份验证连接到 ,请指定登录ID。要使用Windows身份验证连接到 ,请指定“”。

$ password:可选。包含用户密码的字符串。要使用SQL Server身份验证连接到 ,请指定密码。要使用Windows身份验证连接到 ,请指定“”。

[...]

这意味着您可以使用PDO + SQL身份验证这样的连接到SQL Server:

$conn = new PDO(
    "sqlsrv:server=$serverName ; Database=AdventureWorks", 
    "sa", 
    "strong password" 
); 

connection options section还提到,您不能使用UIDPWD使用PDO_SQLSRV时连接字符串中的参数。

+0

谢谢萨尔曼A.第一部分有一个例子(sqlsrv:server =(local),但没有例子说明如何编写可选部分,我写“UID = sa; PWD = a”或“用户ID = sa;密码= a”? –

相关问题