SQL server触发器、存储过程操作远程数据库插入数据,解决服务器已存在的问题

近期弄了一个小项目,也不是非常复杂,须要将一个数据库的一些数据备份到另外一个库。不是本地,可能是网络上其它的数据库。想了一下,用了存储过程和触发器。

也不是非常复杂,首先我须要操作远程数据库,于是写了一个存储过程:

CREATE PROCEDURE sendInfoToRemoteDb
	@CardNo varchar(50),
	@CardStyle varchar(20),
	@userId varchar(20),
	@UserName varchar(30),
	@passDate datetime,
	@inOut int
AS
BEGIN
	--exec sp_addlinkedserver
<span style="white-space:pre">	</span>[email protected]=‘ims_srv_lnk‘,
<span style="white-space:pre">	</span>[email protected]=‘‘,
<span style="white-space:pre">	</span>[email protected]=‘MSDASQL‘,
<span style="white-space:pre">	</span>[email protected]=‘Driver={SQL SERVER};SERVER=xxxx.com;UID=xxx;PWD=xxx;Database=xxx‘
	insert into ims_srv_lnk.IMSDBBAK.dbo.tb_record(cardNo,cardStyle,userId,userName,passDate,inOut)

	 values(@CardNo,@CardStyle,@userId,@UserName,@passDate,@inOut)
END
GO

事实上就是操作远程的数据库。插入一下数据。然后这边本地数据库写了一个触发器:

create trigger tgr_passrecord_insert
on PassCheckRecord
for insert --插入触发
 as
 --定义变量
 declare
    @CardNo varchar(50),
	@CardStyle varchar(20),
	@userId varchar(20),
	@UserName varchar(30),
	@passDate datetime,
	@inOut int
  --在inserted表中查询已经插入记录信息
select @CardNo = CardNo, @CardStyle = CardStyle,@userId=userId ,
	@UserName=UserName,@passDate=passDate, @inOut=inOut
from inserted;
set @CardNo = @CardNo;
set @CardStyle = @CardStyle;
set @userId = @userId;
set @UserName = @UserName;
set @passDate = @passDate;
set @inOut = @inOut;
exec [dbo].[sendInfoToRemoteDb]
   @CardNo = @CardNo,
   @CardStyle = @CardStyle,
   @userId = @userId,
   @UserName = @UserName,
   @passDate = @passDate,
   @inOut = @inOut
print ‘发送信息成功!‘;

然后这种结果第一次运行成功了,可是第二次却提示 ims_srv_lnk已存在,不能运行了。后面想来想就把代码里面的连接server那一块删除了,结果就OK了。

来源:http://bluesnowsoft.com

时间: 2024-10-19 20:45:11

SQL server触发器、存储过程操作远程数据库插入数据,解决服务器已存在的问题的相关文章

关于SQL Server 2005 的自动远程数据库备份

原文:(原创)关于SQL Server 2005 的自动远程数据库备份 由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的一些帮助,结合自己的实际需要,写了这篇文章,希望对有同样需求的朋友有所帮助.目标服务器:192.168.1.197,备份服务器:192.168.0.194 1.在备份服务器上新建一个文件夹(我的是C:\DbBackupTest),首先要确定对备份服务器要有足够的权限(权限设置如下图所示),最好是“Administrators”组账户.其次 到备份服务器上,

SQL Server实时同步更新远程数据库遇到的问题

工作中遇到这样的情况,需要在更新表TableA(位于服务器ServerA 172.16.8.100中的库DatabaseA)同时更新TableB(位于服务器ServerB 172.16.8.101中的库DatabaseB). TableA与TableB结构相同,但数据数量不一定相同,应为有可能TableC也在更新TableB.由于数据更新不频繁,为简单起见想到使用了触发器Tirgger.记录一下遇到的一些问题: 1. 访问异地数据库 在ServerA 中创建指向ServerB的链接服务器,并做好

(原创)关于SQL Server 2005 的自动远程数据库备份

由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的一些帮助,结合自己的实际需要,写了这篇文章,希望对有同样需求的朋友有所帮助.目标服务器:192.168.1.197,备份服务器:192.168.0.194 1.在备份服务器上新建一个文件夹(我的是C:\DbBackupTest),首先要确定对备份服务器要有足够的权限(权限设置如下图所示),最好是“Administrators”组账户.其次 到备份服务器上,打开组策略->计算机配置->Windows设置->安全设置-&g

在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连

sql server服务器sqlserver远程连接数据库防火墙在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连 在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导 致此失败. (provider: 命名管道提供程序, error: 40 - 无法打开到 SQL Server 的连接) 为什么.我已经在SQL的外围配置设置中把他的

SQL Server 2008 R2如何开启数据库的远程连接

SQL Server 2008 R2如何开启数据库的远程连接 SQL Server 2005以上版本默认是不允许远程连接的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,远程连接数据库.需要做两个部分的配置: 1,SQL Server Management Studio Express(简写SSMS) 2,SQL Server 配置管理器/SQL Server Configuration Manager(简写SSCM) 配置远程连接步骤 1.打开sql2008,使用w

查看SQL SERVER 加密存储过程,函数,触发器,视图

原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create  PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset nocount on--CSDN:j9988 copyright:2004.07.15 --V3.2 --破解字节不受限制,适用于SQLSERVER2000存储过程,函数,视图,触发器--修正上一版"视图触发器"不能正确解密错误--发现有错,请E_MAIL:[email protected]be

sql server系统存储过程大全

关键词:sql server系统存储过程,mssql系统存储过程 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 xp_loginconfig --*报告SQL Server 实例在Windows 上运行时的登录安全配置 xp_logininfo --*返回有关Windows 认证登录的信息. xp_msver --*返回有关Microsoft SQL Server 的版本信息 xp_enumgroups    

SQL Server触发器

触发器是一种特殊类型的存储过程,它不同于之前的我们介绍的存储过程.触发器主要是通过事件进行触发被自动调用执行的.而存储过程可以通过存储过程的名称被调用. Ø 什么是触发器 触发器对表进行插入.更新.删除的时候会自动执行的特殊存储过程.触发器一般用在check约束更加复杂的约束上面.触发器和普通的存储过程的区别是:触发器是当对某一个表进行操作.诸如:update.insert.delete这些操作的时候,系统会自动调用执行该表上对应的触发器.SQL Server 2005中触发器可以分为两类:DM

15、SQL Server 触发器

SQL Server 触发器 触发器是一种特殊的存储过程,只有当试图用数据操作语言DML来修改数据时才会触发,DML包含对视图和表的增.删.改. 触发器分为DML触发器和DDL触发器,其中DML触发器会对数据表,视图进行insert.update.delete的时候触发.DDL则是create.alter.drop等时触发. DML触发器又分为after(之后触发)和insert of(之前触发)触发器. 如果在创建触发器的时候不指定类型,则默认是after触发器. 触发器有两个虚拟的临时表:插