C#如何跨服务器取数

C#如何跨服务器取数,第1张

服务器操作

EXEC sp_addlinkedserver

'Test', --名称

'',

'MSDASQL',

NULL,

NULL,

'DRIVER={SQL Server}SERVER=服务器名UID=saPWD=密码'

GO

-------以上为添加连接服务器

exec sp_addlinkedsrvlogin 'test','false','sa','sa',''

select * from Test.库名.dbo.表名

or

SELECT a.*

FROM OPENROWSET('MSDASQL',

'DRIVER={SQL Server}SERVER=serveUID=saPWD=sa',

db.dbo.table) AS a

SELECT *

FROM OPENQUERY(TEST, 'SELECT name, id FROM db.table')

set XACT_ABORT on

SET ANSI_NULL_DFLT_ON on

建立连接服务器,通过ip和有访问权限就行了

如果在过程里使用连接服务器要加上

SET XACT_ABORT ON

SET ANSI_NULL_DFLT_ON on --注意

SET ANSI_WARNINGS on

数据库使用比较简单,如ceshi数据库想使用Finance2014的A表,则使用SELECT * FROM Finance2014.dbo.A

跨服务器的使用,相对复杂一些 需要先连接服务器

EXEC sp_addlinkedserver 'srv_lnk','','SQLOLEDB','192.168.2.249'EXEC sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','12345'

再设置保证存储过程能够使用

EXEC sp_serveroption @server='srv_lnk',@optname='rpc',@optvalue='TRUE'EXEC sp_serveroption @server='srv_lnk',@optname='rpc out',@optvalue='TRUE'

4

再跨服务器调用数据库表和存储过程如:

SELECT * FROM srv_lnk.A.dbo.B 其中A为数据库B为表

EXEC srv_lnk.A.dbo.B 其中A为数据库B为存储过程

windows跨服务器copy找不到网络名可能是服务器的组策略设置导致出现问题了。

在windows打开组策略窗口,展开目录,选择用户权利指派选项。

双击“从网络访问此计算机”,在打开的“本地安全策略设置”中添加不能访问自己的用户便可以找到网络名了。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/470605.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-06
下一篇2023-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存