0

私のデータベースには、古いものに復元し続けるストアド プロシージャがあります。Management AlterStudio を使用してストアド プロシージャを実行しましたが、しばらくして、予期せず、ストアド プロシージャが以前のものに変更されましたAlter。これは、過去数時間に数回発生しました。

プログラム内または手動でストアドプロシージャを変更することはないと確信しています。すべてのエージェント ジョブを確認しました。1Maintenance job時間ごとのバックアップ用に 1 つだけあり、もう 1 つReplicationは にReplication Schema Changes設定されていfalseますが、ストアド プロシージャはのリストに定義されていません。Publication Articles

この動作には他に考えられる理由はありますか? SQL Server データベースに CHECKPOINT を手動で設定する必要がありますか?

4

1 に答える 1

8

ALTER_PROCEDURE次のようなイベントをログに記録する DDL トリガーを作成できます。

CREATE TABLE dbo.AlterLog(EventType VARCHAR(50)
, ObjectName VARCHAR(256)
, ObjectType VARCHAR(25)
, TSQLCommand VARCHAR(MAX)
, LoginName VARCHAR(256)
);
GO

CREATE TRIGGER AlterProcs
ON DATABASE
FOR ALTER_PROCEDURE
AS

SET NOCOUNT ON; 

DECLARE @data XML
SET @data = EVENTDATA()

INSERT INTO dbo.AlterLog(EventType, ObjectName, ObjectType, TSQLCommand, LoginName)
VALUES(@data.value('(/EVENT_INSTANCE/EventType)[1]', 'varchar(50)'), 
@data.value('(/EVENT_INSTANCE/ObjectName)[1]', 'varchar(256)'), 
@data.value('(/EVENT_INSTANCE/ObjectType)[1]', 'varchar(25)'), 
@data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'varchar(max)'), 
@data.value('(/EVENT_INSTANCE/LoginName)[1]', 'varchar(256)')
)
GO
于 2012-05-30T16:49:21.460 に答える