命名管道提供程序:无法打开与SQL Server 2016的连接[53]

时间:2017-02-21 21:40:23

标签: sql-server asp.net-mvc-5 asp.net-core-mvc sql-server-2016

我一直在与这个错误作斗争两天,我找不到任何已经检查过我的服务正在运行的解决方案,已启用命名管道和TCP / IP。我可以使用Windows和SQL Server身份验证登录SQL Server。当我发送命令文本以从表中选择时,会发生这种情况,连接状态是打开的但是当我这样做时:

var dbCommand = CreateDbCommand(connection, commandText, null, parameters);
return dbCommand.ExecuteReader();

private static IDbCommand CreateDbCommand(IDbConnection connection, string commandText, CommandType? commandType, IEnumerable<Parameter> parameters)
{
    var command = connection.CreateCommand();
    command.CommandText = commandText;
    command.CommandType = commandType ?? CommandType.Text;

    foreach (var parameter in parameters)
    {
        var sqlParameter = command.CreateParameter();
        sqlParameter.ParameterName = parameter.Key;
        sqlParameter.Value = parameter.Value ?? DBNull.Value;
        command.Parameters.Add(sqlParameter);
    }

    return command;
}

我收到错误

return dbCommand.ExecuteReader(); 

我已经用尽了耐心,欢迎任何帮助。

我使用的是SQL Server 2016,我的网站在本地IIS下运行。

由于

PS:这曾经在SQL Server 2012中运行,但自升级以来失败。

此致

1 个答案:

答案 0 :(得分:1)

IIS:

如果您在IIS下运行,那么您的Web应用程序或虚拟目录在AppPool下运行,并且该AppPool具有与之关联的IIdenity。所以只是因为〜你(mycompany \ jackm)可以访问数据库,这并不意味着运行AppPool的帐户可以。找出谁正在运行AppPool并向该用户授予db的登录和权限。

或(快速测试),将AppPool的身份更改为您(mycompany \ jackm),然后尝试。

如果您使用的是本地用户帐户,请确保为该用户提供登录和访问数据库的权限。

Use Master
GO

CREATE LOGIN [myMachineName\myLocalUser] FROM WINDOWS;  
GO  

use MyDatabase

EXEC sp_addrolemember 'db_datareader', 'myMachineName\myLocalUser'

GO