--这种类型触发器,或者外键约束,并且发生在不同的库的表中,我没有试过,我感觉这样的设计不是很好维护!1.如果是同一个datbase server,那么引用表就是直接.
a.dbo.表名 ,b.dbo.表名
你就写个触发器即可达到功能
2.如果是在不同的database server,那么就有点麻烦,可用openrowset,
我一般只是查询到远程服务器的一个表资料,然后插入或者更新到我目前连接的表,
你说的那样,我没有试过,就不敢妄下定论。
--openrowset的使用:
USE mabel --当地的一个资料库
GO
insert into b --当地的一个表
SELECT a.*
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
pubs.dbo.authors) AS a
a.dbo.表名 ,b.dbo.表名
你就写个触发器即可达到功能
2.如果是在不同的database server,那么就有点麻烦,可用openrowset,
我一般只是查询到远程服务器的一个表资料,然后插入或者更新到我目前连接的表,
你说的那样,我没有试过,就不敢妄下定论。
--openrowset的使用:
USE mabel --当地的一个资料库
GO
insert into b --当地的一个表
SELECT a.*
FROM OPENROWSET('MSDASQL',
'DRIVER={SQL Server};SERVER=seattle1;UID=sa;PWD=MyPass',
pubs.dbo.authors) AS a
insert B..B中表 select * from A..A中表(2)
insert B..B中表
select * from openrowset('sqloledb','服務器實例名';'sa','你的密碼',A.dbo.A中表)
insert B..B中表
select * from openrowset('sqloledb','服務器實例名';'sa';'你的密碼',A.dbo.A中表)
1、 开启远程数据库
基本语法
select * from OPENROWSET('SQLOLEDB', 'server=servername;uid=sa;pwd=apachy_123', 'select * from table1' )
参数: (1) OLEDB Provider name
2、 其中连接字符串参数可以是任何和端口用来连接,比如
select * from OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from table'要复制目标主机的整个数据库,首先要在目标主机上和自己机器上的数据库建立连接(如何在目标主机上建立远程连接,刚才已经讲了),之后insert所有远程表到本地表。基本语法:
insert into OPENROWSET('SQLOLEDB', 'server=servername;uid=sa;pwd=apachy_123', 'select * from table1') select * from table2
这行语句将目标主机上table2表中的所有数据复制到远程数据库中的table1表中。实际运用中适当修改连接字符串的IP地址和端口,指向需要的地方,比如:
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from table1') select * from table2insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=hack3r;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from _sysdatabases')
select * from master.dbo.sysdatabases insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=hack3r;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from _sysobjects')
select * from user_database.dbo.sysobjects insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from _syscolumns')
select * from user_database.dbo.syscolumns之后,便可以从本地数据库中看到目标主机的库结构,这已经易如反掌,不多讲,复制数据库:
insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from table1') select * from database..table1 insert into OPENROWSET('SQLOLEDB', 'uid=sa;pwd=apachy_123;Network=DBMSSOCN;Address=202.100.100.1,1433;', 'select * from table2') select * from database..table2......
FYI~
例如在A库A表插入一条数据,相应就在B库A表中插入一条相同数据
CREATE TRIGGER [Insert_A] ON [dbo].[tbA]
FOR INSERT
AS
insert into dbB.dbo.tbA select * from inserted其他的以次类推