:“服务器 'MyPosServer' 没有为 RPC 的目的而配置。”(200分)

C

chnthia

Unregistered / Unconfirmed
GUEST, unregistred user!
两台服务器都装SQL Server2000
本地机名为:agan 远程机名为:MyPosServer
在进行agan到MyPosServer的数据传输时,需要在agan上运行MyPosServer上的存储过程,错误提示:“服务器 'MyPosServer' 没有为 RPC 的目的而配置。”
由于MyPosServer的名称存在不确定性,所在我的“MyPosServer”是用sp_addlinkedserver创建一个链接的服务器
如果直接用SQL Server的查询分析器运行存储过程是不会出错的
所以我想问题会出在sp_addlinkedserver上
代码如下:
use master
go
DECLARE @RC int

EXEC @RC = sp_helpserver 'MyPosServer'
IF @RC = 0
EXEC sp_dropserver 'MyPosServer', 'droplogins'
go

declare @svrname nvarchar(128)
set @svrname = 'super'
declare @server sysname
declare @srvproduct nvarchar(4000)
declare @provider nvarchar(4000)
declare @datasrc nvarchar(4000)
declare @location nvarchar(4000)
declare @provstr nvarchar(4000)
declare @catalog sysname

set @server = 'MyPosServer'
set @srvproduct = 'sa'
set @provider = 'MSDASQL'
set @datasrc = NULL
set @location = NULL
set @provstr = 'DRIVER={SQL Server};SERVER='+@svrname+';UID=sa;PWD=;'
set @catalog = NULL

exec sp_addlinkedserver @server
, @srvproduct
, @provider
, @datasrc
, @location
, @provstr
, @catalog
go

DECLARE @RC int
declare @bmPram nvarchar(128)
declare @goodsid nvarchar(128), @pram1 nvarchar(128)
set @bmpram = 'goods_jh'
set @goodsid = 282
declare @execPram nvarchar(4000)
select @execPram =
N'select * from MyPosServer.xyxmis_svr.dbo.'+@bmpram+' where goodsid = @goodsid1'

select @pram1 = N'@goodsid1 int'

EXEC sp_executesql @execPram, @pram1,
@goodsid1 = @goodsid
---此句执行正确
declare @remotedb nvarchar(128)
select @remotedb = 'xyxmis_svr'
select @execPram =
N'execute MyPosServer.'+@remotedb+'.dbo.prScOoscz @lzmdid'
SET @pram1 = N'@lzmdid int'
EXECUTE @RC = sp_executesql @execPram, @pram1,
@lzmdid = 1
--此处出现错误提示:“服务器 'MyPosServer' 没有为 RPC 的目的而配置。”
--但如果换成下面的语句,执行正确
select @execPram =
N'execute super.'+@remotedb+'.dbo.prScOoscz @lzmdid'
SET @pram1 = N'@lzmdid int'
EXECUTE @RC = sp_executesql @execPram, @pram1,
@lzmdid = 1
--但服务器名"super"存在不确定性,必需用参数
--请大家帮忙看看,怎么解决呀??
 
怎么没人回答呀?[:(]
 
先用sp_addlinkedserver
sp_addlinkedserver [ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
[ , [ @provider = ] 'provider_name' ]
[ , [ @datasrc = ] 'data_source' ]
[ , [ @location = ] 'location' ]
[ , [ @provstr = ] 'provider_string' ]
[ , [ @catalog = ] 'catalog' ]

在程序的其它地方引用@server的名称
 
顶部