sql-server – 如何保留SQL Server存储过程修订的历史记录
注意:我不是在询问完整版本控制. 有没有办法自动保存SQL Server上的存储过程的历史记录. 与Google Docs自动保存文档版本历史的方式类似,Wikipedia会自动保留文章版本的历史记录. 我不希望用户更新存储过程也要维护存储过程的存储库.这是太多的工作,人们不会这样做. 希望这是我可以在SQL Server中打开的东西…… (并且通过存储过程我的意思是函数,触发器等.基本上所有都在可编程性下.) 我发布到https://stackoverflow.com/questions/14522224/how-to-keep-history-of-sql-server-stored-procedure-revisions首先我怀疑它会得到更多的意见. 解决方法虽然我完全同意源代码管理是实现这一目标的正确方法,但我也明白,并非所有环境都足够严格,只能单独使用(如果有的话),并且有时需要更改才能直接保留应用程序运行,保存客户端,你有什么.您可以使用DDL触发器将表中的所有修订保留在单独的数据库中(当然,经常备份该数据库).假设您有一个实用程序数据库: USE Utility; GO CREATE TABLE dbo.ProcedureChanges ( EventDate DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,EventType NVARCHAR(100),EventDDL NVARCHAR(MAX),DatabaseName NVARCHAR(255),SchemaName NVARCHAR(255),ObjectName NVARCHAR(255),HostName NVARCHAR(255),IPAddress VARCHAR(32),ProgramName NVARCHAR(255),LoginName NVARCHAR(255) ); 现在在您的数据库中,首先让我们抓住我们称之为“初始控制”的东西 – 当前版本的存储过程: USE YourDB; GO INSERT Utility.dbo.ProcedureChanges ( EventType,EventDDL,DatabaseName,SchemaName,ObjectName ) SELECT N'Initial control',OBJECT_DEFINITION([object_id]),DB_NAME(),OBJECT_SCHEMA_NAME([object_id]),OBJECT_NAME([object_id]) FROM sys.procedures; 现在要捕获后续更改,请向数据库添加DDL触发器: USE YourDB; GO CREATE TRIGGER CaptureStoredProcedureChanges ON DATABASE FOR CREATE_PROCEDURE,ALTER_PROCEDURE,DROP_PROCEDURE AS BEGIN SET NOCOUNT ON; DECLARE @EventData XML = EVENTDATA(),@ip VARCHAR(32); SELECT @ip = client_net_address FROM sys.dm_exec_connections WHERE session_id = @@SPID; INSERT Utility.dbo.ProcedureChanges ( EventType,ObjectName,HostName,IPAddress,ProgramName,LoginName ) SELECT @EventData.value('(/EVENT_INSTANCE/EventType)[1]','NVARCHAR(100)'),@EventData.value('(/EVENT_INSTANCE/TSQLCommand)[1]','NVARCHAR(MAX)'),@EventData.value('(/EVENT_INSTANCE/SchemaName)[1]','NVARCHAR(255)'),@EventData.value('(/EVENT_INSTANCE/ObjectName)[1]',HOST_NAME(),@ip,PROGRAM_NAME(),SUSER_SNAME(); END GO 随着时间的推移,将很容易看到和比较程序的变化,观察新的程序被添加到系统,看到程序被删除,并很好地了解谁与任何这些事件谈话. 更多信息: http://www.mssqltips.com/sqlservertip/2085/sql-server-ddl-triggers-to-track-all-database-changes/ (编辑:上饶站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 中端无敌,昂达Ti4200显卡再续辉煌!
- jwt – Keycloak从数据库/外部源添加额外声明
- 微软大幅降低WinXP售价 Lindows这下要玩完
- 本地连接“修复”功能技巧
- sql-server – 帮助安装SQL Server 2017 – VS Shell安装失
- sql-server – 在live prod表上更改varchar的长度
- sql-server – 使用SQL Server复制有哪些性能影响?
- sql-server – 现有的DAO代码是否适用于SQL Server?
- sql-server – 为什么在列大小增加后创建索引需要更长的时间
- table中cesllspacing与cellpadding的区别详解