Jak ponownie załadować połączony serwer?

14

Używam Microsoft SQL Server 2014 Enterprise Edition. Występuje problem z połączonymi serwerami, gdzie konieczne jest zrestartowanie serwera lub zatrzymanie MSSQLSERVERusługi. Po ponownym uruchomieniu serwera połączone serwery (z bazą danych DB2) nie działają poprawnie, a program SQL Server wyświetla ten błąd:

Msg 7302, poziom 16, stan 1, wiersz 10
Nie można utworzyć instancji dostawcy OLE DB „DB2OLEDB” dla połączonego serwera „Airspe”.

Dopiero po kilkukrotnym ponownym uruchomieniu serwera serwer połączony zaczyna działać.

  1. Dlaczego konieczne jest kilkakrotne ponowne uruchomienie serwera, aby uzyskać dostęp do połączonych serwerów?
  2. Czy są inne rozwiązania?

Oto skrypt do utworzenia jednego z połączonych serwerów:

EXEC master.dbo.sp_addlinkedserver 
@server = N'AIRS', 
@srvproduct=N'Microsoft OLE DB Provider for DB2', 
@provider=N'DB2OLEDB', 
@datasrc=N'###.###.###.##',@provstr=N'Provider=DB2OLEDB;
    Data Source=#####;Persist Security Info=True;Password=**********;
    User ID=######;Initial Catalog=######;
    Network Address=###.###.###;Package Collection=AICOLDP;DBMS Platform=DB2/AS400',
@catalog=N'#####'

EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'AIRS',@useself=N'False',@locallogin=NULL,@rmtuser=N'#####',@rmtpassword='########'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'rpc', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'AIRS', @optname=N'remote proc transaction promotion', @optvalue=N'true'

Oto konfiguracja dostawcy: konfiguracja dostawcy

MelgoV
źródło

Odpowiedzi:

1

Myślę, że czegoś brakuje w konfiguracji wykonanej dla DB2 Link.

ciąg połączenia powinien wyglądać tak: Pierwszy.

Provider=DB2OLEDB; User ID=db2user; Password=mypassword; Initial Catalog=mydatabase;
Network Transport Library=TCP; Host CCSID=37;PC Code Page=1208;
Network Address=111.111.111.333; Network Port=446; Package Collection=MSDB2COL; 
Process Binary as Character=False; Connect Timeout=15; Units of Work=RUW;
DBMS Platform=DB2/AS400;Defer Prepare=False;Rowset Cache Size=0; Max Pool Size=100;
Persist Security Info=True;Connection Pooling=True;Derive Parameters=False;

Dodaj brakujące parametry, aby system nie ustawiał parametrów automatycznych / rando, które powinny rozwiązać problem.

MarmiK
źródło
0

Odpowiedź wiki społeczności :

Problemem była architektura. Mieliśmy 32 bity; przeprowadziliśmy migrację naszego systemu na inny serwer z 64-bitowym programem SQL Server 2014 Enterprise i wszystkie nasze problemy się skończyły - MelgoV (autor pytań).


Inne sugestie pozostawione w komentarzach na wypadek, gdy pomagają innym:

Ponowne uruchomienie nie jest normalnym zachowaniem, z wyjątkiem zmian konfiguracji. Powinieneś wyłączyć proces w toku rozwiązaniem, jeśli zależy Ci na stabilności bazy rdzeń - w przeciwnym razie błędów w sterowniku podłączonym serwerze może spowodować awarię silnika.

Praca nie jest trywialna i ma mnóstwo efektów domina, na przykład w jaki sposób i w jaki sposób wykorzystuje ona poświadczenia bezpieczeństwa w sieci. Spodziewaj się, że spędzisz dzień, próbując to rozplątać, jeśli pójdziesz tą ścieżką.


Problem może dotyczyć samego sterownika Microsoft. Zamiast tego użyj sterownika dostarczonego przez IBM . Instrukcje instalacji tego można znaleźć tutaj . Sterowniki dostarczane przez dostawców są często znacznie lepsze: bardziej stabilne i mają wyższą wydajność w porównaniu ze sterownikami dostarczanymi przez Microsoft.

rev użytkownik126897
źródło