1
--======================================================
2
3
--列出SQLSERVER所有表,字段名,主键,类型,长度,小数位数等信息
4
5
--在查询分析器里运行即可,可以生成一个表,导出到EXCEL中
6
7
--======================================================
8
9
Select
10
11
(CaseWhenA.Colorder=1ThenD.NameElse''End)表名,
12
13
A.Colorder字段序号,
14
15
A.Name字段名,
16
17
(CaseWhenColumnproperty(A.Id,A.Name,'Isidentity')=1Then'√'Else''End)标识,
18
19
(CaseWhen(SelectCount(*)
20
21
FromSysobjects
22
23
Where(NameIn
24
25
(SelectName
26
27
FromSysindexes
28
29
Where(Id=A.Id)And(IndidIn
30
31
(SelectIndid
32
33
FromSysindexkeys
34
35
Where(Id=A.Id)And(ColidIn
36
37
(SelectColid
38
39
FromSyscolumns
40
41
Where(Id=A.Id)And(Name=A.Name)))))))And
42
43
(Xtype='Pk'))>0Then'√'Else''End)主键,
44
45
B.Name类型,
46
47
A.Length占用字节数,
48
49
Columnproperty(A.Id,A.Name,'Precision')As长度,
50
51
Isnull(Columnproperty(A.Id,A.Name,'Scale'),0)As小数位数,
52
53
(CaseWhenA.Isnullable=1Then'√'Else''End)允许空,
54
55
Isnull(E.Text,'')默认值,
56
57
Isnull(G.[Value],'')As字段说明
58
59
FromSyscolumnsALeftJoinSystypesB
60
61
OnA.Xtype=B.Xusertype
62
63
InnerJoinSysobjectsD
64
65
OnA.Id=D.IdAndD.Xtype='U'AndD.Name<>'Dtproperties'
66
67
LeftJoinSyscommentsE
68
69
OnA.Cdefault=E.Id
70
71
LeftJoinSyspropertiesG
72
73
OnA.Id=G.IdAndA.Colid=G.Smallid
74
75
OrderByA.Id,A.Colorder
76
77
列出SQLSERVER所有表、字段定义,类型,长度,一个值等信息
78
79
并导出到Excel中
80
81
--======================================================
82
83
--Exportallusertablesdefinitionandonesamplevalue
84
85
--jan-13-2003,Dr.Zhang
86
87
--======================================================
88
89
在查询分析器里运行:
90
91
SETANSI_NULLSOFF
92
93
GO
94
95
SETNOCOUNTON
96
97
GO
98
99
100
101
SETLANGUAGE'SimplifiedChinese'
102
103
go
104
105
DECLARE@tblnvarchar(200),@fldnvarchar(200),@sqlnvarchar(4000),@maxlenint,@samplenvarchar(40)
106
107
108
109
SELECTd.nameTableName,a.nameFieldName,b.nameTypeName,a.lengthLength,a.isnullableIS_NULLINTO#t
110
111
FROMsyscolumnsa,systypesb,sysobjectsd
112
113
WHEREa.xtype=b.xusertypeanda.id=d.idandd.xtype='U'
114
115
116
117
DECLAREread_cursorCURSOR
118
119
FORSELECTTableName,FieldNameFROM#t
120
121
122
123
SELECTTOP1'_TableName'TableName,
124
125
'FieldName'FieldName,'TypeName'TypeName,
126
127
'Length'Length,'IS_NULL'IS_NULL,
128
129
'MaxLenUsed'ASMaxLenUsed,'SampleValue'Sample,
130
131
'Comment'CommentINTO#tcFROM#t
132
133
134
135
OPENread_cursor
136
137
138
139
FETCHNEXTFROMread_cursorINTO@tbl,@fld
140
141
WHILE(@@fetch_status<>-1)---failes
142
143
BEGIN
144
145
IF(@@fetch_status<>-2)--Missing
146
147
BEGIN
148
149
SET@sql=N'SET@maxlen=(SELECTmax(len(cast('+@fld+'asnvarchar)))FROM'+@tbl+')'
150
151
--PRINT@sql
152
153
EXECSP_EXECUTESQL@sql,N'@maxlenintOUTPUT',@maxlenOUTPUT
154
155
--print@maxlen
156
157
SET@sql=N'SET@sample=(SELECTTOP1cast('+@fld+'asnvarchar)FROM'+@tbl+'WHERElen(cast('+@fld+'asnvarchar))='+convert(nvarchar(5),@maxlen)+')'
158
159
EXECSP_EXECUTESQL@sql,N'@samplevarchar(30)OUTPUT',@sampleOUTPUT
160
161
--forquickly
162
163
--SET@sql=N'SET@sample=convert(varchar(20),(SELECTTOP1'+@fld+'FROM'+
164
165
--@tbl+'orderby1desc))'
166
167
PRINT@sql
168
169
print@sample
170
171
print@tbl
172
173
EXECSP_EXECUTESQL@sql,N'@samplenvarchar(30)OUTPUT',@sampleOUTPUT
174
175
INSERTINTO#tcSELECT*,ltrim(ISNULL(@maxlen,0))asMaxLenUsed,
176
177
convert(nchar(20),ltrim(ISNULL(@sample,'')))asSample,''CommentFROM#twhereTableName=@tblandFieldName=@fld
178
179
END
180
181
FETCHNEXTFROMread_cursorINTO@tbl,@fld
182
183
END
184
185
186
187
CLOSEread_cursor
188
189
DEALLOCATEread_cursor
190
191
GO
192
193
194
195
SETANSI_NULLSON
196
197
GO
198
199
SETNOCOUNTOFF
200
201
GO
202
203
selectcount(*)from#t
204
205
DROPTABLE#t
206
207
GO
208
209
210
211
selectcount(*)-1from#tc
212
213
214
215
select*into##txfrom#tcorderbytablename
216
217
DROPTABL

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

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

217
