通过 PHP 连接时,用户的 MS SQL Native Client 登录失败

列维

我有一个带有 IIS 7.5、MS SQL 2012 Express 的 Windows 2008 R2 数据中心服务器,使用 PHP 5.6 尝试连接到我创建的数据库 testDB,通过 Windows 身份验证,但我没有这样做。

这是我用来连接到我的 SQL Server\Instance 的 PHP:

<?php

$serverName = "nmc-intranet\intranetsql";
$connectionInfo = array("Database"=>"testDB", "UID"=>"username", "PWD"=>"password");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if ( $conn ) {
echo "Connection successful.<br />";
} else {
    echo "Connection failed.<br />";
    die( print_r( sqlsrv_errors(), true));
}

?>

当我运行它时,我收到:

连接失败。Array ( [0] => Array ( [0] => 28000 [SQLSTATE] => 28000 1 => 18456 [code] => 18456 2 => [Microsoft][SQL Server Native Client 11.0][SQL Server]登录失败对于用户“jaj”。[message] => [Microsoft][SQL Server Native Client 11.0][SQL Server]用户“jaj”登录失败。) 1 => Array ( [0] => 28000 [SQLSTATE] => 28000 1 => 18456 [code] => 18456 2 => [Microsoft][SQL Server Native Client 11.0][SQL Server]用户“jaj”登录失败。[message] => [Microsoft][SQL Server Native Client 11.0 ][SQL Server]用户“jaj”登录失败。))

在 MS SQL 中,我已将用户名添加到 Security > Logins 并映射 testDB 并提供了 dbo 架构。用户还具有 sysadmin 服务器角色。我可以SQLCMD /S nmc-intranet\intranetSQL /E /d testDB在用户名下通过 CLI 连接到 testDB 我还可以通过远程 SSMS 会话连接到 Server\Instance,因此我相信远程连接属性是正确的。我已经验证了此处找到的答案中提到的步骤

对于 IIS,我尝试了许多不同的方式来建立连接,但也没有成功。所以我一直假设我的问题在于 SQL 登录失败错误。我一直在通过 NMC-Intranet 节点和默认网站节点下的 IIS 管理器更改连接字符串,但在那里失败。我在 web.config 中的当前连接字符串是在 IIS Manger 中进行更改后默认情况下的内容,如下所示:

<connectionStrings>
    <remove name="LocalSqlServer" />
    <add connectionString="Server=nmc-intranet;Database=testDB;Integrated Security=true" name="LocalSqlServer" providerName="System.Data.SqlClient" />
</connectionStrings>

我尝试将其更改为我在此处找到的以下内容,但仍然没有成功。

<connectionStrings>
    <add connectionString="Server=.\SQLEXPRESS;Database=testDB;User ID=username;Password=password" name="LocalSqlServer" providerName="System.Data.SqlClient" />
</connectionStrings>

在 IIS DefaultAppPool 中,我也尝试将进程模型标识更改为用户名/密码。我一直在这里阅读有关 Kerberos 身份验证的信息,但是当访问 Intranet 并启用它时,它会提示用户输入用户名/密码以查看主页。

我希望我正确的问这个问题,因为发现这里以前的问题并没有很好的接受。我做了很多研究,但我不知道我可能会遗漏什么,我做了很多改变并恢复了它们,因为它们不起作用我只是希望我接下来可能需要尝试的一些方向。我很可能误解了某些东西,因为我对如何建立连接没有完整的了解,并且跳过了一个步骤或忽略了一些信息。

我在这里不是专业人士,只是试图从互联网上收集这些信息,使其发挥作用,并希望能学到一些东西。

结束游戏 我希望让用户通过 AD 登录到 Intranet,并上传文件,创建自己的帖子,创建可以通过 Intranet 管理的各种目录,可能有一个 IM(?),实际上只是学习经验。

谢谢你。

若罗夫

解决方案:

如果要使用 Windows 身份验证连接到 SQL Server,请删除UIDPWD连接选项。当您使用这些选项时,PHP 驱动程序会尝试使用 SQL Server 身份验证进行连接(我猜这jaj是 的值UID)。

<?php
$serverName = "nmc-intranet\intranetsql";
$connectionInfo = array(
    "Database"=>"testDB"
);
$conn = sqlsrv_connect($serverName, $connectionInfo);

if ($conn === false) {
    echo "Connection failed.<br />";
    die( print_r( sqlsrv_errors(), true));
} else {
    echo "Connection successful.<br />";
}
?>

说明:

Microsoft Drivers for PHP for SQL Server 可以通过使用Windows 身份验证或使用SQL Server 身份验证连接到 SQL Server 当您使用 Windows 身份验证时,Web 服务器的进程身份或线程身份(如果 Web 服务器使用模拟)用于连接到服务器,而不是最终用户的身份。我使用这个脚本来获取更多信息:

<?php
# ---------------------------------------
# SQL Server authentication
# ---------------------------------------
echo "SQL Server authentication"."</br>";
$server = 'server\instance,port';
$cinfo = array(
    "Database"=>'master',
    "UID"=>'login',
    "PWD"=>'password'
);
$conn = sqlsrv_connect($server, $cinfo);
if( $conn === false )
{
    echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
    exit;
}
$sql = 
    "SELECT 'SUSER_SNAME' AS [NAME], CONVERT(nvarchar(128), SUSER_SNAME()) AS [VALUE]".
    "UNION ALL ".
    "SELECT 'SUSER_NAME' AS [NAME], CONVERT(nvarchar(128), SUSER_NAME()) AS [VALUE]".
    "UNION ALL ".
    "SELECT 'USER_NAME' AS [NAME], CONVERT(nvarchar(128), USER_NAME()) AS [VALUE]".
    "UNION ALL ".
    "SELECT 'USER_ID' AS [NAME], CONVERT(nvarchar(128), USER_ID()) AS [VALUE]";
$stmt = sqlsrv_query($conn, $sql);
if( $stmt === false ) {
    echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true);
    exit;
}
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    echo $row['NAME'].": ".$row['VALUE']."</br>";
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);


# ---------------------------------------
# Windows authentication
# ---------------------------------------
echo "Windows authentication"."</br>";
$server = 'server\instance,port';
$cinfo = array(
    "Database"=>'master'
);
$conn = sqlsrv_connect($server, $cinfo);
if( $conn === false )
{
    echo "Error (sqlsrv_connect): ".print_r(sqlsrv_errors(), true);
    exit;
}
$sql = 
    "SELECT 'SUSER_SNAME' AS [NAME], CONVERT(nvarchar(128), SUSER_SNAME()) AS [VALUE]".
    "UNION ALL ".
    "SELECT 'SUSER_NAME' AS [NAME], CONVERT(nvarchar(128), SUSER_NAME()) AS [VALUE]".
    "UNION ALL ".
    "SELECT 'USER_NAME' AS [NAME], CONVERT(nvarchar(128), USER_NAME()) AS [VALUE]".
    "UNION ALL ".
    "SELECT 'USER_ID' AS [NAME], CONVERT(nvarchar(128), USER_ID()) AS [VALUE]";
$stmt = sqlsrv_query($conn, $sql);
if( $stmt === false ) {
    echo "Error (sqlsrv_query): ".print_r(sqlsrv_errors(), true);
    exit;
}
while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    echo $row['NAME'].": ".$row['VALUE']."</br>";
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Python连接到SQL Server时,用户“”登录失败

来自分类Dev

用户sql登录失败

来自分类Dev

通过ODBC Driver 17(而不是SQL Server Native Client)将FireDAC连接到SQL Server

来自分类Dev

SQL Server用户的用户登录失败

来自分类Dev

如何通过android中的php sql登录?

来自分类Dev

使用MacOS终端连接到SQL Server时登录失败

来自分类Dev

将PHP连接到MS SQL Server

来自分类Dev

PHP使用SSL连接到MS SQL

来自分类Dev

将PHP连接到MS SQL Server

来自分类Dev

PHP与MS SQL Server 2012的连接

来自分类Dev

当返回查询不为空时,来自php的MS SQL Server过程失败,并显示500

来自分类Dev

MS SQL查询在PHP中失败,但在MS SQL Server Management Studio中未失败

来自分类Dev

SQL Server Azure“用户登录失败”

来自分类Dev

从Excel导出到SQL:用户登录失败

来自分类Dev

SQL异常-用户“ UserName $”的登录失败

来自分类Dev

SQL Server Azure“用户登录失败”

来自分类Dev

从Excel导出到SQL:用户登录失败

来自分类Dev

MySQL查询在PHP中失败,但通过MYSQL Client成功

来自分类Dev

如何通过RODBC从SUSE linux连接到MS SQL Server

来自分类Dev

无法通过Java类连接MS SQL Server

来自分类Dev

通过Access连接到SQL Server后端的MS Access?

来自分类Dev

通过 R DBI 包连接到 MS SQL Server 的问题

来自分类Dev

无法通过用于SQL Server和SQL Native Client的ODBC驱动程序11连接到Azure数据库

来自分类Dev

SQL Server登录错误:用户“ NT AUTHORITY \ SYSTEM”的登录失败

来自分类Dev

无法创建SQL Server Express登录-用户登录失败

来自分类Dev

登录失败时重定向PHP

来自分类Dev

PHP / PDO-如何通过PHP和PDO更改登录用户的密码并刷新连接句柄?

来自分类Dev

通过VPN托管的SQL Server的连接失败

来自分类Dev

通过VPN托管的SQL Server的连接失败

Related 相关文章

  1. 1

    使用Python连接到SQL Server时,用户“”登录失败

  2. 2

    用户sql登录失败

  3. 3

    通过ODBC Driver 17(而不是SQL Server Native Client)将FireDAC连接到SQL Server

  4. 4

    SQL Server用户的用户登录失败

  5. 5

    如何通过android中的php sql登录?

  6. 6

    使用MacOS终端连接到SQL Server时登录失败

  7. 7

    将PHP连接到MS SQL Server

  8. 8

    PHP使用SSL连接到MS SQL

  9. 9

    将PHP连接到MS SQL Server

  10. 10

    PHP与MS SQL Server 2012的连接

  11. 11

    当返回查询不为空时,来自php的MS SQL Server过程失败,并显示500

  12. 12

    MS SQL查询在PHP中失败,但在MS SQL Server Management Studio中未失败

  13. 13

    SQL Server Azure“用户登录失败”

  14. 14

    从Excel导出到SQL:用户登录失败

  15. 15

    SQL异常-用户“ UserName $”的登录失败

  16. 16

    SQL Server Azure“用户登录失败”

  17. 17

    从Excel导出到SQL:用户登录失败

  18. 18

    MySQL查询在PHP中失败,但通过MYSQL Client成功

  19. 19

    如何通过RODBC从SUSE linux连接到MS SQL Server

  20. 20

    无法通过Java类连接MS SQL Server

  21. 21

    通过Access连接到SQL Server后端的MS Access?

  22. 22

    通过 R DBI 包连接到 MS SQL Server 的问题

  23. 23

    无法通过用于SQL Server和SQL Native Client的ODBC驱动程序11连接到Azure数据库

  24. 24

    SQL Server登录错误:用户“ NT AUTHORITY \ SYSTEM”的登录失败

  25. 25

    无法创建SQL Server Express登录-用户登录失败

  26. 26

    登录失败时重定向PHP

  27. 27

    PHP / PDO-如何通过PHP和PDO更改登录用户的密码并刷新连接句柄?

  28. 28

    通过VPN托管的SQL Server的连接失败

  29. 29

    通过VPN托管的SQL Server的连接失败

热门标签

归档