1

Я боролся с этой ошибкой в ​​течение двух дней, и я не могу найти какие-либо решения, которые я проверил, что мои службы запущены, именованные каналы и TCP/IP включены. Я могу войти в SQL Server с помощью Windows и 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

, чтобы все было ясно, я запускаю свой локальный сайт под той же конфигурацией IIS, что и в производстве. –

ответ

1

IIS:

Если вы работаете под IIS, то ваш веб-приложение или виртуальный каталог работает под AppPool, и что AppPool имеет IIdenity, связанный с ним. Поэтому просто потому, что ~ вы (mycompany \ jackm) можете попасть в db, это не значит, что учетная запись, использующая 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 
+0

Я подключаюсь с использованием локальной учетной записи домена Windows, а точнее, подключение открыто поэтому это не связано с разрешением. Раньше у меня была проблема со связанным сервером, поэтому после того, как я исправил, что я застрял в этой ошибке –

+0

Я забыл сказать, что учетная запись IIS/Apppool включена, поскольку я могу установить соединение. Мне просто интересно, нужно ли что-то делать с аутентификацией NTLM или Kerberos. –

+0

«Локальная учетная запись домена Windows» ... вы говорите о локальном пользователе, который относится к отдельной машине? или вы имеете в виду учетную запись домена, которая находится где-то в AD? – granadaCoder