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>--@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触发器、存储过程操作远程数据库插入数据,解决服务器已存在的问题的更多相关文章
- 关于SQL Server 2005 的自动远程数据库备份
原文:(原创)关于SQL Server 2005 的自动远程数据库备份 由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的一些帮助,结合自己的实际需要,写了这篇文章,希望对有同样需 ...
- SQL Server实时同步更新远程数据库遇到的问题
工作中遇到这样的情况,需要在更新表TableA(位于服务器ServerA 172.16.8.100中的库DatabaseA)同时更新TableB(位于服务器ServerB 172.16.8.101中的 ...
- (原创)关于SQL Server 2005 的自动远程数据库备份
由于项目需要,需要对目标服务器上的数据库每天进行备份并转移,查阅网上的一些帮助,结合自己的实际需要,写了这篇文章,希望对有同样需求的朋友有所帮助.目标服务器:192.168.1.197,备份服务器:1 ...
- sql server Delete误操作后如何恢复数据
声明:本文是根据别人的经验https://blog.csdn.net/dba_huangzj/article/details/8491327写的总结 说明:update和delete时没有加where ...
- 在建立与服务器的连接时出错。在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连
在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连 sql server服务器sqlserver远程连接数据库防火墙在建立 ...
- SQL Server 2008 R2如何开启数据库的远程连接
SQL Server 2008 R2如何开启数据库的远程连接 SQL Server 2005以上版本默认是不允许远程连接的,如果想要在本地用SSMS连接远程服务器上的SQL Server 2008,远 ...
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...
- 在Sql Server触发器中判断操作是Insert还是Update还是Delete
在Sql Server触发器中判断操作是Insert还是Update还是Delete DECLARE @IsInsert bit, @IsUpdate bit, @IsDelete ...
- sql server系统存储过程大全
关键词:sql server系统存储过程,mssql系统存储过程 xp_cmdshell --*执行DOS各种命令,结果以文本行返回. xp_fixeddrives --*查询各磁盘/分区可用空间 x ...
随机推荐
- MAC 中安装和使用express
其实window系统和mac的操作在大致上其实是想同的,只是一些细节的区别,以下对在mac下安装和使用express做简要介绍,如有不妥之处请各位大神指教. 一.首先要测试node和npm是否已经正确 ...
- Angular——todos案例
基本介绍 (1)视图绑定两个数组,分别对应未完成和已完成 (2)数组的删除splice(),数组的追加push() 基本使用 <!DOCTYPE html> <html lang=& ...
- C#——数据库的访问
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- Java_Web三大框架之Hibernate+jsp+HQL分页查询
分页查询无处不在.使用Hibernate+jsp+HQL进行分页查询. 第一步:编写房屋实体类和House.hbm.xml映射. /* * 房屋实体类 */ public class House { ...
- 关于Python中的classmethod
Python 中的 classmethod classmethod: 作用是直接将自己的类对象,传给类方法. 一.classmethod 1)不用classmethod的时候 你的代码可能是这样写的, ...
- php字符串无乱码截取函数封装
/** * * 中英混合字符串长度判断 * @param unknown_type $str * @param unknown_type $charset */ function strLength( ...
- vue命令行创建运行工程
// install vue-cli 安装依赖包 npm install --g vue-cli// 使用vue-cli初始化项目 vue init webpack my-project// inst ...
- 如何让 HTML 识别 string 里的 '\n' 并成功换行
只要在结果所在的 div 的 css 设置: white-space: pre-line; 然后页面就能成功识别 '\n' 并整齐的显示结果了.
- snprintf不能使用"字符串指针"赋值,可以使用字符数组
#cat snprintf.c #include <stdio.h> #include <stdlib.h> #include <string.h> struct ...
- CentOS安装Docker-ce并配置国内镜像
前提条件 1.系统.内核 CentOS7 要求64位系统.内核版本3.10以上 CentOS6 要求版本在6.5以上,系统64位.内核版本2.6.32-431以上 查看内核版本号 uname -r # ...