#sql-server #linked-server
#sql-сервер #связанный сервер
Вопрос:
Для нашего приложения мы используем SQL Server 2000 и MySQL. Я хочу обновить базу данных MySQL, если какие-либо изменения в SQL Server 2000. Для этого я создал связанный сервер для MySQL. Он работает нормально, но внутри триггера отображается сообщение об ошибке, подобное
[Поставщик OLE / DB вернул сообщение: [MySQL] [Драйвер ODBC 3.51] Дополнительная функция не поддерживается]
Сообщение 7391, уровень 16, состояние 1, Процедура, строка 6
Операцию выполнить не удалось, поскольку поставщик OLE DB ‘MSDASQL’ не смог начать распределенную транзакцию «.
И это мой триггер,
alter trigger upd_test_enum
on mtest
for insert
as
begin
insert into emsdev...test_enum (id, name, is_active) values (4, 'Test4', 0)
end
Пожалуйста, помогите мне.
С уважением, Мубарак
Комментарии:
1. Если вы публикуете код, XML или образцы данных, пожалуйста , выделите эти строки в текстовом редакторе и нажмите на кнопку «образцы кода» (
{ }
) на панели инструментов редактора, чтобы красиво оформить и выделить синтаксис! При публикации сообщений об ошибках, пожалуйста , используйте кавычки ( ` » ` ) для правильного форматирования сообщения об ошибке. Благодаря этому вам больше ничего не понадобится<br/>
в вашем post!
Ответ №1:
Мне пришлось сделать несколько вещей, чтобы заставить его работать. Также используется сервер Win2K SQL и импортируются данные из MySQL.
Одна вещь, которую мы сделали, это установили версию 3.51.22 драйвера MySQL ODBC (mysql-connector-odbc-3.51.22-win32.msi).
Тогда следующая статья была очень полезной:http://www.sqlservercentral.com/Forums/Topic340912-146-1.aspx
Главное было отключить транзакции, а также ссылаться на DSN при создании связанного сервера. Для удобства использования я скопирую и вставлю инструкции из статьи SQLServerCentral в этом посте ниже:
Создание связанного сервера в SSMS для базы данных MySQL
- Загрузите драйвер MySQL ODBC с mysql.com
Установите драйвер MySQL ODBC на сервер, на котором находится SQL Server — Дважды щелкните файл установщика Windows и следуйте инструкциям.
Создайте DSN с помощью драйвера MySQL ODBC Пуск -> Настройки -> Панель управления -> Административные инструменты -> Источники данных (ODBC) -Перейдите на вкладку Системный DSN -Нажмите Добавить -Выберите драйвер MySQL ODBC -Нажмите Готово на вкладке Вход: -Введите описательное имя для вашего DSN. -Введите имя сервера или IP-адрес в текстовое поле Сервер. -Введите имя пользователя, необходимое для подключения к базе данных MySQL, в текстовое поле пользователя. -Введите пароль, необходимый для подключения к базе данных MySQL, в текстовое поле пароль. -Выберите базу данных, с которой вы хотели бы начать. На вкладке Advance: Под флагами 1: -Установите флажок Не оптимизировать ширину столбца. -Проверьте, возвращают ли совпадающие строки -Проверьте, Разрешают ли большие результаты -Проверьте использование сжатого протокола -Проверьте столбцы BIGINT на INT -Проверьте безопасность под флагами 2: -Проверьте Не запрашивать при подключении -Проверьте Игнорировать # в имени таблицы Под флагами 3: -Проверьте имена возвращаемых таблиц для SQLDescribeCol -Проверьте Отключить транзакции Теперь протестируйте свой DSN, нажав кнопку Test
Создайте связанный сервер в SSMS для SSMS базы данных MySQL (SQL Server Management Studio -> Развернуть Объекты сервера -Щелкните Связанные серверы правой кнопкой мыши -> Выберите Новый связанный сервер на странице Общие: -Связанный сервер: введите имя для вашего связанного сервера -Тип сервера: выберите другой источник данных -Поставщик: выберите поставщика Microsoft OLE DB для драйверов ODBC -Название продукта: Введите MySQLDatabase -Источник данных: Введите имя DSN, которое вы создали на странице Безопасность -Сопоставьте логин с удаленным пользователем и предоставьте пароль удаленных пользователей -Нажмите Добавить в разделе Локальный сопоставления входа с сервера на удаленный сервер: -Выберите локальный логин из выпадающего списка -Введите имя удаленного пользователя -Введите пароль для удаленного пользователя
Измените свойства поставщика MSDASQL Разверните «Поставщики» -> Щелкните правой кнопкой мыши MSDASQL -> Выберите «Свойства» -Включить вложенные запросы -Включить только нулевой уровень (это главное) -Включить Разрешить inprocess -Включить поддержку оператора ‘Like’
Измените настройки в конфигурации области SQL Server Surface Area для функций — Включите поддержку OPENROWSET и OPENDATASOURCE.
Измените настройки в конфигурации поверхностной области SQL Server для служб и подключений — Включите локальные и удаленные подключения через TCP / IP и именованные каналы
Остановите SQL Server и агент SQL Server
- Запустите SQL Server и агент SQL Server
Я не обнаружил, что мне нужно перезапускать SQL server.