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/ (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |