MS SQL server分布式查询(链接数据库)

如果一个项目需要二至多台服务器,而我们又必须从几台服务器中将数据取出来,这就必须用分布式查询!

在这里有两个概念:本地数据源、远程数据源!

本地数据源指的是单个服务器上的数据

而远程数据源指的是另一个SQL实例上的数据。如何跨服务器取数呢?

有二种建议: 

--如果经常访问或数据量大,建议用链接服务器

--创建链接服务器
exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

--查询示例
select * from srv_lnk.数据库名.dbo.表名

--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名

go
--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'


--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('SQLOLEDB'
 ,'sql服务器名';'用户名';'密码'
 ,数据库名.dbo.表名)

--导入示例
select * into 表 from openrowset('SQLOLEDB'
 ,'sql服务器名';'用户名';'密码'
 ,数据库名.dbo.表名)

如何在企业管理器中设置呢?

SQL实例--->安全性--->链接服务器--->右键新建链接服务器

常规中输入链接服务器的名字,选其它数据源,选SQLOLEDB,数据源写上,一般写IP地址

再选安全性-----》选本地登陆----》模拟打勾

用此安全上下文进行,输入用户与密码

常见问题:

1.在建立完链接服务器后,我们进行查询操作
  例:我们已对DFLD的服务器做了链接,紧接着我们想访问它中PUBS数据库中的Authors表
  Select * From DFLD.PUBS..Authors
  经常会出二类问题
    1.提示
   异类查询要求为连接设置 ANSI_NULLS 和 ANSI_WARNINGS 选项。这将确保一致的查询语义。请启用这   些选项,然后重新发出查询。
      这种提示是因为没有将ANSI_NULLS与ANSI_WARNINGS打开
      SET ANSI_NULLS  ON
      SET ANSI_WARNINGS  ON
      Select * From DFLD.PUBS..Authors--这样就可以了!
    2.提示
    某机器MSDTC服务不可用
      这种提示很简单,只需要将MSDTC服务打开就是了!注:需要双方均打开MSDTC服务,默认不打开

转自:http://blog.csdn.net/liangpei2008/archive/2006/07/08/893865.aspx
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值