一、环境说明:
挑选两台不同系统的电脑测试(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
分享到:
相关推荐
3. 分布式事务:是指在分布式系统中,需要跨越多个节点进行操作的事务,以确保整个系统的数据一致性。 4. 分区容错性(Partition Tolerance):分布式系统设计中必须要解决的问题之一,即系统的一部分节点失去连接时...
Redis,全称Remote Dictionary Server,是一款高性能的键值存储系统,常...通过阅读"REDIS常见面试题解析.md"和查看图形化的"redis面试题图解.jpg"、"redis面试题图解.svg",你可以更直观地学习和复习这些关键知识点。
9. **分布式事务处理**:在分布式环境中,确保数据的一致性和事务的原子性是一大挑战。可能涉及2PC(两阶段提交)、补偿事务(Saga)等策略。 10. **分布式锁与一致性**:分布式锁是解决并发问题的重要手段,例如...
- **Distributed Transaction Coordinator (DTC)**:分布式事务协调器,用于确保跨服务器的事务完整性。 - **SQL Server Agent**:负责自动化作业,如定时执行存储过程。 - **Search Service**:全文搜索服务,...
同时,还可以进行分布式事务处理,提高数据管理的灵活性。但需要注意的是,频繁的跨服务器查询可能会增加网络延迟,因此在设计和优化查询时应谨慎考虑性能影响。 总之,创建和使用SQL Server中的链接服务器是一项...
1. 连接Memcached服务器:使用`new Memcached()`创建实例,然后调用`addServer()`方法添加服务器地址和端口。 2. 存储数据:使用`set()`方法可以将键值对存储到缓存中,例如`$memcached->set('key', 'value', $...
分布式事务解决方案实战 高并发下的服务降级、限流实战 基于分布式架构下分布式锁的解决方案实战 分布式架构实现分布式定时调度 分布式架构-中间件 分布式消息通信 消息中间件在分布式架构中的应用 ActiveMQ...
5. **Oracle Transaction Manager**:支持分布式事务处理,确保在多数据库操作中的数据一致性。 6. **Oracle Data Provider for LINQ**:提供对Oracle数据库的LINQ支持,使得查询更加直观和简洁。 接下来,我们来...
- 本地事务与分布式事务的区别。 通过上述内容的介绍,我们可以看出“Java项目开发实战”不仅涵盖了Java语言本身的核心技术点,还涉及到了项目管理、架构设计等多个方面。这对于初学者来说是非常全面的学习资料,...
19-配置服务器间心跳的连接.avi 20-安装heartbeat软件及配置文件讲解.avi 21-heartbeat的主要配置文件参数讲解.avi 22-实战配置heartbeat配置文件.avi 23-启动heartbeat服务并查看配置的VIP.avi 24-发生裂脑故障及...
JavaEE,全称为Java Enterprise Edition,是Oracle公司提供的一个企业级应用开发平台,它构建在Java SE(标准版)之上,为开发分布式、多层的企业级应用程序提供了丰富的API和工具支持。这个“史上最全JavaEE基础...
- **支持分布式事务**:即使操作分布在不同服务中也能保持事务的一致性。 - **支持行级锁**:锁定粒度小,支持更高的并发操作。 - **支持MVCC**:通过维护数据的历史版本实现并发控制。 - **支持聚簇索引**:按...
J2EE(Java 2 Platform, Enterprise Edition)是Java平台的企业版,它为开发和部署分布式、多层的企业级应用程序提供了全面的框架。J2EE框架的核心在于其组件模型,包括Servlet、JSP(JavaServer Pages)、EJB...
越来越多的传统计帐系统正与销售定单处理、库存系统和账单系统连接起来,不仅提高了效率,而且可以支持急剧增长的事务处理量,使系统之间的数据移动和共享的需要巨增。 然而,更为重要的是,公司与其供应商及客户...
能、分布式等领域,人们不仅把作为检索数据的语言规范,而且也把作为检索图形、 图象、声音、文字等信息类型的语言规范。目前,世界上大型的著名数据库管理系统均支持 语言,如 等。在未来相当长的时间里,仍将是...