{"id":73,"date":"2011-01-17T21:48:00","date_gmt":"2011-01-17T13:48:00","guid":{"rendered":"http:\/\/localhost\/?p=25"},"modified":"2014-01-16T21:53:17","modified_gmt":"2014-01-16T13:53:17","slug":"how_to_save_the_database_level_modified_records","status":"publish","type":"post","link":"http:\/\/www.royalwzy.com\/?p=73","title":{"rendered":"\u5982\u4f55\u4fdd\u5b58\u6570\u636e\u5e93\u7ea7\u522b\u4fee\u6539\u7684\u8bb0\u5f55"},"content":{"rendered":"<p>\u524d\u51e0\u5929\u5728\u8bba\u575b\u4e0a\u53d1\u4e86\u4e00\u4e2a\u5e16\u5b50&#8221;<a href=\"http:\/\/topic.csdn.net\/u\/20110111\/09\/7953ab29-0e21-42cf-b858-a52f6c6562d0.html\">SQL Server 2008\u5982\u4f55\u67e5\u770b\u8868\u7ed3\u6784\u4fee\u6539\u8bb0\u5f55<\/a>&#8220;,\u5f88\u611f\u8c22\u9a6c\u4e0a\u6709\u4eba\u70ed\u5fc3\u56de\u590d\u5e76\u7ed9\u51fa\u5efa\u8bae,\u73b0\u5728\u6211\u628a\u95ee\u9898\u7684\u539f\u56e0\u548c\u5230\u6700\u540e\u7684\u89e3\u51b3\u529e\u6cd5\u4e0e\u5927\u5bb6\u5206\u4eab,\u5e0c\u671b\u5bf9\u5927\u5bb6\u6709\u5e2e\u52a9.<\/p>\n<p>\u95ee\u9898:\u4e0a\u5348\u4e00\u4e0a\u73ed\u5c31\u6709\u7528\u6237\u6253\u7535\u8bdd\u8bf4\u7cfb\u7edf\u51fa\u4e86\u95ee\u9898,\u7b2c\u4e00\u53cd\u5e94\u662f\u9a6c\u4e0a\u53bb\u770b\u7cfb\u7edf\u662f\u5426\u6709BUG,\u7ecf\u8fc7\u6d4b\u8bd5\u4e4b\u540e\u53d1\u73b0\u7cfb\u7edf\u662f\u5b8c\u5168\u6ca1\u6709\u95ee\u9898\u7684,\u4f46\u662f\u539f\u6765\u80fd\u4f7f\u7528\u6b64\u9875\u9762\u7684\u7528\u6237\u7adf\u7136\u90fd\u6ca1\u6709\u4e86\u6743\u9650,\u518d\u6b21DEBUG\u7cfb\u7edf\u65f6,\u53d1\u73b0\u4ece\u6570\u636e\u5e93\u7684\u6743\u9650\u8868\u91cc\u62ff\u5230\u7684\u6570\u636e\u90fd\u662f\u4e71\u7801,\u63a8\u6d4b\u5e94\u8be5\u662f\u6709\u4eba\u4fee\u6539\u4e86\u8868\u7684&#8221;\u6392\u5e8f\u89c4\u5219&#8221;,\u4f7f\u5f97\u4e2d\u6587\u90e8\u5206\u90fd\u53d8\u6210\u4e86\u95ee\u53f7,\u6700\u90c1\u95f7\u7684\u662f\u67e5\u770b\u65e5\u5fd7\u4e4b\u540e\u4e5f\u4e0d\u77e5\u9053\u662f\u8c01\u4fee\u6539\u7684,\u8d76\u7d27\u5148\u628a\u6570\u636e\u5e93\u6062\u590d,\u4e4b\u540e\u5206\u6790\u539f\u56e0\u4e3b\u8981\u6709\u4ee5\u4e0b\u51e0\u70b9:<\/p>\n<p>1.\u5bf9\u6570\u636e\u5e93\u6743\u9650\u7c92\u5ea6\u5212\u5206\u4e0d\u660e\u786e;<\/p>\n<p>2.\u5bf9\u6570\u636e\u5e93\u4fee\u6539\u7684\u65e5\u5fd7\u6ca1\u6709\u8bb0\u5f55;<\/p>\n<p>\u89e3\u51b3\u529e\u6cd5:<\/p>\n<p>1.\u521b\u5efa\u6570\u636e\u5e93\u4fee\u6539\u65e5\u5fd7\u8868(\u5982\u4f55\u5bb3\u6015\u4e0d\u5c0f\u5fc3\u88ab\u5220\u9664,\u53ef\u4ee5\u53c2\u8003<a href=\"http:\/\/blog.csdn.net\/royalwzy\/archive\/2011\/01\/17\/6147993.aspx\">\u9632\u6b62\u8868\u88ab\u5220\u9664\u7684\u89e6\u53d1\u5668<\/a>)<\/p>\n<div>\n<ol start=\"1\">\n<li>USE\u00a0[QSBN]<\/li>\n<li>GO<\/li>\n<li><\/li>\n<li>SET\u00a0ANSI_NULLS\u00a0ON<\/li>\n<li>GO<\/li>\n<li><\/li>\n<li>SET\u00a0QUOTED_IDENTIFIER\u00a0ON<\/li>\n<li>GO<\/li>\n<li><\/li>\n<li>&#8212;\u00a0\u521b\u5efa\u6570\u636e\u5e93\u4fee\u6539\u65e5\u5fd7\u8868<\/li>\n<li>CREATE\u00a0TABLE\u00a0dbo.[DatabaseModifiedLog](<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[ID]\u00a0INT\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0IDENTITY(1,1)\u00a0NOT\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[EventType]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(500)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[PostTime]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DATETIME\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[ClientUser]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(10)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[ServerName]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[LoginName]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[UserName]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[DatabaseName]\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[SchemaName]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[ObjectName]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[ObjectType]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[CommandText]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(MAX)\u00a0NULL,<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[EventData]\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0XML\u00a0NULL,<\/li>\n<li>PRIMARY\u00a0KEY\u00a0CLUSTERED<\/li>\n<li>([ID]\u00a0ASC)<\/li>\n<li>WITH\u00a0(PAD_INDEX\u00a0\u00a0=\u00a0OFF,\u00a0STATISTICS_NORECOMPUTE\u00a0\u00a0=\u00a0OFF,\u00a0IGNORE_DUP_KEY\u00a0=\u00a0OFF,\u00a0ALLOW_ROW_LOCKS\u00a0\u00a0=\u00a0ON,\u00a0ALLOW_PAGE_LOCKS\u00a0\u00a0=\u00a0ON)\u00a0ON\u00a0[PRIMARY]<\/li>\n<li>)ON\u00a0[PRIMARY]<\/li>\n<li>GO<\/li>\n<\/ol>\n<\/div>\n<p>2.\u521b\u5efa\u6570\u636e\u5e93\u7ea7\u522b\u7684\u89e6\u53d1\u5668<\/p>\n<div>\n<ol start=\"1\">\n<li>&#8212;\u00a0\u521b\u5efa\u6570\u636e\u5e93\u7ea7\u522b\u7684\u89e6\u53d1\u5668<\/li>\n<li>CREATE\u00a0TRIGGER\u00a0[DataBase_DDL_TRIGGER]<\/li>\n<li>ON\u00a0DATABASE<\/li>\n<li>FOR\u00a0DDL_DATABASE_LEVEL_EVENTS<\/li>\n<li>AS<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@EventData\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0XML<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@EventType\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@PostTime\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0DATETIME<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@SPID\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(6)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@ClientUser\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(50)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@ServerName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@LoginName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@UserName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@DatabaseName\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@SchemaName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@ObjectName\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@ObjectType\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(250)<\/li>\n<li>\u00a0\u00a0DECLARE\u00a0@CommandText\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0NVARCHAR(MAX)<\/li>\n<li><\/li>\n<li>\u00a0\u00a0SET\u00a0@EventData\u00a0=\u00a0EVENTDATA();<\/li>\n<li>\u00a0\u00a0SET\u00a0@EventType\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/EventType[1])&#8217;,\u00a0&#8216;NVARCHAR(250)&#8217;)<\/li>\n<li>\u00a0\u00a0SET\u00a0@PostTime\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/PostTime[1])&#8217;,\u00a0&#8216;DATETIME&#8217;)<\/li>\n<li>\u00a0\u00a0SET\u00a0@SPID\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/SPID[1])&#8217;,\u00a0&#8216;NVARCHAR(6)&#8217;)<\/li>\n<li>\u00a0\u00a0SELECT\u00a0@ClientUser\u00a0=\u00a0hostname\u00a0FROM\u00a0master..sysprocesses\u00a0WHERE\u00a0spid\u00a0=\u00a0@SPID<\/li>\n<li>\u00a0\u00a0SET\u00a0@ServerName\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/ServerName[1])&#8217;,\u00a0&#8216;NVARCHAR(250)&#8217;)<\/li>\n<li>\u00a0\u00a0SET\u00a0@LoginName\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/LoginName[1])&#8217;,\u00a0&#8216;NVARCHAR(250)&#8217;)<\/li>\n<li>\u00a0\u00a0SET\u00a0@UserName\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/UserName[1])&#8217;,\u00a0&#8216;NVARCHAR(250)&#8217;)<\/li>\n<li>\u00a0\u00a0SET\u00a0@DatabaseName\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/DatabaseName[1])&#8217;,\u00a0&#8216;NVARCHAR(250)&#8217;)<\/li>\n<li>\u00a0\u00a0SET\u00a0@SchemaName\u00a0\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/SchemaName[1])&#8217;,\u00a0&#8216;NVARCHAR(250)&#8217;)<\/li>\n<li>\u00a0\u00a0SET\u00a0@ObjectName\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/ObjectName[1])&#8217;,\u00a0&#8216;NVARCHAR(250)&#8217;)<\/li>\n<li>\u00a0\u00a0SET\u00a0@ObjectType\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/ObjectType[1])&#8217;,\u00a0&#8216;NVARCHAR(250)&#8217;)<\/li>\n<li>\u00a0\u00a0SET\u00a0@CommandText\u00a0=\u00a0@EventData.value(&#8216;(\/EVENT_INSTANCE[1]\/TSQLCommand[1]\/CommandText[1])&#8217;,\u00a0&#8216;NVARCHAR(MAX)&#8217;)<\/li>\n<li><\/li>\n<li>&#8212;\u00a0\u5c06\u8bb0\u5f55\u63d2\u5165\u5230\u6570\u636e\u5e93<\/li>\n<li>INSERT\u00a0INTO\u00a0[dbo].[DatabaseModifiedLog]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0([EventType]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[PostTime]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[ClientUser]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[ServerName]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[LoginName]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[UserName]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[DatabaseName]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[SchemaName]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[ObjectName]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[ObjectType]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[CommandText]<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,[EventData])<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0VALUES<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0(@EventType<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@PostTime<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@ClientUser<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@ServerName<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@LoginName<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@UserName<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@DatabaseName<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@SchemaName<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@ObjectName<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@ObjectType<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@CommandText<\/li>\n<li>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0,@EventData)<\/li>\n<li>GO<\/li>\n<li><\/li>\n<li>SET\u00a0ANSI_NULLS\u00a0OFF<\/li>\n<li>GO<\/li>\n<li><\/li>\n<li>SET\u00a0QUOTED_IDENTIFIER\u00a0OFF<\/li>\n<li>GO<\/li>\n<li><\/li>\n<li>DISABLE\u00a0TRIGGER\u00a0[DataBase_DDL_TRIGGER]\u00a0ON\u00a0DATABASE<\/li>\n<li>GO<\/li>\n<li><\/li>\n<li>ENABLE\u00a0TRIGGER\u00a0[DataBase_DDL_TRIGGER]\u00a0ON\u00a0DATABASE<\/li>\n<li>GO<\/li>\n<\/ol>\n<\/div>\n<p>3.\u6267\u884cDDL\u8bed\u53e5\u4e4b\u540e,\u67e5\u770b\u65e5\u5fd7\u8868\u4e2d\u6570\u636e,\u5982\u56fe:<\/p>\n<p><img decoding=\"async\" alt=\"\" src=\"http:\/\/hi.csdn.net\/attachment\/201101\/17\/0_129527175957va.gif\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u524d\u51e0\u5929\u5728\u8bba\u575b\u4e0a\u53d1\u4e86\u4e00\u4e2a\u5e16\u5b50&#8221;SQL Server 2008\u5982\u4f55\u67e5\u770b\u8868\u7ed3\u6784\u4fee\u6539\u8bb0\u5f55&#8220;,\u5f88 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[16],"class_list":["post-73","post","type-post","status-publish","format-standard","hentry","category-sqlserver","tag-sql_server_2008_r2"],"_links":{"self":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/posts\/73","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=73"}],"version-history":[{"count":0,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=\/wp\/v2\/posts\/73\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=73"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=73"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.royalwzy.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=73"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}