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

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

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>--@server='ims_srv_lnk',
<span style="white-space:pre"> </span>--@srvproduct='',
<span style="white-space:pre"> </span>--@provider='MSDASQL',
<span style="white-space:pre"> </span>--@provstr='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

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

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

    原文:(原创)关于SQL Server 2005 的自动远程数据库备份 由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的一些帮助,结合自己的实际需要,写了这篇文章,希望对有同样需 ...

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

    工作中遇到这样的情况,需要在更新表TableA(位于服务器ServerA 172.16.8.100中的库DatabaseA)同时更新TableB(位于服务器ServerB 172.16.8.101中的 ...

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

    由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的一些帮助,结合自己的实际需要,写了这篇文章,希望对有同样需求的朋友有所帮助.目标服务器:192.168.1.197,备份服务器:1 ...

  4. sql server Delete误操作后如何恢复数据

    声明:本文是根据别人的经验https://blog.csdn.net/dba_huangzj/article/details/8491327写的总结 说明:update和delete时没有加where ...

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

    在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连 sql server服务器sqlserver远程连接数据库防火墙在建立 ...

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

    SQL Server 2008 R2如何开启数据库的远程连接 SQL Server 2005以上版本默认是不允许远程连接的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,远 ...

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

    原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create  PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...

  8. 在Sql Server触发器中判断操作是Insert还是Update还是Delete

    在Sql Server触发器中判断操作是Insert还是Update还是Delete DECLARE    @IsInsert bit,    @IsUpdate bit,    @IsDelete  ...

  9. sql server系统存储过程大全

    关键词:sql server系统存储过程,mssql系统存储过程 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 x ...

随机推荐

  1. SQL基本操作——约束

    我们将主要探讨以下几种约束: 1.NOT NULL 2.UNIQUE 3.PRIMARY KEY 4.FOREIGN KEY 5.CHECK 6.DEFAULT SQL NOTNULL约束:NOT N ...

  2. mybatis中映射文件和实体类的关联性

    mybatis的映射文件写法多种多样,不同的写法和用法,在实际开发过程中所消耗的开发时间.维护时间有很大差别,今天我就把我认为比较简单的一种映射文件写法记录下来,供大家修改建议,争取找到一个最优写法~ ...

  3. Java程序员2016年终总结

    回顾2016年, 很庆幸,自己能在2016年年尾找到一份满意的web后台开发工作.这也是我学习编程以来第一份开发工作,我很是珍惜. 还记得大三接触了Java的JFrame编写的坦克大战之后,就对编程产 ...

  4. C# 获得 当年1月1号

    //默认当年1月1号 ViewBag.time1 = , ).ToString("yyyy-MM-dd"); ViewBag.time2 = DateTime.Now.ToStri ...

  5. 5.21leetcode练习

    目录 两数之和 题目 答案 整数反转 题目 思路及答案 回文数 题目 思路及答案 希望每天进步一点点 两数之和 题目 新手司机上路,光荣翻车,没想出来.借了别人的答案,自行领会 答案 整数反转 题目 ...

  6. 【Flutter学习】基本组件之AppBar顶部导航栏

    一,概述 AppBar 显示在app的顶部.AppBar包含5大部分,如下图: 二,构造函数及参数含义 构造函数 AppBar({ Key key, this.leading, //在标题前面显示的一 ...

  7. 手把手从python安装到setuptools、pip工具安装

    一.python安装1.基础开发库 apt-get install gccapt-get install openssl libssl-dev 2.安装数据库和开发库 apt-get install ...

  8. Python3:numpy模块中的argsort()函数

    Python3:numpy模块中的argsort()函数   argsort函数是Numpy模块中的函数: >>> import numpy >>> help(nu ...

  9. shell使用eval进行赋值bc计算,bad substitution

    开始我认为是这样的: [root@jiangyi02.sqa.zmf /home/ahao.mah/ALIOS_TEST] #cat bbb.sh #!/bin/sh eval $1_new=123 ...

  10. [工具]ps

    ps 如果想看一个进程的启动时间,可以用lstart来看 [root@jiangyi02.sqa.zmf /home/ahao.mah] #ps -eo pid,lstart,etime,cmd |g ...