
# RDS for SQL Server添加链接服务器
**SQL Server数据库实例2创建链接服务器访问另外一个SQL Server数据库实例1。**
1. 开启两个实例的分布式事务，请参考[开启分布式事务](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_01_0001.html)，并且互相加入对端的host信息。线下服务器或ECS服务器请参考[远程服务器上的名称解析](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_01_0001.html)。
   
   ![](https://support.huaweicloud.com/bestpractice-rds-mssql/public_sys-resources/note_3.0-zh-cn.png)
   SQL Server数据库实例2和SQL Server数据库实例1已经在相同VPC内。如果ECS与RDS不在相同VPC或者RDS与线下实例建立分布式请通过EIP进行连接，请参考[绑定弹性公网IP](https://support.huaweicloud.com/usermanual-rds-mssql/rds_sqlserver_0025.html)为RDS实例绑定EIP。
   
   
2. 在SQL Server实例1中使用rdsuser创建数据库dbtest1。
3. 在SQL Server实例2中使用rdsuser运行如下sql创建链接服务器。 
   ```
   USE [master]
   GO
   EXEC master.dbo.sp_addlinkedserver @server = N'TEST_SERVERNAME', @srvproduct=N'SQLServer', @provider=N'SQLOLEDB', @datasrc=N'192.168.***.***,1433'
   EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'TEST_SERVERNAME', @locallogin = NULL , @useself = N'false', @rmtuser = N'rdsuser', @rmtpassword = N'********'
   GO
   ```
   表1参数说明 
   | 参数           | 说明                                                      |
   |:---|:---|
   | @server      | 链接服务器名称。                                                |
   | @srvproduct  | 数据源的产品名称。使用默认值SQL Server。                               |
   | @provider    | 使用该默认值。                                                 |
   | @datasrc     | 要访问的实例IP和端口。                                            |
   | @rmtsrvname  | 链接服务器名称。                                                |
   | @locallogin  | 本地服务器上的登录名。默认值NULL即可。                                   |
   | @useself     | 是否通过模拟本地登录名或登录名和密码连接到链接服务器。此处填false，表示通过登录名和密码连接到链接服务器。 |
   | @rmtuser     | 用户名（rdsuser）。                                           |
   | @rmtpassword | 用户密码。                                                   |
      
   
   
4. 建立dblink之后，在链接服务器中就可以看到SQL Server实例1中建立的库。 
   ![](https://support.huaweicloud.com/bestpractice-rds-mssql/zh-cn_image_0000002229548054.png "点击放大")
   
   
5. 使用如下SQL查看是否插入成功，结果如[图1]所示。
   
   ```
   begin tran
   set xact_abort on
   INSERT INTO [LYNTEST].[dbtest1].[dbo].[user1]
   ([id],[lname],[rname])
   VALUES('19','w','x')
   GO
   commit tran
   ```
   图1插入结果   
   ![](https://support.huaweicloud.com/bestpractice-rds-mssql/zh-cn_image_0000002229548058.png "点击放大")
   
   
