跨服务器连接sqlserver数据库

sqlserver跨服务器连接数据库
文章目录
开启组件
语法
添加链接
关闭组件
开启组件
首先开启Ad Hoc Distributed Queries组件,在sql查询编辑器中执行如下语句:

exec sp_configure ‘show advanced options’,1
reconfigure
exec sp_configure ‘Ad Hoc Distributed Queries’,1
reconfigure

开启组件的原因语法中会说到。

语法
openrowset()方法是连接其他服务器数据库的命令。
语法:openrowset(‘SQLOLEDB’,‘ip,端口’;‘username’;‘password’,‘sql语句或者表’)。
两个示例:

1.select * from openrowset(‘SQLOLEDB’,‘127.0.0.1,8080’;‘sa’;‘12345678’,
[Database].[dbo].table) ;
// 直接连接表可以不用带引号

2.select * from openrowset(‘SQLOLEDB’,‘127.0.0.1,8080’;‘sa’;‘12345678’,
‘select id , name from [Database].[dbo].table’) ;
//如果是sql语句需要带引号

注意:如果不开启组件,会报下面这个错误。

添加链接
如果感觉每次都是用openrowset()方法太麻烦了,可以添加一个链接服务器。

EXEC sp_addlinkedserver
@server=‘iptest’, --服务器别名(可以用ip,也可以自己设置,只是个名称)
@srvproduct=’ ', --链接服务器的OLEDB数据源的产品名称,对象是sqlserver可以不指定
@provider=‘SQLOLEDB’, --提供程序与数据源交互的动态链接库,是个连接对象,无需更改
@datasrc=‘101.1.101.101’ --被访问的服务器的ip

添加用户登录链接。

EXEC sp_addlinkedsrvlogin
‘iptest’, --与上面的服务器别名保持一致
‘false’, – 不用管
NULL, --不用管
‘administrator’, --被访问的服务器帐号
‘password’ --被访问的服务器密码

此时执行:
select * from [iptest].[Database].[dbo].[table]

select * from openrowset(‘SQLOLEDB’,‘127.0.0.1,8080’;‘sa’;‘12345678’,
[Database].[dbo].table) ;
效果是一样的。
建议:如果确定数据库名和表名没有重复的或者以关键字命名的,中括号可以去掉。

关闭组件
注意:如果不需要链接需要关闭组件,因为开启会有安全隐患,避免别人攻击。

exec sp_configure ‘Ad Hoc Distributed Queries’,0
reconfigure
exec sp_configure ‘show advanced options’,0
reconfigure

如果链接不再使用,可以删除已经存在的某个链接。

Exec sp_droplinkedsrvlogin 服务器别名,Null
Exec sp_dropserver 服务器别名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因为有你更精彩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值