2017-02-21 381 views
1

我一直在与这个错误作斗争两天,我找不到任何解决方案我检查了我的服务正在运行,命名管道和TCP/IP已启用。我能够使用Windows和SQL Server身份验证登录到SQL Server。当我将命令发送文本从表中选择这正在发生,连接状态是打开的,但是当我这样做:命名管道提供程序:无法打开连接到SQL Server 2016 [53]

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中的工作,但由于升级失败。

问候

+0

检查1433是否在防火墙中打开。我假设你在不同的机器上运行IIS和SQL Server。 – qxg

+0

这是在同一台机器上,我的笔记本电脑准确地将 –

+0

弄清楚,我运行我的本地网站,在我的生产 –

回答

1

IIS:

如果IIS下运行,那么你的web应用程序或虚拟目录下的应用程序池运行,并且应用程序池都有一个与之关联的IIdenity。所以只是因为〜你(mycompany \ jackm)可以到达数据库,这并不意味着运行AppPool的帐户可以。确定谁正在运行AppPool,并为该用户授予对数据库的登录和权限。

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

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

Use Master 
GO 

CREATE LOGIN [myMachineName\myLocalUser] FROM WINDOWS; 
GO 

use MyDatabase 

EXEC sp_addrolemember 'db_datareader', 'myMachineName\myLocalUser' 

GO 
+0

我在使用本地Windows域帐户连接相同的IIS配置,准确地说,连接是开放的所以它不是权限相关的。我之前有一个问题与链接服务器,所以在我修复后,我被卡住了这个错误 –

+0

我忘了说IIS/Apppool帐户已启用,因为我可以建立连接我只是想知道是否有什么要做与NTLM或Kerberos身份验证 –

+0

“本地Windows域帐户”...你是在谈论一个本地用户是特定于单机?或者你的意思是某个位于AD某处的域帐号? – granadaCoder

相关问题