O problema entre linked server’s envolvendo uma instancia do SQL Server 2005 / 2008 / 2008 R2 de 64 bits para uma instância do SQL Server 2000 de 32 bits.



 Como todo DBA você já deve ter ouvido falar dos Linked Servers certo? Os mesmos permitem basicamente que dados externos ao SQL Server sejam manipulados. O intuito deste post é ajudar você a contornar um problema que aparece quando você tenta criar um Linked Server de uma instancia do SQL Server 2005 / 2008 / 2008 R2 de 64 bits para uma instância do SQL Server 2000 de 32 bits, neste cenário, ao executar uma consulta através do linked server, você pode receber uma mensagem de erro como esta:

Msg 7311, Level 16, State 2, Line 1
Cannot obtain the schema rowset "DBSCHEMA_TABLES_INFO" for OLEDB provider "SQLNCLI" for linked server "TESTE". The provider supports the interface, but returns a failure code when it is used.

Como resolver isso?

 A solução não é complicada, basta que você rode um script chamado INSTCAT.SQL localizado em instalações default do SQL SERVER 2000 no diretório: C:\ProgramFiles\Microsoft SQL Server\MSSQL\Install.
 
 Na prática, este problema acontece porque a atualização da instância do SQL Server 2000 para o SP3 ou SP4 não contempla a atualização das stored procedures de sistema. Antes de rodar o INSTCAT.SQL na instância do SQL Server 2000 alvo do linked server, é recomendável garantir que pelo menos o SP4 está aplicado, e fazer um backup do master. O artigo abaixo contém informações mais detalhadas:


 O script INSTCAT.SQL irá criar uma série de procedures que serão utilizadas pelos drivers ODBC’s para consulta aos catálogos de sistema, dentro dele está a criação de uma procedure chamada sp_tables_info_rowset_64, responsável por corrigir o problema que tratamos neste post.

Espero que tenham gostado e até o próximo post! =]

Nenhum comentário:

Postar um comentário