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



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

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


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

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

    下载地址:https://files.cnblogs.com/goody9807/Sql.rar
  • 相关阅读:
    均匀采样单位圆
    3Sum
    查看SQL语句在SQL Server上的执行时间
    ASP.NET页面请求处理
    原型模式
    ASP.NET页面错误处理
    电子商务推荐位商品模型设计
    HttpModule与HttpHandler使用
    装饰者模式
    ASP.NET编程模型
  • 原文地址:https://www.cnblogs.com/goody9807/p/868575.html
Copyright © 2020-2023  润新知