Microsoft SQL Server 2014 Enterprise Edition을 사용하고 있습니다. 서버를 다시 시작하거나 MSSQLSERVER
서비스 를 중지해야하는 연결된 서버에서 문제가 발생합니다 . 서버가 다시 실행되면 DB2에 연결된 서버가 제대로 작동하지 않고 SQL Server에이 오류가 표시됩니다.
메시지 7302, 수준 16, 상태 1, 줄 10
연결된 서버 “Airspe”에 대한 OLE DB 공급자 “DB2OLEDB”의 인스턴스를 만들 수 없습니다.
서버를 여러 번 다시 시작한 후에 만 연결된 서버가 작동하기 시작합니다.
- 연결된 서버를 시작하기 위해 서버를 여러 번 다시 시작해야하는 이유는 무엇입니까?
- 다른 해결책이 있습니까?
다음은 링크 된 서버 중 하나를 작성하는 스크립트입니다.
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'
답변
DB2 Link에 대해 수행 된 구성에 무언가 누락 된 것으로 생각합니다.
연결 문자열은 다음과 같아야합니다.
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;
누락 된 매개 변수를 추가하면 시스템에서 자동 / 란도 매개 변수가 설정되지 않아 문제가 해결됩니다.
답변
이 문제를 배제하기 위해 연결된 서버 쿼리가 OS의 로컬 관리자 인 사용자의 컨텍스트에서 작성 또는 실행되는지 확인할 수 있습니다.
답변
문제는 아키텍처였습니다. 우리는 32 비트를 가졌다; 이제 SQL Server 2014 Enterprise 64 비트를 사용하여 시스템을 다른 서버로 마이그레이션했으며 모든 문제는 MelgoV (질문 작성자) 이상입니다.
다른 사람들이 다른 사람들을 도울 수 있도록 의견을 남겼습니다.
구성 변경을 제외하고 다시 시작해야하는 것은 정상적인 동작이 아닙니다. 코어 데이터베이스 안정성에 관심이있는 경우 처리 중 옵션을 비활성화해야합니다. 그렇지 않으면 연결된 서버 드라이버의 오류로 인해 엔진이 중단 될 수 있습니다.
네트워크를 통해 보안 자격 증명을 제공하는 방법 및 방법과 같이 작동하는 것은 사소한 일이 아니며 여러 가지 영향을 미칩니다. 당신이 그 길을 따라가는 것을 풀기 위해 하루를 보낼 것으로 예상하십시오.
문제는 Microsoft 드라이버 자체와 관련이있을 수 있습니다. 사용하여 IBM 제공 드라이버를 대신. 설치 방법은 여기를 참조하십시오 . 공급 업체가 제공 한 드라이버는 Microsoft에서 제공하는 기존 드라이버에 비해 훨씬 안정적이며 성능이 뛰어난 경우가 많습니다.