菜鸟请教有关在存储过程中无法创建远程连接的问题? 谢谢.

disneyzhang 2007-01-13 06:54:01

CREATE PROCEDURE test_JO_D1124
AS

exec sp_addlinkedserver 'srv_link','','SQLOLEDB','OC_CHINA'

exec sp_addlinkedsrvlogin 'srv_link','false',null,'sa','12345'


SET REMOTE_PROC_TRANSACTIONS ON

BEGIN DISTRIBUTED TRANSACTION


update A
set A.PR_M_UDF8_NV='computer2'
FROM srv_link.jmidb.dbo.INM_PUR_M as A
WHERE (A.PR_M_PRNO_C = 000001)


update dbo.INM_PUR_M
set PR_M_UDF8_NV='computer1'
FROM dbo.INM_PUR_M
WHERE (PR_M_PRNO_C = '000002')


COMMIT TRANSACTION

exec sp_dropserver 'srv_link','droplogins'

GO


建立上述存储过程,用来更新远程数据库及本地数据数据库的数据保存时出下面提示:

Error 7202: Could not find server 'srv_link' in sysservers,Execute sp_addlinkedserver to add the server to sysservers


请问是什么原因,我试过在SQL Query Analyzer是可以创建远程连接的.
谢谢!



...全文
241 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
kempinfo 2008-07-25
  • 打赏
  • 举报
回复
路过学习:)
kourr2004 2007-02-01
  • 打赏
  • 举报
回复
路过学习:)
disneyzhang 2007-01-14
  • 打赏
  • 举报
回复
非常感谢gc_ding(施主,给个妞泡好么), 邹老师的回复.
zjcxc 2007-01-13
  • 打赏
  • 举报
回复
CREATE PROCEDURE test_JO_D1124
AS

exec sp_addlinkedserver 'srv_link','','SQLOLEDB','OC_CHINA'

exec sp_addlinkedsrvlogin 'srv_link','false',null,'sa','12345'

EXEC('
SET REMOTE_PROC_TRANSACTIONS ON

BEGIN DISTRIBUTED TRANSACTION


update A
set A.PR_M_UDF8_NV=''computer2''
FROM srv_link.jmidb.dbo.INM_PUR_M as A
WHERE (A.PR_M_PRNO_C = 000001)


update dbo.INM_PUR_M
set PR_M_UDF8_NV=''computer1''
FROM dbo.INM_PUR_M
WHERE (PR_M_PRNO_C = ''000002'')


COMMIT TRANSACTION
')
exec sp_dropserver 'srv_link','droplogins'

GO
gc_ding 2007-01-13
  • 打赏
  • 举报
回复
帮楼主试了好象也是不行,不过用两种方法解决:
(1)用两个存储过程
CREATE PROCEDURE test_JO_D1124_1
AS
exec sp_addlinkedserver 'srv_link','','SQLOLEDB','OC_CHINA'
exec sp_addlinkedsrvlogin 'srv_link','false',null,'sa','12345'
go

CREATE PROCEDURE test_JO_D1124_2
AS
SET REMOTE_PROC_TRANSACTIONS ON
BEGIN DISTRIBUTED TRANSACTION
update A
set A.PR_M_UDF8_NV='computer2'
FROM srv_link.jmidb.dbo.INM_PUR_M as A
WHERE (A.PR_M_PRNO_C = 000001)

update dbo.INM_PUR_M
set PR_M_UDF8_NV='computer1'
FROM dbo.INM_PUR_M
WHERE (PR_M_PRNO_C = '000002')
COMMIT TRANSACTION
exec sp_dropserver 'srv_link','droplogins'
go

(2)直接用openrowset(临时访问)
CREATE PROCEDURE test_JO_D1124
AS
SET REMOTE_PROC_TRANSACTIONS ON
BEGIN DISTRIBUTED TRANSACTION
update A
set A.PR_M_UDF8_NV='computer2'
FROM openrowset('SQLOLEDB','OC_CHINA';'sa';'12345',jmidb.dbo.INM_PUR_M) as A
WHERE (A.PR_M_PRNO_C = 000001)

update dbo.INM_PUR_M
set PR_M_UDF8_NV='computer1'
FROM dbo.INM_PUR_M
WHERE (PR_M_PRNO_C = '000002')
COMMIT TRANSACTION
GO

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧