SQL Server: A transport-level error has occurred when sending request.

Podczas używania aplikacji pojawia się błąd SQL Server: Msg 233, Level 20Wystąpił błąd na poziomie transportu podczas wysyłania żądania do serwera” może wystąpić, gdy program lub klient serwera SQL nie może połączyć się z usługa. Przyczyn braku połączenia może być wiele w takim przypadku SQL Server wyśle następujący komunikat:

Msg 233, Level 20, State 0, Line 0
A transport-level error has occurred when sending the request to the server. (provider: Shared Memory Provider, error: 0 - No process is on the other end of the pipe.)

Powyższy problem pojawił się nagle podczas używania aplikacji Comarch Optima ERP – aplikacja jest zainstalowana lokalnie na tej samej maszynie co serwer SQL – więc to nie problem połączenia (jeżeli tak nie jest sprawdźcie u siebie jeszcze zaporę).
Błąd pojawia się po niecałej minucie od wywołania funkcji w aplikacji Optima wiec to nie parametr timeout.

Instancja SQL jest instancja nazwana (nie ma domyślnej nazwy MSSQLSERVER), więc dla pewności sprawdziłem jak wygląda kwestia nazwanych potoków tzw Named Pipes – (obsługują komunikację pełnodupleksową przez sieć i wiele instancji serwera). Opcja była wyłączona (domyślnie dal instancji nazwanych). Za pomocą narzędzia SQL Server Configuration Manager uruchomiłem ten protokół:

Restart usługi nie przyniósł rozwiązania, postanowiłem uruchomić jeszcze Ad hoc distributed queries pozwala na dostęp do źródeł danych OLEDB bez definiowania połączonych serwerów (linked servers) przy użyciu funkcji OPENROWSET and OPENDATASOURCE. Dokumentacja opcji zawiera ostrzeżenie związane z bezpieczeństwem – załączenie opcji pozwala na dostęp do źródeł OLEDB w trybie ad hoc (bez połączonego serwera) każdemu uwierzytelnionemu użytkownikowi serwera. Z poziomu SSMS wykonałem skrypt

EXEC sp_configure 'show advanced option', '1';
RECONFIGURE;
EXEC sp_configure 'Ad Hoc Distributed Queries', 1;
RECONFIGURE;

Restart instancji i problem ustąpił. Mamy kolejne sprawdzone rozwiązanie!