none
Acessar Postgre 32 bits através do SQL2008 64bist RRS feed

  • 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)
    terça-feira, 2 de fevereiro de 2010 18:29

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
    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
    terça-feira, 2 de fevereiro de 2010 18:47
    Moderador
  • 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.
    quarta-feira, 3 de fevereiro de 2010 01:22
  • 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
    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?




    quinta-feira, 4 de fevereiro de 2010 12:16
  • 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
    quinta-feira, 4 de fevereiro de 2010 13:25
    Moderador
  • 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
    quinta-feira, 4 de fevereiro de 2010 14:19