它的功能是自动检查表的容量,超过一定的限制把数据导出到历史表中
使得用户都能最快速的访问这个大容量的表
脚本片段,下面有下载地址:
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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

下载地址:https://files.cnblogs.com/goody9807/Sql.rar