<< Click to Display Table of Contents >> Navigation: Проект > Элементы дерева системы > БД-коннекторы и блоки процедур > Использование хранимых процедур > Создание связанного сервера |
MasterSCADA взаимодействует с СУБД через хранимые процедуры. Однако иногда возникают ситуации, когда использовать хранимые процедуры невозможно – например, их создание заблокировано администратором, но при этом существует возможность подключиться к базе и выполнить SQL-запрос. Обойти это ограничение поможет использование связанного сервера.
Идея связанного сервера в следующем. Необходимо установить на локальный компьютер (на компьютер с MasterSCADA) MSSQL, создать в нем хранимую процедуру, добавить связанный удаленный сервер и получать из него данные, используя хранимую процедуру с локального сервера. В этом случае локальная СУБД MSSQL будет играть роль шлюза – через него, используя хранимую процедуру, мы будем получать данные с другого сервера.
Рассмотрим пример. На удаленном компьютере установлен MSSQL, в ней находится база данных "First_example" с таблицей "MyTable". Хранимую процедуру на сервере создать нельзя. Необходимо получить данные из этой таблицы.
Установим на наш компьютер MSSQL Express и Management Studio. Авторизуемся и зайдем на сервер. Развернем Объекты сервера, а затем вызовем контекстное меню Связанные серверы и выберем пункт – Создать связанные сервер.
Появится окно Создание связанного сервера. Установим переключатель Тип сервера в "Сервер SQL Server", в этом случае в поле Связанный сервер нужно ввести путь к удаленному MSSQL серверу.
Перейдем в раздел Безопасность. В нем необходимо задать пользователя для входа на удаленный сервер. Добавим имя входа. Сначала выберем из раскрывающегося списка Локальное имя входа локального пользователя, затем введем в поля Удаленный пользователь и Пароль для удаленного пользователя имя и пароль пользователя, которые нам предоставлены на удаленном сервере, – через эти имена локальный сервер подключиться к удаленному.
Нажмем ОК внизу окна. Если связь установится корректно, то в "Связанные серверы" добавится наш сервер, и мы сможем увидеть нужные нам таблицы.
Теперь получим данные из таблицы "MyTable". Для этого сначала создадим на локальном сервере базу данных, назовем ее "MyBase", добавлять в нее таблицы не обязательно.
Теперь добавим хранимую процедуру. Процедура будет иметь такой текст:
CREATE PROCEDURE MyProc
AS
BEGIN
Select*From[INSAT\SQLEXPRESS].First_example.dbo.MyTable;
END
Данный запрос выбирает все данные из таблицы "MyTable". Обратите внимание, что сначала указывается удаленный сервер (в квадратных скобках), затем уже можно работать с базой и таблицей. Выполним процедуру:
Теперь можно использовать процедуру в MasterSCADA. Для этого нужно добавить БД-коннектор, настроить его на связь с локальной базой данных и добавить в коннектор хранимую процедуру. Теперь MasterSCADA будет получать данные с удаленного сервера через локальный.
Связанный сервер можно использовать и для других целей. Например, с его помощью можно получить данные из СУБД, которая не поддержана в MasterSCADA (Линтер, DB2 и другие). Для этого при добавлении связанного сервера нужно выбрать: Другой источник данных и выбрать в раскрывающемся списке доступный OLEDB коннектор.