Comunicação entre plataformas 64 bits e 32 Bits via Linked Servers

Recentemente estive em um cliente que devido a limitações de gerenciamento de memória na plataforma 32 bits precisou migrar para a plataforma 64 bits. Pois bem, no cenário em que ele trabalhava ele não podia migrar todas as bases de dados em SQL Server para a plataforma 64 Bits. Com isso, ficou decidido que ele faria esta migração parcial e com isso utilizaria o Linked Server para realizar a comunicação entre as bases de dados que ficariam no antigo servidor (32 bits)  e o novo servidor em (64 bits).

Toda a migração ocorreu com sucesso, mas ao utilizar o Linked Server apresentou-se o seguinte erro:

The stored procedure required to complete this operation could not be found on the server. Please contact your system administrator.
Msg 7311, Level 16, State 2, Line 1
Cannot obtain the schema rowset “Banco” for OLE DB provider “SQLNCLI” for linked server “Linked Server”. The provider supports the interface, but returns a failure code when it is used.

Me recordo que este problema já havia ocorrido comigo em outra situação, mas como não documentei não me recordava da solução (Agora tenho o blog para documentar).

Então fiz uma pesquisa na internet e encontrei o kb: http://support.microsoft.com/kb/906954/en-us que comenta a instalação do script instcat.sql, mas qual é o detalhe do problema?

Bom, pesquisando mais um pouco vi que nem era realmente necessário executar o script em questão, simplesmente o que o ocorre é que no SQL Server em 64 bits para executar comandos via Linked Server ele utiliza a seguinte StoredProcedure:

  • sp_tables_info_rowset_64

Que em um ambiente 32 bits possui o seguinte nome:

  • sp_tables_info_rowset

Então, criei esta procedure no master do ambiente em 32 bits com o seguinte código:

create procedure sp_tables_info_rowset_64 @table_name sysname, @table_schema sysname = null, @table_type nvarchar(255) = null

as

declare @Result int

select @Result = 0

exec @Result = sp_tables_info_rowset @table_name, @table_schema, @table_type

Após criar esta procedure, o Linked Server, funcionou sem problemas!!!

É isso aí galera, mais uma issue de suporte comentada, na próxima vez já posso buscar aqui no blog a solução.

[]s

Giuliano B. Cardoso

Anúncios

1 Response to “Comunicação entre plataformas 64 bits e 32 Bits via Linked Servers”


  1. 1 Eduardo Henrique Belinatti 21/06/2012 às 09:28

    Valeu, muito “top” ótima dica!


Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

w

Conectando a %s




Giuliano B. Cardoso,
Administrador de Empresas com Habilitação em Informática, atua em Tecnologia da Informação há mais de 10 anos, especialista em banco de dados SQL Server, atualmente atua como consultor em Business Intelligence e instrutor de cursos oficiais Microsoft.
Possuí as seguintes certificações: ITIL-F, MCP,MCDBA SQL 2000, MCTS SQL 2005/2008, MCITP SQL2005/2008 e MCT

Mais acessados

Anúncios

%d blogueiros gostam disto: