http://hi.baidu.com/luxi0194/blog/item/a5c2a9128a705cc6c2fd7803.html
远程链接服务器详细配置
--
建立连接服务器
EXEC
sp_addlinkedserver
'
远程服务器IP
'
,
'
SQL Server
'
--
标注存储
EXEC
sp_addlinkedserver
@server
=
'
server
'
,
--
链接服务器的本地名称。也允许使用实例名称,例如MYSERVER\SQL1
@srvproduct
=
'
product_name
'
--
OLE DB数据源的产品名。对于SQL Server实例来说,product_name是'SQL Server'
,
@provider
=
'
provider_name
'
--
这是OLE DB访问接口的唯一可编程标识。当没有指定它时,访问接口名称是 SQL Server数据源。SQL Server显式的provider_name是 SQLNCLI(Microsoft SQL Native Client OLE DB Provider)。Oracler的是 MSDAORA,Oracle 8或更高版本的是OraOLEDB.Oracle。MS Access和MS Excel的是 Microsoft.Jet.OLEDB.4.0。IBM DB2的是DB2OLEDB,以及ODBC数据源的是MSDASQL
,
@datasrc
=
'
data_source
'
--
这是特定OLE DB访问接口解释的数据源。对于SQL Server,这是 SQL Server(servername或servername\instancename)的网络名称。对于Oracle,这是SQL*Net别名。对于 MS Access和MSExcel,这是文件的完整路径和名称。对于ODBC数据源,这是系统DSN名称
,
@location
=
'
location
'
--
由特定OLE DB访问接口解释的位置
,
@provstr
=
'
provider_string
'
--
OLE DB 访问接口特定的连接字符串。对于ODBC连接,这是ODBC连接字符串。对于MS Excel,这是Excel 5.0
,
@catalog
=
'
catalog
'
--
catalog的定义变化基于OLE DB访问接口的实现。对于SQL Server,这是可选的数据库名称,对于DB2,这个目录是数据库的名称
--
创建链接服务器上远程登录之间的映射
EXEC
sp_addlinkedsrvlogin
'
远程服务器IP
'
,
'
false
'
,
'
sa
'
,
'
架构名
'
,
'
访问密码
'
--
标注存储
EXEC
sp_addlinkedsrvlogin
@rmtsrvname
=
'
远程服务器IP
'
,
--
要添加登录名映射的本地链接服务器
@useself
=
false,
--
当使用true值时,使用本地SQL或Windows登录名连接到远程服务器名。如果设为false,存储过程 sp_addlinkedsrvlogin的locallogin、rmtuser和rmtpassword参数将应用到新的映射中
@locallogin
=
NULL
,
--
这是映射到远程登录名的SQL Server登录或Windows用户的名称。如果这个参数置为NULL,映射将应用SQL Server实例中的所有本地登录名
@rmtuser
=
'
架构名
'
,
--
用来连接到链接服务器的用户/登录名的名称
@rmtpassword
=
'
访问密码
'
--
用来连接到链接服务器的用户/登录名的密码
--
查询数据
select
top
10
*
from
[
222
]
.pwms.pwms.bas_tb_sku
--
查看链接服务器信息
select
name,product,provider,data_source,query_timeout,lazy_schema_validation,is_remote_login_enabled,is_rpc_out_enabled
from
sys.servers
where
is_linked
=
1
--
配置链接服务器属性
exec
sp_serveroption
'
别名
'
,
'
name
'
,
'
远程服务器IP
'
--
标注存储
EXEC
sp_serveroption
@server
=
'
server
'
--
配置属性的链接服务器的名称
,
@optname
=
'
option_name
'
--
要配置的选项
,
@optvalue
=
'
option_value
'
--
选项的新值
--
附参数
参 数 描 述
collation compatible 如果你确认SQL Server实例与远程SQL Server拥有相同的排序规则就启用这个设置。由于SQL Server不再需要对数据源之间的字符列执行比较操作,把它们假定为相同的排序规则,这样做可以提升性能
collation name 如果启用了use remote collation并且是非SQL Server的数据源,则collation name指定远程服务器排序规则的名称。这个排序规则名称必须是SQL Server所支持的
connect timeout 指定在超时发生之前到链接服务器的连接会尝试多少秒。如果数值为“
0
”,sp_ configure的remote query timeout的服务器值用来当作默认值
data access 如果启用,就允许分布式查询访问
lazy
schema
validation 如果设为true,则架构不会在查询开始时去检测远程表。尽管这样会减少远程查询的负载,但是如果架构发生了变化并且你没有进行架构检测,比如说查询中引用的对象不能与查询命令进行通信,就会生成错误
query timeout 指定查询等待的超时值(秒数)。如果这个值为0,则query wait选项使用sp_configure值
rpc 启用从服务器进行远程过程调用
rpc out 启用远程过程调用到服务器
use
remote collation 指定是使用远程服务器排序规则(true)还是本地服务器排序规则(false)
--
删除链接服务器属性
exec
sp_dropserver
'
4
'
--
标注存储
EXEC
sp_dropserver
@server
=
'
server
'
--
从SQL Server实例中删除的链接服务器的名称
,
@droplogins
=
'
droplogins
'
--
如果指定droplogins,则在删除链接服务器之前要删除登录名映射
--
查看链接登录名
select
s.name linkedServerName,s.data_source linkedserver_source,s.is_linked,s.modify_date,
ll.remote_name,ll.local_principal_id,ll.uses_self_credential,
p.name localLoginName
from
sys.Linked_logins ll
inner
join
sys.servers s
on
s.server_id
=
ll.server_id
left
join
sys.server_principals p
on
p.principal_id
=
ll.local_principal_id
where
s.is_linked
=
1
--
删除链接服务器登录名映射
exec
sp_droplinkedsrvlogin
'
远程服务器IP
'
,
NULL
--
标注存储
EXEC
sp_droplinkedsrvlogin
@rmtsrvname
=
'
远程服务器IP
'
--
登录名映射的链接服务器名称
@locallogin
=
NULL
--
这是从链接服务器删除的SQL Server登录或Windows用户映射的名称
-- 假设远程机器IP为127.0.0.1
-- 建立连接服务器
EXEC sp_addlinkedserver ' 127.0.0.1 ' , ' SQL Server '
-- 创建链接服务器上远程登录之间的映射
EXEC sp_addlinkedsrvlogin ' 10.0.0.222 ' , ' false ' , ' sa ' , ' 架构名 ' , ' 密码 '
-- 查询数据
select top 10 * from [ 127.0.0.1 ] .数据库名.架构名.表名
-- 查看链接服务器信息
select name,product,provider,data_source,query_timeout,lazy_schema_validation,is_remote_login_enabled,is_rpc_out_enabled
from sys.servers
where is_linked = 1
-- 配置链接服务器属性设置别名
exec sp_serveroption ' remotecmp ' , ' name ' , ' 127.0.0.1 '
-- 查询数据
select top 10 * from remotecmp.数据库名.架构名.表名