SQL Server跨服务器触发器配置与访问教程

4星 · 超过85%的资源 需积分: 29 10 下载量 152 浏览量 更新于2024-09-07 收藏 287KB PDF 举报
"本文档介绍了如何在SQL Server中实现跨服务器连接,特别是通过触发器进行远程数据访问。主要内容包括启用远程分布式服务、配置通讯端口和建立服务器间的连接。" 在SQL Server环境中,有时需要在不同的服务器之间进行数据交互,比如在HIS系统和病历数据库之间同步数据。这种跨服务器的链接主要依赖于触发器和分布式事务处理。以下是实现这一功能的详细步骤: 1. **启用远程分布式服务** - 首先,确保" Distributed Transaction Coordinator (MSDTC)"服务已在两台服务器上启动。这可以通过控制面板的管理工具来完成。 - 接下来,配置MSDTC选项,允许远程客户端、远程管理和入站/出站访问,并取消身份验证要求。 2. **开启通讯端口** - 防火墙需配置允许msdtc.exe程序通过,同时打开135端口,因为分布式服务通信需要135端口。在两台服务器上都需要执行这些步骤。 3. **建立服务器间连接** - 使用`sp_addlinkedserver`存储过程创建一个链接服务器,指定远程服务器的名称和连接信息,例如:`exec sp_addlinkedserver 'emr_server','','SQLOLEDB','192.168.0.10'`。 - 然后,使用`sp_addlinkedsrvlogin`创建登录,定义用于连接的用户名和密码,例如:`exec sp_addlinkedsrvlogin 'emr_server','false',null,'sa','146-164-152-'`。 - 最后,如果需要删除已存在的服务器连接,可以使用`sp_dropserver`,如`sp_dropserver 'his','droplogins'`。 在完成上述配置后,你可以在触发器中使用四部分名称(server_name.database_name.schema_name.object_name)来引用远程服务器上的对象。例如,如果HIS数据库的触发器需要更新病历数据库中的表,可以在触发器的SQL语句中直接引用链接服务器的表。 ```sql CREATE TRIGGER trg_HIS_PatientUpdate ON HIS_database.HIS_table AFTER UPDATE AS BEGIN INSERT INTO emr_server.emr_database.emr_table (PatientID, PatientName) SELECT i.PatientID, i.PatientName FROM inserted i END; ``` 在这个例子中,`HIS_database.HIS_table`是源数据表,而`emr_server.emr_database.emr_table`是目标数据表,当HIS数据库中的病人信息更新时,触发器会将更新同步到病历数据库。 请注意,跨服务器操作可能涉及性能开销,因此在设计系统时应考虑优化和效率问题。此外,安全也是至关重要的,确保只授权必要的用户和进程进行跨服务器访问,以防止未授权的访问或潜在的安全风险。