1
-- ======================================================
2 
3
-- 列出SQL SERVER 所有表,字段名,主键,类型,长度,小数位数等信息
4 
5
-- 在查询分析器里运行即可,可以生成一个表,导出到EXCEL中
6 
7
-- ======================================================
8 
9
Select
10 
11
( Case When A.Colorder = 1 Then D.Name Else '' End )表名,
12 
13
A.Colorder 字段序号,
14 
15
A.Name 字段名,
16 
17
( Case When Columnproperty ( A.Id,A.Name, ' Isidentity ' ) = 1 Then ' √ ' Else '' End ) 标识,
18 
19
( Case When ( Select Count ( * )
20 
21
From Sysobjects
22 
23
Where (Name In
24 
25
( Select Name
26 
27
From Sysindexes
28 
29
Where (Id = A.Id) And (Indid In
30 
31
( Select Indid
32 
33
From Sysindexkeys
34 
35
Where (Id = A.Id) And (Colid In
36 
37
( Select Colid
38 
39
From Syscolumns
40 
41
Where (Id = A.Id) And (Name = A.Name))))))) And
42 
43
(Xtype = ' Pk ' )) > 0 Then ' √ ' 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
( Case When A.Isnullable = 1 Then ' √ ' Else '' End ) 允许空,
54 
55
Isnull (E. Text , '' ) 默认值,
56 
57
Isnull (G. [ Value ] , '' ) As 字段说明
58 
59
From Syscolumns A Left Join Systypes B
60 
61
On A.Xtype = B.Xusertype
62 
63
Inner Join Sysobjects D
64 
65
On A.Id = D.Id And D.Xtype = ' U ' And D.Name <> ' Dtproperties '
66 
67
Left Join Syscomments E
68 
69
On A.Cdefault = E.Id
70 
71
Left Join Sysproperties G
72 
73
On A.Id = G.Id And A.Colid = G.Smallid
74 
75
Order By A.Id,A.Colorder
76 
77
列出SQL SERVER 所有表、字段定义,类型,长度,一个值等信息
78 
79
并导出到Excel 中
80 
81
-- ======================================================
82 
83
-- Export all user tables definition and one sample value
84 
85
-- jan-13-2003,Dr.Zhang
86 
87
-- ======================================================
88 
89
在查询分析器里运行:
90 
91
SET ANSI_NULLS OFF
92 
93
GO
94 
95
SET NOCOUNT ON
96 
97
GO
98 
99 
100 
101
SET LANGUAGE ' Simplified Chinese '
102 
103
go
104 
105
DECLARE @tbl nvarchar ( 200 ), @fld nvarchar ( 200 ), @sql nvarchar ( 4000 ), @maxlen int , @sample nvarchar ( 40 )
106 
107 
108 
109
SELECT d.name TableName,a.name FieldName,b.name TypeName,a.length Length,a.isnullable IS_NULL INTO #t
110 
111
FROM syscolumns a, systypes b,sysobjects d
112 
113
WHERE a.xtype = b.xusertype and a.id = d.id and d.xtype = ' U '
114 
115 
116 
117
DECLARE read_cursor CURSOR
118 
119
FOR SELECT TableName,FieldName FROM #t
120 
121 
122 
123
SELECT TOP 1 ' _TableName ' TableName,
124 
125
' FieldName ' FieldName, ' TypeName ' TypeName,
126 
127
' Length ' Length, ' IS_NULL ' IS_NULL,
128 
129
' MaxLenUsed ' AS MaxLenUsed, ' Sample Value ' Sample,
130 
131
' Comment ' Comment INTO #tc FROM #t
132 
133 
134 
135
OPEN read_cursor
136 
137 
138 
139
FETCH NEXT FROM read_cursor INTO @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=(SELECT max(len(cast( ' + @fld + ' as nvarchar))) FROM ' + @tbl + ' ) '
150 
151
-- PRINT @sql
152 
153
EXEC SP_EXECUTESQL @sql ,N ' @maxlen int OUTPUT ' , @maxlen OUTPUT
154 
155
-- print @maxlen
156 
157
SET @sql = N ' SET @sample=(SELECT TOP 1 cast( ' + @fld + ' as nvarchar) FROM ' + @tbl + ' WHERE len(cast( ' + @fld + ' as nvarchar))= ' + convert ( nvarchar ( 5 ), @maxlen ) + ' ) '
158 
159
EXEC SP_EXECUTESQL @sql ,N ' @sample varchar(30) OUTPUT ' , @sample OUTPUT
160 
161
-- for quickly
162 
163
-- SET @sql=N'SET @sample=convert(varchar(20),(SELECT TOP 1 '+@fld+' FROM '+
164 
165
-- @tbl+' order by 1 desc ))'
166 
167
PRINT @sql
168 
169
print @sample
170 
171
print @tbl
172 
173
EXEC SP_EXECUTESQL @sql ,N ' @sample nvarchar(30) OUTPUT ' , @sample OUTPUT
174 
175
INSERT INTO #tc SELECT * , ltrim ( ISNULL ( @maxlen , 0 )) as MaxLenUsed,
176 
177
convert ( nchar ( 20 ), ltrim ( ISNULL ( @sample , ' ' ))) as Sample, ' ' Comment FROM #t where TableName = @tbl and FieldName = @fld
178 
179
END
180 
181
FETCH NEXT FROM read_cursor INTO @tbl , @fld
182 
183
END
184 
185 
186 
187
CLOSE read_cursor
188 
189
DEALLOCATE read_cursor
190 
191
GO
192 
<
一些有用的SQL Server语句和存储过程
comments powered by Disqus