一个用来自动管理大容量表的Sql脚本


它的功能是自动检查表的容量,超过一定的限制把数据导出到历史表中

 使得用户都能最快速的访问这个大容量的表


脚本片段,下面有下载地址:

  1 use  BaiheCRMLogging
  2 go
  3
  4 -- 创建计算 @formalRange 的函数
  5 CREATE   FUNCTION  GetFormalRange()
  6 RETURNS   nvarchar ( 10 )
  7 WITH   EXECUTE   AS  CALLER
  8 AS
  9 BEGIN
 10      declare   @formalRange   nvarchar ( 10 )    
 11      declare   @now   datetime
 12      set   @now   =   getdate ()
 13      set   @formalRange   =   Convert ( nvarchar ( 10 ), Convert ( nvarchar ( 4 ), Year ( @now )) + ' - ' + Convert ( nvarchar ( 2 ), Month ( @now ) - 1 ) + ' -01 ' )    
 14      RETURN ( @formalRange )
 15 END ;
 16 GO
 17
 18 -- 创建计算 @nextRange 的函数
 19 CREATE   FUNCTION  GetNextRange()
 20 RETURNS   nvarchar ( 10 )
 21 WITH   EXECUTE   AS  CALLER
 22 AS
 23 BEGIN
 24      declare   @nextRange   nvarchar ( 10 )    
 25      declare   @now   datetime
 26      set   @now   =   getdate ()
 27      set   @nextRange   =   Convert ( nvarchar ( 10 ), Convert ( nvarchar ( 4 ), Year ( @now )) + ' - ' + Convert ( nvarchar ( 2 ), Month ( @now ) + 1 ) + ' -01 ' )    
 28      RETURN ( @nextRange )
 29 END ;
 30 GO
 31
 32 -- 创建计算@currentRange的函数
 33 CREATE   FUNCTION  GetCurrentRange()
 34 RETURNS   nvarchar ( 10 )
 35 WITH   EXECUTE   AS  CALLER
 36 AS
 37 BEGIN
 38      declare   @currentRange   nvarchar ( 10 )    
 39      declare   @now   datetime
 40      set   @now   =   getdate ()
 41      set   @currentRange   =   Convert ( nvarchar ( 10 ), Convert ( nvarchar ( 4 ), Year ( @now )) + ' - ' + Convert ( nvarchar ( 2 ), Month ( @now )) + ' -01 ' )
 42      RETURN ( @currentRange )
 43 END ;
 44 GO
 45
 46 -- 日志分区函数
 47 create  partition  function  LogHistoryPF1( datetime )
 48 as  range  left   for   values (dbo.GetCurrentRange());
 49 go
 50
 51 -- 日志分区架构
 52 CREATE  PARTITION SCHEME  [ LogHistoryPS1 ]
 53 AS  PARTITION  [ LogHistoryPF1 ]
 54 TO  ( [ PRIMARY ] , [ PRIMARY ] );
 55 go
 56
 57 -- 日志分区表
 58 create   table  LogHistory
 59 (
 60     LogId  bigint   not   null   Identity ( 1 , 1 ),
 61     Operator  nvarchar ( 36 not   null ,
 62     OperateType  tinyint   not   null ,
 63     OperateTime  datetime   not   null ,
 64     EntityName  nvarchar ( 30 null ,
 65     EntityGuid  uniqueidentifier   null ,    
 66     OriginalData  nvarchar ( max null ,
 67     ModifiedData  nvarchar ( max null
 68 on  LogHistoryPS1(OperateTime);
 69
 70 go
 71
 72 -- 归档分区函数
 73 create  partition  function  LogArchivePF1( datetime )
 74 as  range  left   for   values (dbo.GetCurrentRange());
 75 go
 76
 77 -- 归档分区架构
 78 CREATE  PARTITION SCHEME  [ LogArchivePS1 ]
 79 AS  PARTITION  [ LogArchivePF1 ]
 80 TO  ( [ PRIMARY ] , [ PRIMARY ] );
 81 GO
 82
 83 -- 归档分区表
 84 create   table  LogArchive
 85 (
 86     LogId  bigint   not   null   Identity ( 1 , 1 ),
 87     Operator  nvarchar ( 36 not   null ,
 88     OperateType  tinyint   not   null ,
 89     OperateTime  datetime   not   null ,
 90     EntityName  nvarchar ( 30 null ,
 91     EntityGuid  uniqueidentifier   null ,    
 92     OriginalData  nvarchar ( max null ,
 93     ModifiedData  nvarchar ( max null
 94 on  LogArchivePS1(OperateTime);
 95
 96 go
 97
 98 -- 增加主键约束
 99
100 ALTER   TABLE   [ LogHistory ]   WITH   CHECK   ADD  
101      CONSTRAINT   [ PK_LogHistory_LogID ]   PRIMARY   KEY   CLUSTERED  
102     (
103          [ OperateTime ]
104          [ LogID ]
105     )   ON   [ LogHistoryPS1 ]  (OperateTime);
106 GO
107
108 ALTER   TABLE   [ LogArchive ]   WITH   CHECK   ADD  
109      CONSTRAINT   [ PK_LogArchive_LogID ]   PRIMARY   KEY   CLUSTERED  
110     (
111          [ OperateTime ]
112          [ LogID ]
113     )   ON   [ LogArchivePS1 ]  (OperateTime);
114 GO
115
116 -- 创建索引
117 CREATE   INDEX   [ IX_LogHistory_Operator ]   ON   [ LogHistory ] ( [ Operator ] ON   [ LogHistoryPS1 ]  (OperateTime);
118 GO
119 CREATE   INDEX   [ IX_LogArchive_Operator ]   ON   [ LogArchive ] ( [ Operator ] ON   [ LogArchivePS1 ]  (OperateTime);
120 GO
121
122 -- 添加日志
123 Create   proc  usp_LogHistory_Create
124 (
125 @Operator   nvarchar ( 36 ),
126 @OperateType   tinyint ,
127 @OperateTime   datetime ,
128 @EntityName   nvarchar ( 30 ),
129 @EntityGuid   uniqueidentifier ,
130 @OriginalDataString   nvarchar ( max ),
131 @ModifiedDataString   nvarchar ( max )    
132 )
133 as
134 insert   into  LogHistory(Operator,OperateType,OperateTime,EntityName,EntityGuid,OriginalData,ModifiedData)
135 values ( @Operator , @OperateType , @OperateTime , @EntityName , @EntityGuid , @OriginalDataString , @ModifiedDataString )
136 go
137
138 -- select * from LogHistory
139
140 -- truncate table LogHistory

下载地址:http://files.cnblogs.com/goody9807/Sql.rar
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值