# SQL Server 跨服务器访问数据
参考链接:
[sp_addlinkedserver](https://msdn.microsoft.com/zh-cn/library/ms190479.aspx)
[sp_addlinkedsrvlogin](https://msdn.microsoft.com/zh-cn/library/ms189811.aspx)
> 需求:两个一模一样的表,分别分布在两个服务器的数据库上,现在要在一个表中,查看这两个表的内容
1. 在本地数据库查询分析器中,运行以下两段语句:
```sql
-- 创建链接服务器
exec sp_addlinkedserver
@server = 'rmtsrvname', -- 给要链接的服务器取的别名,也可以用下面的 IP 地址
@srvproduct = '', -- 空
@provider = 'SQLOLEDB', -- 不需要修改
@datasrc = '192.168.1.1' -- 需要连接的服务器IP,如果链接服务器数据库有添加端口号的话,就要改成 '192.168.1.1,端口号'
-- 登录链接服务器
exec sp_addlinkedsrvlogin
'rmtsrvname', -- 上面取的服务器别名
'false',
NULL,
'username', -- 帐号,可以是服务器上某个数据库的用户,不一定要 sa
'password' -- 密码
```
2. 联合查询
```sql
select id, a, b
from table1
union(select id, a, b from [rmtsrvname].[dbname].dbo.table1 as table2)
order by id
```