Usuário com melhor resposta
Acessar Postgre 32 bits através do SQL2008 64bist

Pergunta
-
Prezados,
Estou fazendo uma mgiraçao de um sistema para um novo servidor: SO Windows 2008 Server 64bits e SQL server 2008 tb 64bits.
Porem, um pequena parte desse sistema utiliza LinkedServer entre o SQL com o Postgre 8.1.
Conseguir criar o linkedserver, porem ao acessar é apresentado a msg:
OLE DB provider "MSDASQL" for linked server "PostgreSQL" returned message "[Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified".
Msg 7303, Level 16, State 1, Line 3
Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked server "PostgreSQL".
Qual seria a melhor soluçao para isso?
Desde ja agradeço.- Movido Gustavo Maia Aguiar quinta-feira, 4 de fevereiro de 2010 15:39 (De:SQL Server - Desenvolvimento Geral)
Respostas
-
Consegui!Ufa....
Em suma eu:
- instalei o driver:setup_psqlODBC_x64_8.3.4.0 - http://code.google.com/p/visionmap/wiki/psqlODBC
- Configurei um DSN System (nome PostgreSQL35W - acho que é um nome default )
- Dps usei o comando:
EXEC sp_AddLinkedServer
@server = 'PostgreSQL',
@srvproduct = 'PostgreSQL OLE DB Provider',
@provider = 'MSDASQL',
@provstr = DRIVER={PostgreSQL 64-Bit ODBC Drivers};Password=senha;Persist Security Info=True;User ID=postgres;Extended Properties="DSN=PostgreSQL35W;DATABASE=bdapi;SERVER=localhost;PORT=5432";Initial Catalog=bdapi
GO
Deve ter outras maneiras de fazer, sem criar DSN e etc... porem, essa já me atende ;)Espero que ajude a outros.
Abraço a todos.- Marcado como Resposta Adriano O M quinta-feira, 4 de fevereiro de 2010 14:19
Todas as Respostas
-
Adriano,
Acredito que esteja ocorrendo uma incompatibilidade entre os drivers do PostgreSQL que deve ser 32 bits com relação ao do SQL Server 64.
Você esta criando este linked server somente para acessar os dados?
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA -
Galvao,
Uso esse linkedserver para acessar e manipular dados.
Ex:
declare @cmd nvarchar(max)
set @cmd ='select * from, tabela' ou 'delete * from, tabela...'
EXEC (@CMD) AT [PostgreSQL]
Como contornar o problema de imcompatibildiade?
Instalando o SQL 32 bits resolveria? O Problema nao seria o Windows 64 bits?
Só em último caso que terei que desfazer desse ambiente SO e SQL 64bits.
Quais as minhas alternativas? :)
Desde ja, grato pela atenção. -
Adriano,
O galvão está certo. O SQL Server 64-bit tem restrições e não pode abrir uma conexao"Linked Server" através de um driver ODBC 32-bit. Para detalhes de solução desse problema, leia o seguinte artigo que explica como se conectar a um servidor PostgreSQL atraves de um SQL Server 64-bit:
http://www.postgresonline.com/journal/index.php?/archives/46-Setting-up-PostgreSQL-as-a-Linked-Server-in-Microsoft-SQL-Server-64-bit.html
Temos duas opções:
* Localizar drive ODBC 64-bit PostGreSQL e conctar através de 64-bit MSDASQL
* Localizar um provedor OLEDB 64-bit para PostGreSQL e conectar directamente.
Não é complicado e só encontrar o drive ODBC/OLE correto.
[]´s
SQL Server - SQLOS
http://leivio.spaces.live.com/blog/cns!A9C38548B0E679DB!236.entry
MCP | MCTS | MCITP - DBA SQL Server Sênior http://leivio.spaces.live.com/ | http://br.linkedin.com/in/leivio- Sugerido como Resposta Leivio Fontenele - www.dbaNinja.com quarta-feira, 3 de fevereiro de 2010 15:31
-
Eu instalei o Driver,
Ele ja esta disponivel no meu ODBC Data Source, porem como que faço para o SQLServer reconhecer ele?
Criei um DSN e o teste foi bem sucedido.
Porem não sei a string de conexao a utilziar para o SQLServer reconhecer e/ou configuriar esse novo drive em alguma propriedade do SQLServer.
Alguma sugestao? -
Adriano,
Na configuração do seu Linked Server, você terá que especificar o mesmo driver utilizado no ODBC mas eu não sei dizer se o SQL Server vai conseguir reconhecer este driver.
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA -
Consegui!Ufa....
Em suma eu:
- instalei o driver:setup_psqlODBC_x64_8.3.4.0 - http://code.google.com/p/visionmap/wiki/psqlODBC
- Configurei um DSN System (nome PostgreSQL35W - acho que é um nome default )
- Dps usei o comando:
EXEC sp_AddLinkedServer
@server = 'PostgreSQL',
@srvproduct = 'PostgreSQL OLE DB Provider',
@provider = 'MSDASQL',
@provstr = DRIVER={PostgreSQL 64-Bit ODBC Drivers};Password=senha;Persist Security Info=True;User ID=postgres;Extended Properties="DSN=PostgreSQL35W;DATABASE=bdapi;SERVER=localhost;PORT=5432";Initial Catalog=bdapi
GO
Deve ter outras maneiras de fazer, sem criar DSN e etc... porem, essa já me atende ;)Espero que ajude a outros.
Abraço a todos.- Marcado como Resposta Adriano O M quinta-feira, 4 de fevereiro de 2010 14:19