全Sql语句实现SBO事务日志记录与查询
if exists(_select* from dbo.sysobjects where id = object_id(N'fsTransLog') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table fsTransLog
go
(
AutoKey int IDENTITY (1, 1) NOT FOR REPLICATION NOT null,
ObjectType nvarchar(25),
TransType nvarchar(1),
KeyNum int,
KeyColumns nvarchar(255),
KeyValues nvarchar(255),
Result int default 0,
ErrNotes nvarchar(255),
TransUser int,
TransTime datetime
)
go
if exists(_select* from dbo.sysobjects where id = object_id(N'fsTransTable') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table fsTransTable
go
(
AutoKey int IDENTITY (1, 1) NOT FOR REPLICATION NOT null,
TransType nvarchar(25) not null, --事务类型:13,×××;15,销售交货....
TransName nvarchar(50), --事务类型名称:13,×××;15,销售交货....
TransTable nvarchar(30), --事务对应的数据表:×××对应OINV,销售交货对应ORIN
TransKey nvarchar(255) not null,
KeyName nvarchar(1000),
UserField nvarchar(30) default 'UserSign',
IsActive bit default 0
)
go
drop table fsTransType
go
(
TransType nvarchar(1) not null,
TransName nvarchar(50)
)
go
_insertINTO fsTransType(TransType,TransName)VALUES(N'U',N'修改')
_insertINTO fsTransType(TransType,TransName)VALUES(N'D',N'删除')
_insertINTO fsTransType(TransType,TransName)VALUES(N'C',N'取消')
_insertINTO fsTransType(TransType,TransName)VALUES(N'L',N'关闭')
如果希望对所有的日志进行记录,就去掉 if exists(_select...) 那一行语句
if exists (_select* from dbo.sysobjects where id = object_id(N'[dbo].[fsup_WriteTransLog]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[fsup_WriteTransLog]
go
@ObjectType nvarchar(25),
@TransType nchar(1),
@KeyNum int,
@KeyColumns nvarchar(255),
@KeyValues nvarchar(255),
@Result int,
@ErrNotes nvarchar(255)
as
begin
if exists(_select* FROM fsTransTable WHERE Upper(TransType)=Upper(@ObjectType) AND IsActive=1)
begin
_declare@table nvarchar(30), @TransKey nvarchar(300), @UserField nvarchar(50), @strSql nvarchar(4000), @UserId int
if (IsNull(@UserField,'')<>'')
begin
_select@strSql = '_insertINTO #TransUser(UserId) _select' + @UserField + ' FROM ' + @table + ' WHERE ' + @TransKey + '=N''' + @KeyValues + ''''
__execUTE(@strSql)
_select@UserId=UserId FROM #TransUser
end
VALUES(@ObjectType,@TransType,@KeyNum,@KeyColumns,@KeyValues,@Result,@ErrNotes,getdate(),@UserId)
end
end
go
__exec fsup_WriteTransLog @object_type,@transaction_type,@num_of_cols_in_key,@list_of_key_cols_tab_del,@list_of_cols_val_tab_del, @error, @error_message
局限:
-- 1、由于SBO的原因,查询条件显示的不很友好,都是最后登录时间
-- 2、由于SBO的报表局限,无法实现深度关联查询
_declare@sd datetime, @ed datetime, @userid int
_select@ed=max(b.lastLogin) FROM OUSR b WHERE b.LastLogin<='[%1]'
_select@userid=c.INTERNAL_K FROM OUSR c WHERE c.U_Name<='[%2]'
_select@ed=__cast(Convert(nvarchar(10), IsNull(@ed, getdate()), 121) + ' 23:59:59' as datetime)
_select@userid=IsNull(@userid,-100)
from fsTransLog a left join fsTransTable b on a.ObjectType=b.TransType
left join OUSR c on a.TransUser=c.INTERNAL_K
inner join fsTransType d on a.TransType=d.TransType
WHERE a.TransTime BETWEEN @sd AND @ed AND (a.TransUser=@userid OR @userid=-100)
转载于:https://blog.51cto.com/foresun/194633
全Sql语句实现SBO事务日志记录与查询相关推荐
- 解释一下SQLSERVER事务日志记录
解释一下SQLSERVER事务日志记录 大家知道在完整恢复模式下,SQLSERVER会记录每个事务所做的操作,这些记录会存储在事务日志里,有些软件会利用事务日志来读取 操作记录恢复数据,例如:log ...
- (转)解释一下SQLSERVER事务日志记录
本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/07/16/3194220.html 解释一下SQLSERVER事务日志记录 大家知道在完整恢 ...
- 第17周翻译:SQL Server中的事务日志管理的阶梯:第5级:在完全恢复模式下管理日志...
来源:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 作者:Tony Davis, 2012/01/27 翻译:刘琼滨. ...
- 事物日志恢复 mysql_浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用...
本篇文章是系列文章中的第五篇,是对前一个日志系列的补充篇.如果您对日志的基本概念还没有一个比较系统的了解,可以参看本系列之前的文章: 浅谈SQL Server中的事务日志(一)----事务日志的物理和 ...
- MySQL的SQL 语句:根据从表记录个数对主表排序
MySQL的SQL 语句:根据从表记录个数对主表排序 一个主表 news,有字段 nId(自动增长),sName. 记录: 10 name10 13 name13 20 ...
- 报错,sql语句中尽量不要使用*,只查询需要的字段出来
错误: sql语句中尽量不要使用*,只查询需要的字段出来. 解决: select id,tran_code,tran_name,tran_date,tran_time,tran_amount,1 as ...
- SQL Server移除事务日志后sys.master_files依然存在记录问题
在SQL Server中移除了事务日志文件后,使用sys.master_files检查时发现,对应的事务日志文件记录信息依然存在sys.master_files里面,只是状态state_desc为OF ...
- 最全SQL 语句大全,值得收藏!
1.基础 1.说明:创建数据库 CREATE DATABASE database-name 2.说明:删除数据库 drop database dbname 3.说明:备份sql server --- ...
- 在SQL Server中读取事务日志-从黑客到解决方案
The SQL Server transaction log is akin to a 'Black box' in an airliner. It contains all of the recor ...
最新文章
- 苹果布局大数据,两亿美元收购暗数据企业
- jquery日历插件 途牛_jquery日历插件SimpleCalendar
- 为什么你喜欢的女生不喜欢你
- 项目管理过程中的一些注意事项
- 如何解决大规模机器学习的三大痛点?
- Codeforces刷题
- Facebook 又搞事,违反竞业协议被起诉,PyTorch 关键技术疑侵权
- 量子计算机 并行,核磁共振量子计算机与并行量子计算.pdf
- 实现一个闹钟_iOS 14 闹钟:为啥这么难用?
- Atiit 常见功能 常用功能与模块的最快速解决方案
- 国税计算机基础知识,国税系统计算机基础知识培训课件精要.ppt
- 火狐主页被360导航劫持怎么办
- 一键怎样批量修改图片像素大小
- Tether市值十月下跌超过10亿美元
- 定义一个函数用来判断奇偶数PHP,定义函数 判断整数的奇偶性,如果是偶数则返回1,否则返回0,函数...,C语言:编写一个程序,判断一个整数的奇偶性。如果是奇数,输....
- 深恶痛绝……残忍虐杀何时终止?
- Intouch2020与施耐德PLC通讯
- 小程序打包体积优化策略
- 《自学是门手艺活》读后感
- 利用Python制作微信跳一跳外挂,我才是好友排名第一的人!