Verbindungsserver zu Postgre SQL

Nordfreund

Neuer Benutzer
Beiträge
3
Hallo,



ich stehe vor dem Problem, dass ich mit einem MS SQL Server 2008 R2 eine Postgre SQL Datenbank abfragen muß, die aber auf einem Server in Brasilien läuft.



Ich habe auf dem MSSQL Server sowohl OLEDB als auch ODBC Treiber für Postgre installiert. Testweise habe ich per Excel eine Verbindung (OleDB) erstellt und konnte Daten abrufen. Firewalleinstellungen sind also kein Problem.



Wenn ich jetzt einen Verbindungsserver einrichten will, versucht er immer eine Verbindung über den Standardport 5432 aufzubauen. Ich muß aber unbedingt den Port 5504 benutzen. Ich finde keine Möglichkeit, den Port an irgendeiner Stelle zu verändern...



Für sachdienliche Hinweise ist zwar keine Belohnung ausgesetzt, aber mein Dank wird Euch ewig nachschleichen
wink.gif




Oliver
 
Werbung:
Wenn ich jetzt einen Verbindungsserver einrichten will, versucht er immer eine Verbindung über den Standardport 5432 aufzubauen. Ich muß aber unbedingt den Port 5504 benutzen. Ich finde keine Möglichkeit, den Port an irgendeiner Stelle zu verändern...



Für sachdienliche Hinweise ist zwar keine Belohnung ausgesetzt, aber mein Dank wird Euch ewig nachschleichen
wink.gif




Oliver

Mit M$SQL hab ich keinen Plan (mit PG schon eher...), aber via Google fand ich:

http://stackoverflow.com/questions/17999235/sql-server-2012-add-a-linked-server-to-postgresql

Code:
@provstr=N'Driver=PostgreSQL Unicode(x64);uid=postgres;Server=test1;database=accueil;pwd=MyPassword;SSLmode=disable;PORT=5432'

Die Stelle mit dem Port siehst Du?
 
Mit M$SQL hab ich keinen Plan (mit PG schon eher...), aber via Google fand ich:

http://stackoverflow.com/questions/17999235/sql-server-2012-add-a-linked-server-to-postgresql

Code:
@provstr=N'Driver=PostgreSQL Unicode(x64);uid=postgres;Server=test1;database=accueil;pwd=MyPassword;SSLmode=disable;PORT=5432'

Die Stelle mit dem Port siehst Du?

Danke für den Hinweis, er bringt mich leider nicht weiter, da ich in ähnliche Probleme wie der Autor laufe... Hier mal meine Befehle:

exec sp_addlinkedserver
@server=N'DMGdoBrasil',
@srvproduct=N'PostgreSQL Unicode(x64)',
@provider=N'SQLOLEDBPGNP',
@provstr=N'PostgreSQL Unicode(x64);uid=postgres;database=DBSTERNGOLD;pwd=MaPWD;SSLmode=disable;PORT=5504'

EXEC master.dbo.sp_addlinkedsrvlogin
@rmtsrvname=N'DMGdoBrasil',
@useself=N'True',
@locallogin=NULL,
@rmtuser=NULL,
@rmtpassword=NULL

Der LinkedServer wird erstellt, aber beim Verbindungstest erhalte ich folgenden Fehler:


Fehler bei der Testverbindung mit dem Verbindungsserver.
ZUSÄTZLICHE INFORMATIONEN:
Ausnahme beim Ausführen einer Transact-SQL-Anweisung oder eines Transact-SQL-Batches. (Microsoft.SqlServer.ConnectionInfo)

Das Datenquellenobjekt des OLE DB-Anbieters 'SQLOLEDBPGNP' für den Verbindungsserver 'DMGdoBrasil' kann nicht initialisiert werden.
Der OLE DB-Anbieter 'SQLOLEDBPGNP' für den Verbindungsserver 'DMGdoBrasil' hat die Meldung 'Cannot open DB connection.' zurückgeben.
Der OLE DB-Anbieter 'SQLOLEDBPGNP' für den Verbindungsserver 'DMGdoBrasil' hat die Meldung 'could not connect to server: Connection refused (0x0000274D/10061)
Is the server running on host "" and accepting
TCP/IP connections on port 5504?


Er erkennt offensichtlich nicht den Namen des Remote Servers. Den Port hat er ja dank Deines Tips richtig erkannt ...
 
Aber es hat mich auf die richtige Spur gebracht... Mit folgender Syntax hat es jetzt funktioniert:

exec sp_addlinkedserver
@server=N'DMGdoBrasil',
@srvproduct=N'PostgreSQL Unicode(x64)',
@provider=N'PGNP',
@provstr=N'PostgreSQL Unicode(x64);server=Internetadresse;uid=postgres;database=DBSTERNGOLD;pwd=MyPWD;SSLmode=disable;PORT=5504',
@catalog='DBSTERNGOLD',
@datasrc=N'Internetadresse'


Ich musste dann nur noch in den Eigenschaften des Linked Servers einstellen, dass er immer im Kontext des Remoteusers "postgres" läuft, inkl. richtigem Passwort...

Auf jeden Fall Danke !
 
Werbung:
Zurück
Oben