标题:SQL Server触发器内调用远程链接服务器的问题!
取消只看楼主
manzulinwf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-15
 问题点数:0 回复次数:7 
SQL Server触发器内调用远程链接服务器的问题!


1、假定我有两台服务器,本地服务器为server1,远程链接服务器server2。
2、本地和远程的数据表结构都相同,如下:
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[test]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[test]
GO

CREATE TABLE [dbo].[test] (
[a] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[b] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[c] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

3、建立链接服务器
if exists(select 1 from master..sysservers where srvname='srv_lnk')
exec sp_dropserver 'srv_lnk','droplogins'
go
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','server2'
/* srv_lnk:链接服务器名称,server2:远程服务器 */
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','sa'
/* srv_lnk:链接服务器名称,sa:登陆远程账号,sa:登陆远程密码 */
go

4、在本地服务器Server1的表test上创建触发器,如下所示:
CREATE TRIGGER t_test ON [dbo].[test]
FOR INSERT
AS
insert into srv_lnk.pubs.dbo.test
select * from inserted
--srv_lnk:创建的链接服务器
go

5、在SQL查询分析器内的测试语句:
insert into test values('a','b','c')
6、错误描述:
服务器: 消息 7391,级别 16,状态 1,过程 t_test,行 4
该操作未能执行,因为 OLE DB 提供程序 'SQLOLEDB' 无法启动分布式事务。
[OLE/DB provider returned message: New transaction cannot enlist in the specified transaction coordinator. ]
7、故障诊断:
1> 连接服务器配置正常,以select * from srv_lnk.pubs.dbo.test在查询分析器内测试,有正确信息返回。
2> 服务内Distributed Transaction Coordinator已启动。
3> SQL Server的MS DTC也正常启动。


搜索更多相关主题的帖子: SQL 服务器 触发器 Server 链接 
2006-05-15 16:33
manzulinwf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-15
得分:0 
很着急,希望各位高手帮帮忙!
很着急,希望各位高手帮帮忙!
谢谢!
2006-05-15 16:38
manzulinwf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-15
得分:0 
谢谢楼上大哥的解答,不过兄弟使用的机器环境是Win2000 Server + SQL Server 2000,
您提供的帖子好像是针对Microsoft Windows Server 2003 。
不过还是万分的感谢!
2006-05-16 17:27
manzulinwf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-15
得分:0 

斑竹呢?还有各位高手快来帮帮忙啊!

2006-05-22 10:14
manzulinwf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-15
得分:0 
斑竹呢?
还有各位高手怎么还不来呢?
2006-06-03 10:55
manzulinwf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-15
得分:0 
首先万分感谢斑竹,不过下面的选项我一直没有找到,可否抓图明示:
在 MSDTC 选项卡中,确保选中了下列选项:
网络 DTC 访问 网络管理 网络事务XA 事务
2006-06-05 07:57
manzulinwf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-15
得分:0 
斑竹,你用的是不是win 2003操作系统啊?
我的是win 2000操作系统,没有您图中的事务配置这一项,所以你的安全设置窗口就没有?
2006-06-05 17:55
manzulinwf
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2006-5-15
得分:0 

2006-06-06 08:44



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-64405-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051680 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved