![](/img/trans.png)
[英]How to configure SQL Server Managment Studio to show all text data?
[英]How can i get all my sql server managment studio activite on my database as a executable tsql log?
我們有一個大型數據庫(許多表,SP,功能和...),我們的數據庫程序員超過10人。 所有主題都可以在我們的主服務器計算機或本地系統上使用數據庫。
我們的要求:
我們希望每個db程序員都可以通過SQL SERVER MANAGMENT STUDIO(或你的建議工具)應用他的定義(創建表,triger,sp,fn&...)和修改(在表,sp,trigers,fn&...上)並在每天結束時將所有這些活動作為TSQL腳本獲取。
因此,我們希望將我們的db程序員活動自動記錄為TSQL腳本(子tsql查詢序列)。 例如:
我的活動:
我的第一個活動>>我打開我的Customer表作為設計模式,右鍵單擊表並單擊Design。 然后我將ID字段的數據類型從INT更改為BigInt。 然后保存
我的第二個活動>>我改變PR_Customer_Insert存儲過程並執行它。
現在我想要一個像這樣的可執行日志:
-- UserName: Ram
-- 2013-02-10 10:20:35
Alter Table ALTER TABLE Customer ALTER COLUMN Id TYPE bigint;
Go
-- UserName: Ram
-- 2013-02-10 10:45:00
Drop Sp DROP PROCEDURE dbo.PR_Customer_Insert;
-- UserName: Ram
-- 2013-02-10 10:45:00
Create sp CREATE PROCEDURE PR_Customer_Insert
@id int,
@name nvarchar(30) AS
INSERT INTO Customer
(
@id,
@name
)
GO
我們知道比較兩個數據庫是一個解決方案但我們想要訪問SSMS查詢管道......
我的問題:
這個請求有沒有辦法(自動生成的日志是可執行的TSQL腳本)? 自動生成此腳本的最佳解決方案是什么? 您對數據庫團隊工作中的這個想法有何看法?
謝謝...
可能使用DDL觸發器 ,但在某個數據庫上
簡單的例子:
--Create table EvtLog
CREATE TABLE EvtLog
(
LoginName NVARCHAR(100),
PostTime DATETIME,
EventType NVARCHAR(100),
TSQLCommand NVARCHAR(2000)
)
GO
--Create the DDL trigger
CREATE TRIGGER trPreventTblChange
ON DATABASE
FOR DROP_TABLE, CREATE_TABLE, ALTER_TABLE,
DROP_PROCEDURE, CREATE_PROCEDURE, ALTER_PROCEDURE
AS
DECLARE @Data XML
SET @Data = EventData()
INSERT EvtLog (LoginName, PostTime, EventType, TSQLCommand)
SELECT @Data.value('(/EVENT_INSTANCE/LoginName)[1]', 'nvarchar(100)'),
@Data.value('(/EVENT_INSTANCE/PostTime)[1]', 'nvarchar(100)'),
@Data.value('(/EVENT_INSTANCE/EventType)[1]', 'nvarchar(100)'),
@Data.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(2000)');
GO
設置數據庫DDL觸發器並使用EVENTDATA函數查找有關已完成操作的更多信息,並將其插入到可在一天結束時查詢的表中
例
CREATE TRIGGER [LogDDL] ON DATABASE
FOR DDL_DATABASE_LEVEL_EVENTS
AS
DECLARE @xml XML;
SELECT @xml = EVENTDATA();
INSERT ChangeLog
(
ObjectName,
SQL
)
VALUES
(
@xml.value('(/EVENT_INSTANCE/ObjectName)[1]', 'sysname'),
@xml.value('(/EVENT_INSTANCE/TSQLCommand)[1]', 'nvarchar(max)')
);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.