/*映射和删除远程服务器连接 */
exec sp_addlinkedserver @server='demo', @srvproduct='',@datasrc='192.168.2.93',@provider='SQLOLEDB' /* 不能再事务中执行存储过程*/
exec sp_dropserver 'demo'
select * from sys.servers /*查询此服务器中所有服务器映射记录 */
/*映射和删除远程服务器的数据库登陆账号 */
exec sp_addlinkedsrvlogin @rmtsrvname='demo',@useself= 'false' ,@locallogin=NULL,@rmtuser='sa', @rmtpassword='123456'
exec sp_droplinkedsrvlogin @rmtsrvname='demo',@locallogin=null
select * from sys.servers
exec sp_helpserver @server='demo' /*查看远程映射demo服务器的信息*/
BEGIN TRAN t1 /*启动事务*/
/*测试操作远程数据库和本地事务*/
reate databse test
use test
select * into t from demo.ris.dbo.ConfigurationDocument_ where version_=0/*拷贝远程数据库中的表结构,然后创建t表*/
insert into t
select * from demo.ris.dbo.ConfigurationDocument_ /*从远程数据库中获得数据库,然后批量插入本地数据库*/
use Test
select * from t
use test
delete from t
rollback tran t1
commit tran t1
备注:
BEGIN DISTRIBUTED { TRAN | TRANSACTION } /*分布式事务*/
[ transaction_name | @tran_name_variable ]
[ ; ]
/*
该示例从数据库引擎 的本地实例和远程服务器的实例上的 AdventureWorks 数据库中同时删除候选项。本地和远程数据库都将提交或回滚本事务。
注意:
除非正在运行数据库引擎 的实例的计算机中当前安装了 MS DTC,否则本示例会产生错误消息。关于安装 MS DTC 的详细信息,请参见 Microsoft 分布式事务处理协调器文档。
*/
USE AdventureWorks;
GO
BEGIN DISTRIBUTED TRANSACTION;
-- Delete candidate from local instance.
DELETE AdventureWorks.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
-- Delete candidate from remote instance.
DELETE RemoteServer.AdventureWorks.HumanResources.JobCandidate
WHERE JobCandidateID = 13;
COMMIT TRANSACTION;
GO