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

相關問題