Подключение к MySQL и другим базам
Работа с внешней БД из MS Sql Server на примере MySQL.
Решение продемонстрировано на демостенде Подключение к MySQL
Данная возможность позволяет управлять данными из кабинетов Falcon Space не только из базы данных SQL Server, но и из других СУБД. Здесь мы рассмотрим пример для MySQL.
На данный момент подключение к внешним базам, отличным от MS Sql Server, доступно только в Windows версии SQL Server (реализуется на VPS Windows Server, на Win хостинге работать не будет).
Отличие использования от стандартного использования будет только в написании SQL запросов (будет задействована возможность openquery).
Настройка коннектора
На сервере устанавливаем ODBC коннектор MySQL: https://www.mysql.com/products/connector/
Ссылка для postgresql (внизу списка последние версии): https://www.postgresql.org/ftp/odbc/versions/msi/
Если ругается, что нет VS2019, то ставим пакет (15Мб) - https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads
Настраиваем коннектор
Запускаем команду odbcad32 (win+r => odbcad32)
Заходим во вкладку System DSN, нажимаем Add
Выбираем коннектор
Примечание. Для Postgree выбираем Pastgree Unicode x64.
Заполняем настройки сервера
Для MySQL:
Для PostgreSQL:
Этот Data Source Name нам понадобится дальше
Проверяем соединение кнопкой Test. Сохраняем настройки.
Добавление удаленного сервера в SQL Server
Заходим в Server Objects/Linked Servers, в меню выбираем New Linked Server
Выбираем Other data source и Provider для ODBC, в Data Source вписываем Data Source Name из настроек коннектора
В разделе Security добавляем пользователей, которые могут пользоваться этим сервером, и для них указываем удаленные логин/пароль:
Чтобы не было ошибки при создании, добавьте текущего пользователя (локального администратора сервера).
В Server Options включаем RPC и RPC out, иначе не все типы запросов будут отрабатывать
Сохраняем настройки
Примеры SQL запросов
Создание таблицы
exec
('CREATE TABLE RemotelyCreatedTable
(id int,
data1 nvarchar(100),
data2 nvarchar(100)
)') at [MYSQL];
INSERT
insert into openquery(MYSQL, 'select * from RemotelyCreatedTable')
values (1, 'test1', 'test1'), (2, 'test2', 'test2')
-- in falcon
declare @id int
select @id = id from openquery(MYSQL1, 'select id from RemotelyCreatedTable order by id desc limit 1')
set @id = isnull(@id, 0) + 1
insert into openquery(MYSQL1, 'select * from RemotelyCreatedTable')
values (@id, @text, @text)
SELECT
select * from openquery(MYSQL, 'select * from RemotelyCreatedTable')
-- for falcon
declare @result TABLE(
id nvarchar(max),
p1 nvarchar(max),
p2 nvarchar(max)
)
INSERT INTO @result
select * from openquery(MYSQL1, 'select * from RemotelyCreatedTable')
UPDATE
update openquery(MYSQL1, 'select data1 from RemotelyCreatedTable where id = 1')
set data1='new_valueXXXX'
-- Вариант в Falcon
declare @sql nvarchar(max) = ''
set @sql = '
update openquery(MYSQL1, ''select data1 from RemotelyCreatedTable where id =
'+cast(@itemID as nvarchar)+''' )
set data1='''+@value+'''
where data1 <> '''+@value+'''
'
EXEC (@sql)
DELETE
exec('delete from remotelyCreatedTable where id='+ @itemID) at MYSQL1
Примечание: MYSQL1 в примерах - это Linked Server, подключенный через MS Management Studio.
Возможные проблемы
Ошибка "OLE DB provider “MSDASQL” for linked server “[name]” was unable to begin a distributed transaction"
Необходимо отключить использование транзакций в Falcon Space (в настройках web.config в App Settings добавляем ключ
Ошибка при обновлении поля (Update) в СУБД MySQL
MySQL выдает ошибку при попытке сохранить поле, значение которого совпадает с новым значением. Поэтому используйте подобную конструкцию:
update openquery(mysql, 'select * from remotelyCreatedTable where id=3')
set data1='1'
where data1 <> '1'
При этом в настройках Linked Server / Server Options / Enable prpmotion of Distributed transactions for RPC = true
Примеры работы компонентов платформы Falcon Space
Примеры удобных таблиц и форм Примеры дашборда Примеры графиков и диаграмм Пример календаря Таблица с данными по API Пример вывода карты с точками Виды полей форм Пример виджета статистики Пример дерева иерархии Пример компонента Временная линия Пример карточки товаров Пример учета загрузки ресурса Пример Канбан доски Пример мастер формы Пример выгрузки документов Excel/Word Пример заполнения данных по ИНН- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности Falcon Space Falcon Space. Импорт-экспорт Falcon Space. Локализация Falcon Space. Геолокация Falcon Space. Безопасность и разграничение доступа Falcon Space. PWA приложения Falcon Space. SEO (поисковая оптимизация) Подключение к MySQL и другим базам
- Подсистемы
- Дополнительные компоненты
- Интеграции
- HOWTO
- HOWTO Таблицы
- HOWTO Формы
- HOWTO JS
- HOWTO CSS
- HOWTO Верстка
- Решение проблем
Платформа Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки
Это быстрое внесение изменений
по ходу эксплуатации программы
Это современный интерфейс
полная адаптация под мобильные устройства
Бесплатное обучение разработке на Falcon Space
