dtc访问
一、跨数据库访问
第一种方式
SELECT * FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=远程ip;User ID=sa;Password=密码'
).库名.dbo.表名
WHERE 条件
第二种方式
在sql server组->服务->安全性->链接服务器下建立一个具有别名的链接服务器。然后通过以下方式访问:
SELECT * FROM [链接服务器名].库名.dbo.表名
WHERE 条件
需要注意的是建立链接数据库服务器类型如果选择“SQL server”,那么链接服务器名称必须用要链接的服务器的在网络中的机器名或IP,如果要使用其它别名,可以在WINDOWS\system32\drivers\etc\hosts文件里添加一个别名的映射。
解除SQL阻止(sqlserver 2005情况)
SQL Server 阻止了对组件 ‘Ad Hoc Distributed Queries’ 的 STATEMENT’OpenRowset/OpenDatasource’ 的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用 sp_configure 启用 ‘Ad Hoc Distributed Queries’。有关启用 ‘Ad Hoc Distributed Queries’ 的详细信息,请参阅 SQL Server 联机丛书中的 “外围应用配置器”。
因为SQL2005默认是没有开启’Ad Hoc Distributed Queries’ 组件,开启方法如下
EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO
EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO
关闭Ad Hoc Distributed Queries:
exec sp_configure 'Ad Hoc Distributed Queries', 0
reconfigure
exec sp_configure 'show advanced options', 0
reconfigure
二、分布式事务的配置
1.用DTCPing.exe工具测试两台机器的DTC服务是否可以联通。
2.如果有问题检查MSDTC服务是否启动。
3.MSDTC依赖于RPC,RPC使用的端口是135,测试135端口是否打开.是否有防火墙?如果有先关了防火墙. telnet IP 135 如果是关闭的打开它.
4.打开“控制面板->管理工具->组件服务”,然后展开“组件服务->计算机->我的电脑”右键属性。选择MSDTC的Tab栏,点击安全性配置按钮,打开窗口,将“网络DTC访问”选项选中,并将“允许远程客户端”,“允许入站”,“允许出站”都选中,并选择“不要求进行验证”,“启用事务Internet协议(TIP)事务”,“启用XA事务”都选中。然后确定即可。(以上选项windows默认不开放,必须配置)
5.检查你的两台服务器是否在同一个域中. 如果不在同一个域中,是否建立可信任联接.
6.如果是WIN2000,升级到SP4
7.确认MDAC版本是2.6以上,最好是2.8.
8.在SQL server存储过程中使用分布式事务时,必须SET XACT_ABORT ON --设置分布式事务如果发生问题主动回滚操作
9.可以声明使用BEGIN DISTRIBUTED TRANSACTION,如果未明确生明,在事务块中包含链接服务器的访问,SQL server会自动升级成分布式事务。