一、环境说明:
挑选两台不同系统的电脑测试(XP、Win7、Server2008、Server2003全可)。本例环境如下
本地系统-Win7,数据库名称localTest,IP为192.168.0.102
远端系统-XP,数据库名称Test131,IP为192.168.57.131
二、存储过程
创建表
USE [localTest]
GO
/****** Object: Table [dbo].[City] Script Date: 06/26/2011 19:37:49 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[City](
[CityID] [int] IDENTITY(1,1) NOT NULL,
[ProvinceID] [int] NOT NULL,
[CityName] [nvarchar](50) NULL,
CONSTRAINT [PK_City] PRIMARY KEY CLUSTERED
(
[CityID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
存储过程
USE [localTest]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: 牛金明
-- Create date: 2011-6-26
-- Description: LinkServerTest
-- =============================================
CREATE PROCEDURE [dbo].[LinkServerTest]
@prinvinceID int,
@cityName nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
--返回执行结果成功与否,0失败 1成功
declare @result int ;
--解决“无法在此会话中启动更多的事务”错误提示
set xact_abort ON
--使用distributed开启分布式事务
begin distributed tran t
begin try
--插入远端数据库一条数据
insert into SV131.Test131.dbo.city(ProvinceID,CityName)
values(@prinvinceID,@cityName);
--此时向本地数据库插入一条数据
insert into City values(@prinvinceID,@cityName);
--此条代替向本地数据库插入的一条数据(上面这条数据),用于测试回滚
--insert into City values(1111111111111111111111111111,@cityName);
--提交事务
COMMIT tran t;
set @result = 1;
end try
begin catch
--回滚事务
rollback tran t;
set @result = 0;
end catch
--查询两个数据表
select * from SV131.Test131.dbo.city
select * from city
--删除数据表数据
delete from SV131.Test131.dbo.city
delete from city
--返回结果
return @result;
END
--可以使用sql代码创建链接服务器的方法
--EXEC sp_addlinkedserver 'SV131', N'','SQLOLEDB','192.168.57.131';
--exec sp_addlinkedsrvlogin 'SV131', 'false',null, 'sa', 'njm'
--查询链接服务器信息
--select * from sys.servers
--删除链接服务器
--sp_dropserver 'SV131','droplogins'
--执行存储过程
--USE [localTest]
--GO
--DECLARE @return_value int
--EXEC @return_value = [dbo].[LinkServerTest]
-- @prinvinceID = 11,
-- @cityName = N'22'
--SELECT 'Return Value' = @return_value
--GO
三、配置图解
本地Win7-链接服务器设置
本地Win7-DTC设置
本地Win7-hosts文件设置
两台机子不在同一个网段内。必须保证可以ping通机子名称,而非机子的IP,因此在hosts文件中添加映射。
远端XP-链接服务器设置
四、可能会出现的问题
1、不同网段没有hosts文件的映射
2、事务开始前缺少此句set xact_abort ON
五、总结
1、整个的配置过程不会超过5分钟,但是缺少某个环节都会导致出现不易理解的错误出现。
2、配置DTC可以使用mssql的界面管理器,也可以书写sql代码建立,结果是一样的。
3、两台电脑必须开启MSDTC服务(Distributed Transaction Coordinator)。另外远端电脑还要开放135端口,对应RPC(Remote Procedure Call)服务,这个服务默认是开户的,但要检查是不是被防火墙拦截了(可考虑关闭防火墙或是将RPC设为例外)。
4、事务开启前使用set xact_abort ON此句。
5、事务开启使用begin distributed tran t(非传统的begin tran t)。
- 大小: 16.6 KB
- 大小: 75.3 KB
- 大小: 75.9 KB
- 大小: 27.6 KB
- 大小: 21.7 KB
- 大小: 20.7 KB
- 大小: 110 KB
- 大小: 3.1 KB
- 大小: 19.2 KB
- 大小: 25 KB
- 大小: 87.2 KB
- 大小: 80.9 KB
- 大小: 18.6 KB
- 大小: 13.1 KB
分享到:
相关推荐
分布式事务实现的难点,解决思路,不同场景下方案的选择,通过图解的方式进行梳理、总结和比较。相信耐心看完这篇文章,谈到分布式事务,不再只是有“2PC”、“3PC”、“MQ的消息事 务”、“最终一致性”、“TCC”等...
FTP服务器构建软件-Serv-U+图解教程
在SQL SERVER中使用分布式事务全攻略(图解) [原创文章] 作者:cyw 操作系统:Win2003 Enterprise Edition。 版本:5.2.3790 Service Pack 2 内部版本号 3790。 数据库:SQL Server 2000 企业版 + SP4 + SP4后的...
Windows Server 2008安装Hyper-V完全图解教程
零死角玩转stm32-高级篇2、文件系统(Fatfs-0.09、图解移植过程).pdf
状语从句---图解.pdf
最新详细-----图解----解决win7中vc++6.0打开出错的方法
Cisco-Packet-Tracer服务器配置-邮件传送-ftp-web-email-dns-dhcp图解.doc
SSO单点登陆 ---详细图解 不可多得。 很实用! 不实用不要分。
AIX安装--中文图解
电脑组装各接口以及主机内部各种线的连接方法-图解.pdf电脑组装各接口以及主机内部各种线的连接方法-图解.pdf电脑组装各接口以及主机内部各种线的连接方法-图解.pdf电脑组装各接口以及主机内部各种线的连接方法-图解...
DELL服务器_RAID_磁盘阵列配置图解
X-Router安装图解及说明.pdf,X-Router安装图解及说明.pdf。
Cisco-Packet-Tracer服务器配置-邮件传送-ftp-web-email-dns-dhcp图解.doc
玩转Fotolia --- 图解Fotolia流程 - rod的微图空间 - 微付图片探讨
篮球裁判--手势完全图解.doc
第三章 产品系统设计-方法-图解思考.pptx
手把手教你使用serv-u(图解),简单易懂
linux-ubuntu-jdk安装图解