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