Na temat połączenia MS SQL Server -> PostgreSQL znalazłem jeszcze trzy linki. Możesz je sobie przejrzeć:
http://www.postgresonline.com/journal/a … 4-bit.html
http://www.postgresonline.com/journal/a … -Data.html
http://www.postgresonline.com/journal/a … -woes.html
W tych linkach korzystali ze sterowników ODBC z tej strony http://www.postgresql.org/ftp/odbc/versions/msi/.
Teraz odnośnie Twoich pytań …
Ja na PostgreSQL się nie znam. Udzieliłem Ci wcześniej odpowiedzi, bo początkowo chciałeś przesyłać dane z PostgreSQL do MS SQL Server, a to da się prosto rozwiązać właśnie dzięki użyciu tzw. linked servers (nie wiem jak to się tłumaczy na polski - serwery połączone?). No ale poszperałem trochę w sieci i generalnie PostgreSQL nie pozwala na wykonywanie zapytań na innych serwerach niż lokalny. Choć da się to obejść, dzięki DbLink http://www.postgresonline.com/journal/a … rvers.html. Sęk w tym, że z tego linku wynika, że to działa tylko jeśli zdalny serwer to PostgreSQL (choć mogłem czegoś nie doczytać). W tym temacie http://stackoverflow.com/questions/4632 … h-postgres ktoś sugerował, że jest możliwe wykonywanie zapytań na MS SQL Server przy użyciu jakiegoś osobnego sterownika ODBC. Możesz sobie ten link też przejrzeć.
W każdym bądź razie … jeśli masz już ustanowione połączenie MS SQL Server -> PostgreSQL to przecież insert-y, update-y, delete-y w PostgreSQL możesz wykonywać przy użyciu tego połączenia. Możliwe, że napotkasz jakieś problemy, ale generalnie ja bym zaczął od tego rozwiązania.
http://www.postgresql.org/docs/8.3/inte … AX-STRINGS
Jeśli miałoby to być na DataSet-ach to będziesz musiał wygenerować jeden DataSet dla bazy danych MS SQL Server, a drugi dla PostgreSQL. Następnie mógłbyś spróbować skorzystać z metody Merge http://msdn.microsoft.com/en-us/library/system.data.dataset.merge.aspx. Choć ja nigdy nie używałem jej do łączenia danych z tabel pochodzących z różnych baz danych, więc nie wiem jakie z tego mogą wyniknąć problemy (problemy mogą wynikać z tego, że schemat tych tabel nie będzie identyczny). Będziesz musiał zagłębić się w dokumentację.
Jeśli metoda Merge się nie sprawdzi, to wówczas lepiej będzie wykorzystać w tej aplikacji jakiegoś ORM-a (ADO .NET Entity Framework, NHibernate). Który z nich lepiej wybrać to już musisz zapytać kogoś kto miał okazję pracować z PostgreSQL. Ja raz miałem okazję pisać aplikację, w której przesyłałem dane z jednej bazy danych do drugiej i wtedy właśnie pracowałem na obiektach będących odwzorowaniem wybranych tabel (choć w sumie ta aplikacja była pisana przy użyciu innego języka programowania, a obydwie bazy danych to był Oracle ). Jeśli okaże się, że żaden ORM nie oferuje dostatecznego wsparcia dla PostgreSQL, to możesz napisać własną uproszczoną wersję takiego ORM-a. Wszelkie instrukcje SQL wykonywałbyś wtedy przy użyciu zwykłego ADO .NET (http://npgsql.projects.postgresql.org/ - .Net Data Provider for Postgresql), a rezultaty instrukcji SQL wrzucałbyś do swoich klas odwzorowujących wybrane tabele.
Rozwiązanie z użyciem linked servers jest o tyle dobre, że np. możesz sobie przygotować zapytanie, które ściągnie dane z danej tabeli z bazy danych PostgreSQL i porówna te dane (w oparciu o np. ID) z danymi z danej tabeli z bazy danych MS SQL Server, a następnie wstawi tam gdzie będzie trzeba tylko te brakujące. Oczywiście to tylko przykład, bo tak na prawdę nie wiem co będziesz przesyłał pomiędzy tymi bazami danych.