SQL Server 2012和我正在使用SQL Server Management Studio 2008版本10.我可以使用以下方式从架构获取所有表的列表:
SELECT TABLE_NAME
FROM information_schema.tables;
我可以使用:
获取有关特定表格的所有详细信息sp_help table1;
有没有办法可以获取xls中架构中所有表的所有细节(数据定义)?像上面两个查询一样(这不是有效的SQL):
sp_help in (SELECT TABLE_NAME FROM information_schema.tables)
答案 0 :(得分:1)
基本上直接从存储过程中进行一点修改。请注意,这仅显示SP的一部分。如果需要,您可能必须自己进入SP以获得更多。您只需右键单击并选择修改即可。
--SP_HELP Table1
DECLARE @dbname SYSNAME
,@no VARCHAR(35), @yes VARCHAR(35), @none VARCHAR(35)
SELECT @no = 'no', @yes = 'yes', @none = 'none'
DECLARE @precscaletypes NVARCHAR(150)
SELECT @precscaletypes = N'TINYINT,SMALLINT,DECIMAL,INT,BIGINT,REAL,MONEY,FLOAT,NUMERIC,SMALLMONEY,DATE,TIME,DATETIME2,DATETIMEOFFSET,'
SELECT
'Column_name' = name,
'Type' = TYPE_NAME(user_type_id),
'Computed' = CASE WHEN ColumnProperty(object_id, name, 'IsComputed') = 0 THEN @no ELSE @yes END,
'Length' = CONVERT(INT, max_length),
'Prec' = CASE WHEN CHARINDEX(TYPE_NAME(system_type_id) + ',', @precscaletypes) > 0
THEN CONVERT(CHAR(5),ColumnProperty(object_id, name, 'precision'))
ELSE ' ' END,
'Scale' = CASE WHEN CHARINDEX(TYPE_NAME(system_type_id) + ',', @precscaletypes) > 0
THEN CONVERT(CHAR(5),OdbcScale(system_type_id,scale))
ELSE ' ' END,
'Nullable' = CASE WHEN IS_NULLABLE = 0 THEN 'no' ELSE 'yes' END,
'TrimTrailingBlanks' = CASE ColumnProperty(OBJECT_ID, name, 'UsesAnsiTrim')
WHEN 1 THEN @no
WHEN 0 THEN @yes
ELSE '(n/a)' END,
'FixedLenNullInSource' = CASE
WHEN TYPE_NAME(system_type_id) NOT IN ('VARBINARY','VARCHAR','BINARY','CHAR')
THEN '(n/a)'
WHEN IS_NULLABLE = 0 THEN @no ELSE @yes
END,
'Collation' = collation_name
FROM sys.all_columns WHERE OBJECT_ID IN (SELECT OBJECT_ID(TABLE_NAME) FROM INFORMATION_SCHEMA.TABLES)