sqlserver跨服务器触发器的写法.doc_第1页
sqlserver跨服务器触发器的写法.doc_第2页
sqlserver跨服务器触发器的写法.doc_第3页
sqlserver跨服务器触发器的写法.doc_第4页
sqlserver跨服务器触发器的写法.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

触发器跨服务器访问远程服务器-郑建营跨服务器的触发器书写方法引言:电子病历的病人的基本信息,来源于HIS系统的病人基本信息。两个数据库的信息交互,通过HIS表的触发器来实现。但是伴随着业务的增长,HIS数据库和病历数据库可能会部署到不同的服务器上,因此,两个库之间的触发器,必须能满足跨服务器的访问。书写跨服务器的数据访问,必须要对两台服务器进行相关配置和建立远程服务连接(分布事务),具体实施步骤如下:一、 启用远程分布式服务1、 打开控制面板,找到管理工具,双击打开,如图:启动“Distributed Transaction Coordinator”服务,见下图2、 设置MSDTC选项l 在管理工具中,找到组建服务,双击打开,找到“我的电脑”,鼠标右键点击,选择“属性”如图:l 打开窗口后,选择选择“MSDTC”选项卡l 点击“安全性配置”按钮,l 网络DTC访问勾选上,允许远程客户端,允许远程管理,允许入站,允许出站,不要求身份验证勾选上。注意:1、以上步骤需要两台服务器都必须配置。2、启动分布式服务后还要打开远程服务器以及本地服务器135端口,因为远程分布式服务需要该端口通讯。启用通讯端口方法看下节。二、 启用通讯端口1、 打开控制面板,找到管理工具,双击打开,如图:2、 启用防火墙,点击 例外 ,点击添加程序。找到路径下:C:WINDOWSsystem32msdtc.exe选中:msdtc.exe3、 添加端口135点击添加端口,如图增加135端口。注意:1、以上步骤需要两台服务器都必须配置。三、 建立两台服务器的连接1、建立互访连接exec sp_addlinkedserver emr_server, , SQLOLEDB, 0 -创建服务器连接exec sp_addlinkedsrvlogin emr_server , false,null, sa, 146-164-152- -创建登陆sp_dropserver his ,droplogins-删除服务器连接和登陆,再也不使用了,可以删除。0 :目标服务器,即需要连接的远程服务器名称或IP,即电子病历服务器的名称或IP2、 书写触发器;例如: CREATE TRIGGER test_user ON dbo.user FOR INSERT, UPDATEASset xact_abort on update b set name=from his.emrdb.dbo.user b,inserted i where b.id=i.id完成上述 三大步骤即可完成触发器的跨服务器访问。四、 远程触发器访问示例:-新增同步 create trigger tr_insert_author on author for insert as set xact_abort on insert srv2.库名.dbo.author(id,name,telphone) select id,name,telphone from inserted go -修改同步 create trigger tr_update_author on author for update as set xact_abort on update b set name=,telphone=i.telphone from srv2.库名.dbo.author b,inserted i where b.id=i.id go -删除同步 create trigger tr_delete_author on author for delete as set xact_abort on delete b from srv2.库名.dbo.author b,deleted d where b.id=d.id go-连接远程/局域网数据(openrowset/openquery/opendatasource) -1、openrowset -查询示例 select * from openrowset( SQLOLEDB , sql服务器名 ; 用户名 ; 密码 ,数据库名.dbo.表名) -生成本地表 select * into 表 from openrowset( SQLOLEDB , sql服务器名 ; 用户名 ; 密码 ,数据库名.dbo.表名) -把本地表导入远程表 insert openrowset( SQLOLEDB , sql服务器名 ; 用户名 ; 密码 ,数据库名.dbo.表名) select *from 本地表 -更新本地表 update b set b.列A=a.列A from openrowset( SQLOLEDB , sql服务器名 ; 用户名 ; 密码 ,数据库名.dbo.表名)as a inner join 本地表 b on a.column1=b.column1 -openquery用法需要创建一个连接 -首先创建一个连接创建链接服务器 exec sp_addlinkedserver ITSV , , SQLOLEDB , 远程服务器名或ip地址 -查询 select * FROM openquery(ITSV, SELECT * FROM 数据库.dbo.表名 ) -把本地表导入远程表 insert openquery(ITSV, SELECT * FROM 数据库.dbo.表名 ) select * from 本地表 -更新本地表 update b set b.列B=a.列B FROM openquery(ITSV, SELECT * FROM 数据库.dbo.表名 ) as a inner join 本地表 b on a.列A=b.列A -3、opendatasource/openrowset SELECT * FROM opendatasource( SQLOLEDB , Data Source=ip/ServerName;User ID=登陆名;Password=密码 ).test.dbo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论