SQL语句来抓取表名,视图和存储过程,按模式sorting

是否有一个SQL语句,将按照模式名称sorting,列出MS SQL Server数据库中所有表,视图和存储过程的名称?

我想从列表中生成一个Excel电子表格,其中包括:模式,types(表,视图,存储过程)和名称。

以下是你所要求的:

select s.name as [Schema], o.type_desc as [Type], o.name as [Name] from sys.all_objects o inner join sys.schemas s on s.schema_id = o.schema_id where o.type in ('U', 'V', 'P') -- tables, views, and stored procedures order by s.name 

您可以使用系统视图INFORMATION_SCHEMA.TABLESINFORMATION_SCHEMA.VIEWSINFORMATION_SCHEMA.COLUMNS创build查询

编辑:哦和INFORMATION_SCHEMA.ROUTINES存储过程

从…开始

 select * from sys.sysobjects 

编辑:现在与架构

 select * from sys.sysobjects inner join sys.schemas on sys.sysobjects.uid = sys.schemas.schema_id 

有一些内置的系统视图,您可以使用:

  • sys.views
  • SYS.TABLES
  • sys.procedures
  • sys.schema

有关目录视图 MSDN的更多信息。

尝试:

 SELECT ROUTINE_SCHEMA,ROUTINE_TYPE ,ROUTINE_NAME FROM INFORMATION_SCHEMA.ROUTINES UNION SELECT TABLE_SCHEMA,TABLE_TYPE,TABLE_NAME FROM INFORMATION_SCHEMA.TABLES UNION SELECT TABLE_SCHEMA,'VIEW' ,TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS ORDER BY ROUTINE_SCHEMA,ROUTINE_TYPE ,ROUTINE_NAME 

如果您需要挖掘列和它们的数据types,试试这个SQL。 您可以将这些选项用于sysobjects.xtype(U =用户表,P =存储过程,V =查看)

 SELECT object_type = sysobjects.xtype, table_name = sysobjects.name, column_name = syscolumns.name, datatype = systypes.name, length = syscolumns.length FROM sysobjects JOIN syscolumns ON sysobjects.id = syscolumns.id JOIN systypes ON syscolumns.xtype=systypes.xtype WHERE sysobjects.xtype='U' AND syscolumns.name LIKE '%[column_name_here]%' AND sysobjects.name LIKE '%[table or Stored Proc Name]%' ORDER BY sysobjects.name,syscolumns.colid 

这是我最终使用的SQL语句:

 SELECT CASE so.type WHEN 'U' THEN 'table' WHEN 'P' THEN 'stored proc' WHEN 'V' THEN 'view' END AS [type], s.name AS [schema], so.[name] AS [name] FROM sys.sysobjects so JOIN sys.schemas s ON so.uid = s.schema_id WHERE so.type IN ('U', 'P', 'V') ORDER BY [type], [schema], [name] asc