none
לראות את הטרנזקציות שבצעתי ב SESSION RRS feed

  • שאלה

  • האם יש ל SSMS אפשרות להציג את הפעולות שבצעתי ?

    לדוג' בצעתי :

    1.create table 

    2. insert

    3. drop table

    האם יש טבלה או חלון ( כמו ב sql Developer ) שמציג את הפעולות הללו ,כולל זמנים שבוצעו.

    דוגמה מאיך שנראה ב DEVELOPER הנמצא בקובץ המצורף.


    elfasikave


    שבת 13 אוקטובר 2012 22:24

תשובות

  • לגבי שינויים בסכמה  (כמו שציינת ADD או DROP TABLE ועוד) אתה יכול להתשמש ב DDL TRIGGERS

    בקוד המצורף יש דוגמא לתעוד שינויים בטבלאות ופרוצדורות.

    Use <Database name1>
    Go
    -- select * from DBUtil.dbo.DatabaseChanges order by EventDate
    if object_id('[DatabaseChanges]') is null
    Begin
    	CREATE TABLE [dbo].[DatabaseChanges](
    		[LogId] [int] IDENTITY(1,1) NOT NULL,
    		[DatabaseName] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[EventType] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[ObjectName] [varchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[ObjectType] [varchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[SqlCommand] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[EventDate] [datetime] NOT NULL CONSTRAINT [DF_EventsLog_EventDate]  DEFAULT (getdate()),
    		[LoginName] [varchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
    	) ON [PRIMARY]
    	alter table DatabaseChanges add
    	  constraint PK_DatabaseChanges primary key(LogId)
    	create index idx_DatabaseChanges_EventDate on [DatabaseChanges]([EventDate])
    	create index idx_DatabaseChanges_EventType on [DatabaseChanges]([EventType],[EventDate])
    End
    GO
    -- example:
    Use <Database name2>
    GO
    if exists (select * from sys.triggers where name = 'backup_objects')
    	Drop trigger backup_objects ON DATABASE 
    GO
    -- ddl trigger creation
    create trigger backup_objects
    on database
    for		create_procedure, alter_procedure, drop_procedure,
    		create_table, alter_table, drop_table
    as
    set nocount on
    declare @data xml
    set @data = EVENTDATA()
    insert into <Database name1>.dbo.DatabaseChanges(databasename, eventtype, objectname, objecttype, sqlcommand, loginname)
    values(
    	@data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'),
    	@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


    אורי כ.

    • סומן כתשובה על-ידי Itzik Elfasikave שבת 27 אוקטובר 2012 09:51
    יום ראשון 14 אוקטובר 2012 12:42
  • הי איציק,

    ל-SSMS אין יכולת כזאת, אבל אני ממליץ להתקין את ה-SSMS Tools Pack, שמתלבש על ה-SSMS, ויש לו הרבה דברים שימושיים.

    אחד מהם זה מה שאתה מחפש.

    ה-SSMS Tools Pack הוא חינמי עד גירסא 2012. בשביל להתקין אותו על 2012, כבר צריך לשלם.

    בהצלחה!

    -----------------------------
    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    • הוצע כתשובה על-ידי Ivan Radchenko יום ראשון 14 אוקטובר 2012 09:58
    • סומן כתשובה על-ידי Eran Sharvit יום שני 15 אוקטובר 2012 14:36
    יום ראשון 14 אוקטובר 2012 08:06
    מנחה דיון
  • תודה רבה .

    איציק


    elfasikave

    • סומן כתשובה על-ידי Itzik Elfasikave שבת 27 אוקטובר 2012 09:51
    יום ראשון 14 אוקטובר 2012 10:02

כל התגובות

  • הי איציק,

    ל-SSMS אין יכולת כזאת, אבל אני ממליץ להתקין את ה-SSMS Tools Pack, שמתלבש על ה-SSMS, ויש לו הרבה דברים שימושיים.

    אחד מהם זה מה שאתה מחפש.

    ה-SSMS Tools Pack הוא חינמי עד גירסא 2012. בשביל להתקין אותו על 2012, כבר צריך לשלם.

    בהצלחה!

    -----------------------------
    גיא גלנצר
    יועץ ומדריך SQL Server
    Madeira - SQL Server Services
    http://www.madeira.co.il

    • הוצע כתשובה על-ידי Ivan Radchenko יום ראשון 14 אוקטובר 2012 09:58
    • סומן כתשובה על-ידי Eran Sharvit יום שני 15 אוקטובר 2012 14:36
    יום ראשון 14 אוקטובר 2012 08:06
    מנחה דיון
  • תודה רבה .

    איציק


    elfasikave

    • סומן כתשובה על-ידי Itzik Elfasikave שבת 27 אוקטובר 2012 09:51
    יום ראשון 14 אוקטובר 2012 10:02
  • לגבי שינויים בסכמה  (כמו שציינת ADD או DROP TABLE ועוד) אתה יכול להתשמש ב DDL TRIGGERS

    בקוד המצורף יש דוגמא לתעוד שינויים בטבלאות ופרוצדורות.

    Use <Database name1>
    Go
    -- select * from DBUtil.dbo.DatabaseChanges order by EventDate
    if object_id('[DatabaseChanges]') is null
    Begin
    	CREATE TABLE [dbo].[DatabaseChanges](
    		[LogId] [int] IDENTITY(1,1) NOT NULL,
    		[DatabaseName] [varchar] (256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[EventType] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[ObjectName] [varchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[ObjectType] [varchar](25) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[SqlCommand] [varchar](max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
    		[EventDate] [datetime] NOT NULL CONSTRAINT [DF_EventsLog_EventDate]  DEFAULT (getdate()),
    		[LoginName] [varchar](256) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
    	) ON [PRIMARY]
    	alter table DatabaseChanges add
    	  constraint PK_DatabaseChanges primary key(LogId)
    	create index idx_DatabaseChanges_EventDate on [DatabaseChanges]([EventDate])
    	create index idx_DatabaseChanges_EventType on [DatabaseChanges]([EventType],[EventDate])
    End
    GO
    -- example:
    Use <Database name2>
    GO
    if exists (select * from sys.triggers where name = 'backup_objects')
    	Drop trigger backup_objects ON DATABASE 
    GO
    -- ddl trigger creation
    create trigger backup_objects
    on database
    for		create_procedure, alter_procedure, drop_procedure,
    		create_table, alter_table, drop_table
    as
    set nocount on
    declare @data xml
    set @data = EVENTDATA()
    insert into <Database name1>.dbo.DatabaseChanges(databasename, eventtype, objectname, objecttype, sqlcommand, loginname)
    values(
    	@data.value('(/EVENT_INSTANCE/DatabaseName)[1]', 'varchar(256)'),
    	@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


    אורי כ.

    • סומן כתשובה על-ידי Itzik Elfasikave שבת 27 אוקטובר 2012 09:51
    יום ראשון 14 אוקטובר 2012 12:42
  • חברים הרבה תודה על ההתייחסות והעזרה .

    איציק


    elfasikave

    שבת 27 אוקטובר 2012 09:51