查询 SQL Server 系统目录常见问题 http://msdn.microsoft.com/zh-cn/library/ms345522.aspx#_FAQ4
下列部分按类别列出常见问题。
数据类型
表、索引、视图和约束
模块(存储过程、用户定义函数和触发器)
架构、用户、角色和权限
如何找到指定架构中包含的实体的全部所有者?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name>。
如何找到没有主键的所有表?
运行下列查询之前,请使用有效数据库名称替换 <database_name>。
如何找到没有索引的所有表?
运行以下查询之前,请使用有效数据库名称替换 <database_name>。
如何找到具有标识列的所有表?
运行以下查询之前,请使用有效数据库名称替换 <database_name>。
如何找到指定表中列的数据类型?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.table_name>。
如何找到指定函数的依赖项?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.function_name>。
如何找到数据库中的所有存储过程?
运行以下查询之前,请使用有效名称替换 <database_name>。
如何找到指定存储过程或函数的参数?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.object_name>。
如何找到数据库中的所有用户定义函数?
运行以下查询之前,请使用有效数据库名称替换 <database_name>。
如何找到数据库中的所有视图?
运行以下查询之前,请使用有效数据库名称替换 <database_name>。
如何找到最近 n 天内修改过的所有实体?
运行以下查询之前,请使用有效值替换 <database_name> 和 <n_days>。
如何找到指定表中的 LOB 数据类型?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.table_name>。
如何查看模块定义?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.object_name>。
如何查看服务器级别触发器的定义?
如何找到指定表的主键列?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.table_name>。
如何找到指定表的外键列?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.table_name>。
如何找到对指定主体授予或拒绝的权限?
以下示例创建函数以返回检查对其权限的实体的名称。 在下列查询中调用函数。 必须在每个数据库(要在其中检查权限)中创建函数。
如何确定某列是否在计算列表达式中使用?
运行以下查询之前,请使用有效名称替换 <database_name>、<schema_name.table_name> 和 <column_name>。
如何找到在计算列表达式中使用的所有列?
运行以下查询之前,请使用有效名称替换 <database_name>。
如何找到依赖于指定 CLR 用户定义类型或别名类型的列?
运行以下查询之前,请使用有效名称替换 <database_name>,并使用有效的架构限定的 CLR 用户定义类型或架构限定的别名类型名称替换 <schema_name.data_type_name>。 以下查询需要 db_owner 角色的成员身份或者查看数据库中所有依赖列和计算列元数据的权限。
如何找到依赖于指定 CLR 用户定义类型或别名类型的计算列?
运行以下查询之前,请使用有效名称替换 <database_name>,并使用有效的架构限定的 CLR 用户定义类型和别名类型名称替换 <schema_name.data_type_name>。
如何找到依赖于指定 CLR 用户定义类型或别名类型的参数?
运行以下查询之前,请使用有效名称替换 <database_name>,并使用有效的架构限定的 CLR 用户定义类型和别名类型名称替换 <schema_name.data_type_name>。 以下查询需要 db_owner 角色的成员身份或者查看数据库中所有依赖列和计算列元数据的权限。
如何找到依赖于指定 CLR 用户定义类型的 CHECK 约束?
运行以下查询之前,请使用有效名称替换 <database_name>,并使用有效的架构限定的 CLR 用户定义类型名称替换 <schema_name.data_type_name>。
如何找到依赖于指定 CLR 用户定义类型或别名类型的视图、Transact-SQL 函数和 Transact-SQL 存储过程?
运行以下查询之前,请使用有效名称替换 <database_name>,并使用有效的架构限定的 CLR 用户定义类型和别名类型名称替换 <schema_name.data_type_name>。
在函数或过程中定义的参数为隐式架构绑定。 因此,可以使用 sys.sql_dependencies 目录视图查看依赖于 CLR 用户定义类型或别名类型的参数。 过程和触发器均未绑定到架构。 这意味着不会维护任何在过程或触发器的主体中定义的表达式与 CLR 用户定义类型或别名类型之间的依赖关系。 架构绑定视图和架构绑定用户定义函数具有依赖于 CLR 用户定义类型或别名类型的表达式,在 sys.sql_dependencies 目录视图中维护。 不维护类型和 CLR 函数及类型和 CLR 过程之间的依赖关系。
以下查询返回指定 CLR 用户定义类型或别名类型在视图、Transact-SQL 函数和 Transact-SQL 存储过程中的所有架构绑定依赖关系。
如何找到指定表的所有约束?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.table_name>。
如何找到指定表的所有索引?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.table_name>。
如何找到具有指定列名称的所有对象?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <column_name>。
如何找到指定数据库中的所有用户定义表?
运行以下查询之前,请使用有效名称替换 <database_name>。
如何找到所有进行了分区的表和索引?
运行以下查询之前,请使用有效名称替换 <database_name>。
如何找到指定对象的所有统计信息?
运行以下查询之前,请使用有效名称替换 <database_name>,并使用有效的表、索引视图或表值函数名称替换 <schema_name.object_name>。
如何找到指定对象的所有统计信息和统计信息列?
运行以下查询之前,请使用有效名称替换 <database_name>,并使用有效的表、索引视图或表值函数名称替换 <schema_name.object_name>。
如何找到视图的定义?
运行以下查询之前,请使用有效名称替换 <database_name> 和 <schema_name.object_name>。
USE <database_name>;
GO
SELECT definition
FROM sys.sql_modules
WHERE object_id = OBJECT_ID('<schema_name.object_name>');
GO
或者,可以使用以下示例所显示的 OBJECT_DEFINITION 函数。
USE <database_name>;
GO
SELECT OBJECT_DEFINITION (OBJECT_ID('<schema_name.object_name>')) AS ObjectDefinition;
GO