服务器间的复制

    技术2022-05-11  52

    现在局域网下有两台sqlserver,  存放着相同的库和表, 假设A服务器里数据库叫As,有张表叫At,表里有三个字段。AS服务器下AT表里的字段如下Id    Name    Time1     B301    42     C203    53     D403    64     E504    8

    在B服务器里存在与AS服务器同样的库名,同样的表名,同样的字段名。

    我想当在A服务器这张表里加入一条数据时,也把数据更新到B服务器里,使得两台服务器两张表里的数据保持同步并完全一样?

    请问有高手知道能告诉我么?----------------------------------------------------------

    方案一,1,先建立联结服务器2,建立触发器

    方案2,sqlserver的复制功能

    对于方案一,转给你些资料:/********************链接数据库 *******************************/exec OPENDATASOURCE(         'SQLOLEDB',         'Data Source=远程ip;User ID=sa;Password=密码'         ).库名.dbo.存储过程名

    select * into 本地库名..表名 from OPENDATASOURCE(         'SQLOLEDB',         'Data Source=远程ip;User ID=sa;Password=密码'         ).库名.dbo.表名

    insert 本地库名..表名 select * from OPENDATASOURCE(         'SQLOLEDB',         'Data Source=远程ip;User ID=sa;Password=密码'         ).库名.dbo.表名

    或使用联结服务器:EXEC sp_addlinkedserver '别名','','MSDASQL',NULL,NULL,'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'exec sp_addlinkedsrvlogin  @rmtsrvname='别名',@useself='false',@locallogin='sa',@rmtuser='sa',@rmtpassword='密码'GO然后你就可以如下:select * from 别名.库名.dbo.表名insert 库名.dbo.表名 select * from 别名.库名.dbo.表名select * into 库名.dbo.新表名 from 别名.库名.dbo.表名go触发器的例子:

    create trigger ***** on *** for insert  insert into 你的备份表 select *,'增加','新',getdate() from insertedcreate trigger ***** on *** for update insert into 你的备份表 select *,'更改','新',getdate() from inserted insert into 你的备份表 select *,'更改','旧',getdate() from deletedcreate trigger ***** on *** for delete insert into 你的备份表 select *,'删除','旧',getdate() from deleted


    最新回复(0)