设为首页 加入收藏

TOP

SqlServer远程执行存储过程或其他非DML语句
2015-11-21 01:43:32 来源: 作者: 【 】 浏览:0
Tags:SqlServer 远程 执行 存储 过程 其他 DML 语句

原本服务器有1个链接服务器,创建命令如下(都为同一域中的计算机):

?

EXEC master.dbo.sp_addlinkedserver
 @server = N'LinkServerName',
 @srvproduct=N'SQL Server' 
GO

EXEC master.dbo.sp_addlinkedsrvlogin
 @rmtsrvname=N'LinkServerName',
 @useself=N'True',
 @locallogin=NULL,
 @rmtuser=NULL,
 @rmtpassword=NULL
GO

该链接服务器可以进行远程查询,但是调用远程存储过程执行命令时出错:

?

?

EXEC [LinkServerName].[DB].DBO.SP_EXECUTESQL N'GRANT SELECT,INSERT,UPDATE,DELETE,REFERENCES ON [AAAAA] TO [username]'

消息 18483,级别 14,状态 1,第 1 行
由于没有在服务器 'LinkServerName' 上将 '' 定义为远程登录名,所以无法连接到该服务器。请确保指定的登录名正确无误。。

?

查看服务器信息:

?

SELECT name,product,provider,data_source,is_linked,is_remote_proc_transaction_promotion_enabled FROM sys.servers
\

?

@srvproduct=N'SQL Server' 无法远程执行,现在换一种接口类型。

?

EXEC master.dbo.sp_droplinkedsrvlogin [LinkServerName],Null 
EXEC master.dbo.sp_dropserver [LinkServerName]
GO


EXEC master.dbo.sp_addlinkedserver
 @server = N'LinkServerName',
 @srvproduct=N'',
 @provider='SQLNCLI',
 @datasrc='ServerName or IP'
GO
EXEC master.dbo.sp_addlinkedsrvlogin
 @rmtsrvname=N'LinkServerName',
 @useself=N'True',
 @locallogin=NULL,
 @rmtuser=NULL,
 @rmtpassword=NULL
GO

?

再执行远程存储过程,错误如下:

消息 7411,级别 16,状态 1,第 1 行
未将服务器 'DB03' 配置为用于 RPC。

开启 RPC 远程过程调用:

?

EXEC master.dbo.sp_serveroption @server=N'LinkServerName', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'LinkServerName', @optname=N'rpc out', @optvalue=N'true'

?

不可在界面上启用RPC,否则报错:

不允许对系统目录进行即席更新。(Microsoft SQL Server , 错误:259)

\

好了,现在再执行:

?

EXEC [LinkServerName].[DB].DBO.SP_EXECUTESQL N'GRANT SELECT,INSERT,UPDATE,DELETE,REFERENCES ON [AAAAA] TO [username]'

命令执行成功!

?

附:几种远程查询

?

SELECT * FROM [LinkServerName].[DB].dbo.AAAAA
SELECT * FROM OPENQUERY([LinkServerName],'SELECT * FROM DB.dbo.AAAAA')
SELECT * FROM OPENDATASOURCE('SQLNCLI','Data Source=;Integrated Security=SSPI').DB.dbo.AAAAA
SELECT * FROM OPENROWSET('SQLNCLI','Server=ServerName;Trusted_Connection=yes;','SELECT * FROM DB.dbo.AAAAA') AS a;

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SQLServer2005快捷键 下一篇SQL语句常用优化技巧(一)

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: