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

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