`
happmaoo
  • 浏览: 4334283 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一些有用的SQL Server语句和存储过程

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

相关推荐

Global site tag (gtag.js) - Google Analytics