Я могу подключиться к серверу через именованные каналы с помощью sqlcmd, но инструмент поставщика получает поставщик именованных каналов, ошибка: 40

На моей рабочей станции работает служба Windows, которая является частью поставляемого поставщиком инструмента, который подключается к базе данных. Это не запустит ошибку, я получаю 4 ошибки в журнале событий со следующим внутренним исключением:

Inner Exception
---------------
Type : System.Data.SqlClient.SqlException, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
Message : A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)
Source : .Net SqlClient Data Provider
Help link : 
Errors : System.Data.SqlClient.SqlErrorCollection
Class : 20
LineNumber : 0
Number : 53
Procedure : 
Server : 
State : 0
ErrorCode : -2146232060
Data : System.Collections.ListDictionaryInternal
TargetSite : Void OnError(System.Data.SqlClient.SqlException, Boolean)
Stack Trace :    at System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at System.Data.EntityClient.EntityConnection.OpenStoreConnectionIf(Boolean openCondition, DbConnection storeConnectionToOpen, DbConnection originalConnection, String exceptionCode, String attemptedOperation, Boolean& closeStoreConnectionOnFailure)

Конечно, главное, на что следует обратить внимание (поставщик: поставщик именованных каналов, ошибка: 40 - не удалось открыть соединение с SQL Server)

Однако, если я сделаю runas /user:serviceuser cmd Я могу подключиться через именованные каналы к серверу просто отлично:

C:\Windows\system32>sqlcmd -S np:\\%%SERVER_NAME%%\pipe\sql\query
1> SELECT @@servername, db_name()
2> go




--------------------------------------------------------------------------------
------------------------------------------------ -------------------------------
--------------------------------------------------------------------------------
-----------------
SERVER_NAME
                                             master



(1 rows affected)

Какие другие шаги по устранению неполадок мне предпринять?

1 ответ

Решение

Проверьте вывод кольцевых буферов на наличие ошибок подключения, а также проверьте журнал ошибок, если вы видите сообщение об ошибке "Ошибка входа". Проверьте имя входа, которое использует инструмент, и посмотрите, сможете ли вы войти в экземпляр SQL с помощью того же имени входа. Также узнайте имя сервера, которое они предоставляют, чтобы увидеть, используют ли они псевдоним.

Другие вопросы по тегам