The Last Day Of Summer

.NET技术 C# ASP.net ActiveReport SICP 代码生成 报表应用 RDLC
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

获取数据库表的一些信息

Posted on 2004-07-20 13:14  Cure  阅读(1346)  评论(0编辑  收藏  举报
获取数据库表的一些信息:

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[GetDatabaseSchemaInformation]'and OBJECTPROPERTY(id, N'IsProcedure'= 1)
drop procedure [dbo].[GetDatabaseSchemaInformation]
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

CREATE  Procedure dbo.GetDatabaseSchemaInformation AS
select cols.TABLE_NAME As 'Table Name',
      cols.COLUMN_NAME 
as 'Column Name',
      cols.DATA_TYPE 
as 'Data Type',
                  
case
                        
when cols.DATA_TYPE = 'bigint' then '8 bytes'
                        
when cols.DATA_TYPE = 'int' then '4 bytes'
                        
when cols.DATA_TYPE = 'smallint' then '2 bytes'
                        
when cols.DATA_TYPE = 'tinyint' then '1 byte'
                        
when cols.DATA_TYPE = 'bit' then '1 byte'
                        
when cols.DATA_TYPE = 'money' then '8 bytes'
                        
when cols.DATA_TYPE = 'smallmoney' then '4 bytes'
                        
when cols.DATA_TYPE = 'text' then '16 bytes'
                        
when cols.DATA_TYPE = 'datetime' then '8 bytes'
                        
when cols.DATA_TYPE = 'smalldatetime' then '4 bytes'
                        
when cols.DATA_TYPE = 'uniqueidentifier' then '16 bytes'
                        
when cols.DATA_TYPE = 'decimal' then convert (varchar,cols.NUMERIC_PRECISION) + '' + convert(varchar, cols.NUMERIC_SCALE)
                        
else convert(varchar, cols.CHARACTER_MAXIMUM_LENGTH) + ' chars'
                  
end as 'Length',
                  
case
                        
when kcu.CONSTRAINT_NAME is null then 'NO' else 'YES'
                  
end as 'PK?',
                  
upper(cols.IS_NULLABLE) as 'Allows Nulls',
                  
isnull(cols.COLUMN_DEFAULT, ''as 'Default Value'
from INFORMATION_SCHEMA.COLUMNS cols
      
join INFORMATION_SCHEMA.TABLES tabs on cols.TABLE_NAME = tabs.TABLE_NAME and
tabs.TABLE_TYPE 
= 'BASE TABLE'
      
left join INFORMATION_SCHEMA.CONSTRAINT_TABLE_USAGE ctu on cols.TABLE_NAME = ctu.TABLE_NAME and ctu.CONSTRAINT_NAME like 'PK%'
      
left join INFORMATION_SCHEMA.KEY_COLUMN_USAGE kcu on ctu.CONSTRAINT_NAME = 
kcu.CONSTRAINT_NAME 
and cols.COLUMN_NAME = kcu.COLUMN_NAME
where tabs.TABLE_NAME <> 'dtproperties'
order by cols.TABLE_NAME, cols.ORDINAL_POSITION

GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO