Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Подружить MSSQL и PostgreSQL  [new]
Sargos
Member

Откуда: Саратов
Сообщений: 563
У кого нибудь получалось подлинковать postgres к MSSQL?

Пробывал через PostgeSQL OLE DB провайдера - не получается, не может подключиться, минимум параметров, описанных в доке к OLEDB заполнял.

Пробывал через ODBC, подключение проходит, но ругается на 4-х компонентное имя в запросах. Необходимы INSERT UPDATE DELETE SELECT (в том числе вызов функций на стороне PostgeSQL)

Через OPENROWSET позволяет выбирать данные с сервера PostgeSQL, но не дает делать туда вставку, ругается на имена полей. Имена преобразует к строчным независимо от алиасов. Для объектов без заглавных букв проходит ок.

Хотелось бы все таки настроить OLEDB.

MSSQL 2000 SP3

PostgeSQL 8.0.0-rc4 Win32
ODBC 8.00.00.03
PgOleDb 1.0.0.15 (кажется)
12 янв 05, 11:13    [1237870]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Пробывал через PostgeSQL OLE DB провайдера - не получается,


Сообщение об ошибке?

автор
Пробывал через ODBC, подключение проходит, но ругается на 4-х компонентное имя в запросах.


Сообщение об ошибке?
12 янв 05, 12:28    [1238320]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Sargos
Member

Откуда: Саратов
Сообщений: 563
через PostgeSQL OLE DB провайдера:
EXEC sp_addlinkedserver @server = 'MyPG', @srvproduct = '', 
@provider = 'PostgreSQL.1', @location = 'TEST', @datasrc = 'myhost', 
@provstr = 'USER ID=pg;Password=xxx'
ok

 exec master..sp_tables_ex N'MyPG' , null, null, null, 'TABLE' 

Server: Msg 7302, Level 16, State 1, Procedure sp_tables_ex, Line 20
Could not create an instance of OLE DB provider 'PostgreSQL.1'.
OLE DB error trace [Non-interface error: CoCreate of DSO for PostgreSQL.1 returned 0x80040154].


ругается на 4-х компонентное имя в запросах:

 select * from PGTEST...test 

Server: Msg 7313, Level 16, State 1, Line 4
Invalid schema or catalog specified for provider 'MSDASQL'.
OLE DB error trace [Non-interface error: Invalid schema or catalog specified for the provider.].
12 янв 05, 13:19    [1238597]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
Could not create an instance of OLE DB provider 'PostgreSQL.1'.


Если нужный провайдер в списке:

exec master..xp_enum_oledb_providers

автор
Invalid schema or catalog specified for provider 'MSDASQL'.


А вот через ODBC действительно может тк не получиться, если, конечно, вы правильно параметры задали. попробуйте через OPENQUERY, который также можно использовать в качестве целевой таблицы для INSERT, UPDATE, DELETE.
12 янв 05, 13:29    [1238655]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Sargos
Member

Откуда: Саратов
Сообщений: 563
Провайдер есть и ЕМ его видит и позволяет создать линкед сервер, а дальше все...

OPENQUERY и прочие подобные с ODBC работают, если не считать того, что все имена полей конвертятся к строчным и где то дублируется вызов функции
(вызываю функцию, вставляющуюю 1 записть в табличку, а она вставляет две одинаковые :) из самого PostgreSQL работает нормально.

OPENQUERY неудобна тем, что работает со строкой константой, но видимо прийдется смириться, а вот то, что только строчные имена не прокатывает.

Опр OLEDB в доке написано что все пучком, вот только бы заставить ее работать :)
12 янв 05, 13:44    [1238720]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Yo
Народ
А где вы этот провайдер откопали?
"PostgreSQL.1"?

И ещё, как через ODBC провайдера подключаться? Я вроде прописал всё как надо, но оно пишет:
OLE DB provider 'MSDASQL' reported an error.
[OLE/DB provider returned message: [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified]
OLE DB error trace [OLE/DB Provider 'MSDASQL' IDBInitialize::Initialize returned 0x80004005: ].

Мож что почитать есть, киньте линк, если таковой имеется.
12 янв 05, 15:15    [1239125]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Мож что почитать есть, киньте линк, если таковой имеется.
BOL - sp_addlinkedserver - Example D
12 янв 05, 15:22    [1239163]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Sargos
Member

Откуда: Саратов
Сообщений: 563
PostgreSQL.1 идет в комплекте с PG 8.0.0-rc4, как впрочем и ODBC.

Чтобы через ODBC, сначала надо создать DSN в администраторе ODBC,
что не совсем удобно, впрочем дело вкуса.

Вобщем бубен нужно по звончее, блин...
12 янв 05, 15:43    [1239295]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Чтобы через ODBC, сначала надо создать DSN в администраторе ODBC,
что не совсем удобно, впрочем дело вкуса

Ну почему же ? Можно сказу указать сктроку коннекта со всеми параметрами в sp_addlinkedserver

BOL - sp_addlinkedserver - Example Е
EXEC sp_addlinkedserver 
   @server = 'LONDON Payroll', 
   @srvproduct = '',
   @provider = 'MSDASQL',
   @provstr = 'DRIVER={SQL Server};SERVER=MyServer;UID=sa;PWD=sapassword;'
GO
12 янв 05, 15:45    [1239307]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Sargos
Member

Откуда: Саратов
Сообщений: 563
Не спорю, однако у PostgreSQL ODBC две страницы дополнительных параметров, а как они называются не написано :)

Правда из лога строка подключения все же вынимается...

Ну в общем я же сказал, что нелюбовь ODBC это мой субъектив..
12 янв 05, 16:34    [1239559]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
А всё равно индейская национальная изба получается
EXEC sp_addlinkedserver 
   @server = 'saturn', 
   @srvproduct = '',
   @provider = 'MSDASQL',
   @provstr = 'DRIVER={PostgreSQL};SERVER=saturn;UID=postgres;PWD=;'
GO
Сервер делается, но при попытке конекта к нему - та же ошибка.
12 янв 05, 16:41    [1239591]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
mwolf
А всё равно индейская национальная изба получается
EXEC sp_addlinkedserver 
   @server = 'saturn', 
   @srvproduct = '',
   @provider = 'MSDASQL',
   @provstr = 'DRIVER={PostgreSQL};SERVER=saturn;UID=postgres;PWD=;'
GO
Сервер делается, но при попытке конекта к нему - та же ошибка.

А вы откуда синтаксис строки подключения брали ?
Вы уверены что DRIVER именно {PostgreSQL} ? И что у него существует именно такие атрибуты как SERVER, UID и PWD ?
12 янв 05, 17:11    [1239724]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Да. Со строкой подключения я немного погорячился :-)
Правильнее будет так "DATABASE=testdb;SERVER=saturn;PORT=5432;UID=postgres;PWD=;"
Выковырял я строку из подключения Power Designer-а.
Только толку от этого мало, потому что опять таже самая строка лезет.
В ODBC Админстраторе драйвер называется PostgreSQL. Тут ошибки быть не должно.
Людиии, если кто подключал связаный сервер по ODBC провайдеру, скажите что в какой строке было написано. Хочу повторить эксперимент.
12 янв 05, 17:46    [1239895]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
Выковырял я строку из подключения Power Designer-а.
Создайте File DSN. Запишите его в файл. Откройте файл в Нотепаде. И возьмите строку подключения.
12 янв 05, 17:51    [1239917]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Аж нифига(((
То же самое.
12 янв 05, 18:00    [1239952]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Sargos
Member

Откуда: Саратов
Сообщений: 563
Сначала попробуй создать DSN администратором ODBC, делай системный, его все видят.
В опциях Datasource на первой странице включи Use Declare/Fetch
(не спрашивай зачем, люди советуют)

В ЕМ создаешь линкед сервер через ODBC используя созданный DSN и все пашет.

Если не используешь DNS то прийдется всю строку подключения ручками, а динна ее - километр :)

Так что OLEDB никто не побеждал ?
13 янв 05, 09:13    [1240728]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Sargos
Сначала попробуй создать DSN администратором ODBC, делай системный, его все видят.
В опциях Datasource на первой странице включи Use Declare/Fetch
(не спрашивай зачем, люди советуют)

В ЕМ создаешь линкед сервер через ODBC используя созданный DSN и все пашет.

Если не используешь DNS то прийдется всю строку подключения ручками, а динна ее - километр :)

Так что OLEDB никто не побеждал ?


Создал.
Включил.
Насчёт создаешь линкед сервер через ODBC используя созданный DSN. Прикладываю скрин окна настройки. Что в какое поле прописывать надо? Системный ДНС прописал. Что ещё?

И ещё момент. Начал эксперементировать с разными серверами - попробовал к Ораклу подключиться - отгрёб очередную ошибку, блин
OLE DB provider 'MSDAORA' reported an error.
[OLE/DB provider returned message: Oracle client and networking components were not found. These components are supplied by Oracle Corporation and are part of the Oracle Version 7.3.3 or later client software installation.

Provider is unable to function until these components are installed.]
OLE DB error trace [OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80004005: ].
Идеи есть из-за чего это?

К сообщению приложен файл. Размер - 0Kb
13 янв 05, 14:00    [1242133]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Sargos
Member

Откуда: Саратов
Сообщений: 563
Еще как минимум необходимо задать Security, выбираешь последний пункт и вводишь имя и пароль пользователья PostgreSQL.
13 янв 05, 15:13    [1242401]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Sargos
Еще как минимум необходимо задать Security, выбираешь последний пункт и вводишь имя и пароль пользователья PostgreSQL.


Это само собой.
Остальные поля на этой закладке заполнять надо?
13 янв 05, 16:48    [1242929]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Sargos
Еще как минимум необходимо задать Security, выбираешь последний пункт и вводишь имя и пароль пользователья PostgreSQL.


Это само собой.
Остальные поля на этой закладке заполнять надо?
13 янв 05, 16:58    [1242973]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Sargos
Member

Откуда: Саратов
Сообщений: 563
Нет тока DSN и Securitty.
14 янв 05, 08:55    [1243982]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Sargos
Нет тока DSN и Securitty.

От гыдота.
Какого тогда оно драйвера не находит?
14 янв 05, 12:02    [1244655]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
Glory
Member

Откуда:
Сообщений: 104760
mwolf

Какого тогда оно драйвера не находит?

- DSN точно System ?
- Сервер под какой учетной записью стартует ?
- Драйвера под какой учетной записью устанавливались ?
14 янв 05, 12:04    [1244663]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
mwolf
Member

Откуда: Харьков
Сообщений: 600
Glory

- Драйвера под какой учетной записью устанавливались ?


Разитить его налево!!!
2 дня тупняка!!!
Давненько со мной такого не бывало(((

Glory, санкс.

p.s. Клиента оракловского по той же причине не находил
14 янв 05, 12:21    [1244742]     Ответить | Цитировать Сообщить модератору
 Re: Подружить MSSQL и PostgreSQL  [new]
IgorTaDaDaDa
Member

Откуда: Australia
Сообщений: 88
Sorry for ... English :)

MS SQL is now linked with PostgreSQL:

1) SELECT * FROM [TEST].[test].[public].[users] - does not work

2) SELECT * FROM OPENQUERY (TEST, 'select * from users') - does work

3) INSERT OPENQUERY(TEST, 'select * from users where u_id=-1') VALUES (60,2,1)

4) UPDATE, DELETE work with OPENQUERY if PostgreSQL table has a unique index only or does not have it but there is a column with unique values

5) None of OPENQUERY queries will work inside MSSQL transaction as:
"The operation could not be performed because the OLE DB provider 'MSDASQL' was unable to begin a distributed transaction."

Am I right?

If not - please correct.

Igor'.
9 мар 05, 07:41    [1370252]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить