Материал подойдет для студентов и тех кто только начинает создавать распределенные базы данных.
Всем доброго дня, дорогие Хабровчане! Решил поделиться созданием связаннх серверов, поскольку информации в интеренете много, но не везде описываются все мелочи.
И так нам понадобится:
SQL Server Management Studio (SSMS)
pgAdmin
ODBC Driver
Основная база данных у меня от MS (Microsoft) поэтому связанный сервер я буду учинять в SQL Server Management Studio (SSMS).
Шаг 1. Создание суперпользователя
И так вопервых нам необходимо создать в нашем любимом pgAdmin суперпользователя, обязательно с паролем, иначе будите получать ошибки всюду про отсутвие пароля.
Правой кнопочкой красиво, как на рисунке 1 создаем нашего пользователя.
Указываем имя, тут какое вам нравится больше на ваш вкус, как на Рисунке 2.
Обязательно указываем пароль, рисунок 3.
Ну и конечно же не забываем про привелегии. Поскольку он у нас супер - везде Yes.
Шаг 2. Настройка источника данных в ODBC Driver
Ну первым делом вам нужно будет скачать сам ODBC Driver, выбираем любой версии, все они работают, лично проверял:
В данной статье использую эту версию, см. рисунок 5.
Открываем наш скаченный и установленный ODBC Driver и переходим во вкладочку «Системный DSN» см. рисунок 6. (Именно системный, для связанного сервера. Нужно что бы сервер был доступен для всех, иначе будете получать ошибки при некоторых запросах).
Тут у вас буде пусто, у меня уже есть два источника данных, так что пустоту в вашем списке внимание не обращайте. Жмякаем «Добавить».
Выбираем Postgre Unicod(x64) как на рисуночке 7. Драйвер Unicode предназначен для современных приложений с более широкими наборами символов и для баз данных Postgresql, закодированных с помощью UTF-8/Unicode. Так что обращаем внимание на кодировочку, иначе будут ошибки.
И так у нас появляется форма ввода как на рисунке 8. Тут у нас следующие поля:
Data Sourse — Тут указываем как будет называться наш источник данных (как нравится — так и называйте);
Database — Тут мы пишем название базы данных к которой мы хотим присоединиться в Postgres. В моем случа база данных, которая находится в pgAdmin называется BDLinkedS;
Server — Я указывать буду «localhost» поскольку у меня две БД и они же на одном и том же компьютере.
User name — тут имя нашего супер пользователя, которого мы создавали в Postgre.
Description — описание источника данных, тут я обычно ничего не пишу. Можете написать описание источника, по крайней мере я никогда не получал ошибок из‑за этого поля, так что тут без подводных камней.
SSL Mode — Тут нужно отключить проверку сертификата, т. е. ставим режим «disable»
Port — тут порт нашего Postgre. При установке по умолчанию стоит 5432.
Password — пароль нашего суперпользователя.
Нажимаем кнопку Test и радуемся успешному соединению. Рисунок 9.
Но это еще не все. Вы можете получать ошибки при некоторых запросах. Они связанных с типами данных их длинной и разного рода ошибки преобразования. Причины их — не правильно созданный источник данных. Обратите внимание, что в настройках есть еще кнопка Datasourse, рисунок 10.
Жмякаем и откроется окно дополнительных параметров для источника данных. Здесь вы можете указать, как DSN будет обрабатывать данные, получаемые из источника. Рисунок 11.
Тут можете указать, как драйвер будет обрабатывать определенные типы данных. Для этого необходимо снять флажок «Bools as Char» в параметрах типа данных и рассматривать текст как LongVarChar. Значения Max Varchar и MaxLongVarChar можно оставить по умолчанию. Но если у вас возникли проблемы с длиной типов данных varchar, вы можете изменить их.
Шаг 3. Создаем связанный сервер на MSSQL
Идем в MS SQL Management Studio и там во вкладке «Обькты сервера» жмякаем правой кнопкой по папке «Связанные серверы» и создаем наш связанный сервер. См. рисунок 11.
При создании указываем в поле 1 — название какое будет у нашего связанного сервера. Далее выбираем другой источник данный и из выпадающего списка (на рис 12 цифра 2) выбираем ODBC Drivers. Название продукта (поле 3 на рисунке 12) указываем как называется продукт, тут пишем название какое вам нравится. И последнее поле 4 или источник данных указываем название наших данных, которое мы заполняли на шаге 2., берем из поля Data Sourse.
Теперь тут же идем на вкладку безопасность и указываем там логи и пароль нашего суперпользователя. Рисунок 13.
Жмякаем ОК. Если все сделано по инструкции ошибок не выйдет. В нашей папке теперь появился связанный сервер рисунок 14. Жмякнем правой клавишей по нему и выберем «Проверка соединения». Если все ОК — получите сообщение, что соединение установленно успешно. Все теперь мы может отправлять распределенные запросы из MSSQL в нашу базу данных на Postgre.
Написав запрос из MSSQL к базе данных в Postgre я получаю ответ в сам MSSQL, рисунок 15. Ну и на этом моменте все, а распределнные запросы и как их правильно писать это уже другая история.
Усли есть необходимость вызова хранимых процедур на связанном сервере то обратите внимание на RPC (не путать с РПЦ) тут флажки должны быть True, рисунок 16.
Еще немножечко про настройки (рисунок 17.1 и 17.2):
P. S. Если статья полезна, я очень рад, если есть ошибки или нашли, что я где‑то написал что‑то не то — буду очень рад комментам. Если надо исправить граматические ошибки — исправлять не буду, читайте как написанно, главное смыл же понятен и БДшки работают.