Do you guys have any articles or links you can point me to on server side traces? I can't seem to find how to trace a change to a specific table.column.
Here is an example of my trigger using Northwind.Orders as an example. Feel free to critique this as well. Does my code to get hostname, username, etc seem valid?
--Northwind - Trigger to track changes to Orders.OrderDate
--Create table store log data
CREATE TABLE [Orders_Log] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[OrderID] [int] NOT NULL ,
[orig_OrderDate] [datetime] NULL ,
[new_OrderDate] [datetime] NULL ,
[Computer_Name] [varchar] (80) NULL ,
[Windows_user] [varchar] (80) NULL ,
[sql_login] [varchar] (80) NULL ,
[program_Name] [varchar] (80) NULL ,
[command] [varchar] (80) NULL ,
[MAC_address] [varchar] (80) NULL ,
[log_date] [datetime] NOT NULL DEFAULT (getdate())
) ON [PRIMARY]
GO
--Trigger to track changes to OrderDate
--drop trigger [track_OrderDate_change]
CREATE TRIGGER [track_OrderDate_change] ON [dbo].[Orders]
For UPDATE
AS
If Update(OrderDate)
Begin
Set Nocount On
insert into [Orders_Log]
(OrderID, orig_OrderDate, new_OrderDate,
Computer_Name, Windows_User, sql_login, program_name, command, mac_address)
select d.OrderID, d.OrderDate, i.OrderDate,
(SELECT TOP 1 hostname FROM [master].[dbo].[sysprocesses] WHERE spid = @@spid ),
(SELECT TOP 1 nt_username FROM [master].[dbo].[sysprocesses] WHERE spid = @@spid ),
(SELECT TOP 1 loginame FROM [master].[dbo].[sysprocesses] WHERE spid = @@spid ),
(SELECT TOP 1 program_name FROM [master].[dbo].[sysprocesses] WHERE spid = @@spid ),
(SELECT TOP 1 cmd FROM [master].[dbo].[sysprocesses] WHERE spid = @@spid ),
(SELECT TOP 1 net_address FROM [master].[dbo].[sysprocesses] WHERE spid = @@spid )
from [inserted] i, [deleted] d
Where i.OrderID = d.OrderID
End