2014-12-17 2 views
-2

привет, я знаю вопрос его немой, но я должен спросить его, как подключить таблицу базы данных mysql к таблице базы данных mssql ?? У меня есть таблица mysql, которая должна принимать данные из таблицы на старом сервере sql 2000 db, там есть способ автоматически подключать их к автоматическому отображению данных каждый раз, когда он добавлен или обновлен на старом сервере ??? его есть способ автоподключить их? Я использую приложение, чтобы скопировать данные из старого и добавить его к новому каждые 6 секунд, но его боль, потому что иногда его закрывают это приложение lil и все становится беспорядком.его есть способ подключить таблицу mysql к таблице mssql?

ответ

1

№ Не изнутри MySQL. Там нет встроенных функций для подключения к удаленной базе данных, например SQL Server,

Но можно получить SQL Server для связи с базой данных MySQL. Я работал с SQL Server 2005 Standard и MySQL 5.1.

Мне пришлось установить источник данных ODBC в системе SQL Server, используя драйвер MySQL ODBC, загруженный из MySQL. (Запустите odbcad32, чтобы настроить его, или вам может понадобиться 64-разрядный эквивалент).

Мне пришлось включить некоторые параметры конфигурации в SQL Server, позволяя удаленные вызовы процедур и результаты.

Я создал LINKED SERVER в SQL Server 2005, который ссылался на источник данных ODBC. (Я думаю, что были некоторые настройки, которые мне приходилось настраивать в источнике данных ODBC.

С этой настройкой «трюк» был фактической тайной конструкцией Transact-SQL, было несколько способов сделать это, некоторые из них имеют лучшую производительность, чем другие. (Я разработал его, чтобы не перегружать память лодкой данных, мы делали переводы в управляемых фрагментах.)

Мне не нужно было «толкнуть» MySQL из SQL Server , Я делал «вытаскивание» данных из MySQL в SQL Server. Но я думаю, что одна и та же настройка может работать для выполнения инструкций INSERT и UPDATE.

Для получения набора результатов из MySQL в SQL Server я создал локальную временную таблицу (на SQL-сервисе r), и вытащил результаты из запроса MySQL, чтобы заполнить это. Это оказалось наиболее эффективным для меня.

Некоторые фрагменты из моей хранимой процедуры:

Комментариев я оставил о том, что мне нужно сделать для того, чтобы связанный сервера (я имел только необходимость выполнения ЗЕЬЕСТА против MySQL.)

-- -- to enable RPC for a linked server 
-- exec sp_helpserver 
-- exec sp_serveroption @server='LOCALHOST_MYSQL_xxxx_RO', @optname='rpc', @optvalue='true' 
-- exec sp_serveroption @server='LOCALHOST_MYSQL_xxxx_RO', @optname='rpc out', @optvalue='true' 
-- exec sp_helpserver 

    -- mysql database from which we retrieve interval data 
    DECLARE @linked_server_name NVARCHAR(255) 
    SET @linked_server_name = N'[LOCALHOST_MYSQL_xxxx_RO]' 

    IF OBJECT_ID(N'tempdb..#t_pxxxx') IS NOT NULL DROP TABLE #t_pxxxx 
    CREATE TABLE #t_pxxxx (pxxxx_xxxx_id BIGINT, ... 

    DECLARE @s_query NVARCHAR(MAX); 
    SET @s_query = 'SELECT r.id AS pxxx_xxxx_id, ... '; 

    DECLARE @stmt NVARCHAR(MAX); 
    SET @stmt = N'INSERT INTO #t_pxxxx 
    SELECT * FROM OPENQUERY(' + @linked_server_name + N',''' 
    + REPLACE(@s_query,'''','''''') + N''') ORDER BY 1'; 

    -- for debug, show the SQL statement 
    -- PRINT N'@stmt: ' + @stmt; 

    -- populate #t_pxxxx (local temporary table) from source 
    TRUNCATE TABLE #t_pxxxx; 
    EXECUTE(@stmt); 

Я протестировал несколько вариантов, используя @tables и #tables, реальную механику того, как каждая из этих работ несколько отличается ... для меня лучше всего было создать временную таблицу (#table) на SQL Server, а затем заполнить ее результаты запроса MySQL, а затем обрабатываются из временной таблицы.

Смежные вопросы