簡體   English   中英

使用C#同步MSSQL和mysql數據庫

[英]Synching MSSQL and mysql database using C#

我在兩台服務器上有兩個數據庫。 一個是MSSQL,另一個是mysql。 兩個數據庫中有兩個相似的表。 在更新MSSQL的那一刻,如何自動更新mysql?

您可以使用SQL Server CLR集成 ,創建一個更新MySQL的觸發器。 在Code Project上有一個從SQL Server到MySQL示例同步數據作為起點。

或者,您可以創建Linked Server

sysadmin組的成員身份運行此腳本:

USE [master]
GO
EXEC master.dbo.sp_addlinkedserver 
    @server = N'MYSQL'
    , @srvproduct=N'MySQL'
    , @provider=N'MSDASQL'
    , @datasrc=N'MySQL'
    , @provstr=N'DRIVER={MySQL ODBC 5.1 Driver};SERVER=Server;PORT=3306;DATABASE=DBName; USER=user;PASSWORD=password;OPTION=3;'
    , @catalog=N'DatabaseName'

GO
EXEC master.dbo.sp_serveroption @server=N'MYSQL', @optname=N'collation compatible', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'MYSQL', @optname=N'data access', @optvalue=N'true'
GO
EXEC master.dbo.sp_serveroption @server=N'MYSQL', @optname=N'rpc', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'MYSQL', @optname=N'rpc out', @optvalue=N'false'
GO
EXEC master.dbo.sp_serveroption @server=N'MYSQL', @optname=N'connect timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'MYSQL', @optname=N'collation name', @optvalue=null
GO
EXEC master.dbo.sp_serveroption @server=N'MYSQL', @optname=N'query timeout', @optvalue=N'0'
GO
EXEC master.dbo.sp_serveroption @server=N'MYSQL', @optname=N'use remote collation', @optvalue=N'true'
GO
USE [master]
GO
EXEC master.dbo.sp_addlinkedsrvlogin 
    @rmtsrvname = N'MYSQL'
    , @locallogin = NULL 
    , @useself = N'False'
    , @rmtuser = N'user'
    , @rmtpassword = N'password'
GO

然后在INSERT,DELETE和UPDATE上使用觸發器來反映您在其他服務器上的更改。

例如,INSERT:

CREATE TRIGGER dbo.ti_MyTable
   ON  dbo.MyTable
   AFTER INSERT
AS 
BEGIN
    SET NOCOUNT ON;

    INSERT INTO MySql.Database..MyTable (column1, column2, column3)
    SELECT column1, column2, column3 FROM Inserted
END
GO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM