c# – 如何获取Sql Server数据库中所有模式的列表

我想检索给定的Sql Server数据库中的所有模式的列表。使用ADO.NET模式检索API我得到所有集合的列表,但没有’模式’的集合。
我可以遍历“表”,“过程”集合(和其他如果需要),并获得一个唯一的模式名称的列表,但没有一个更简单/更短的方式实现相同的结果?

示例:对于标准的“AdventureWorks”数据库,我想获得以下列表 – dbo,HumanResources,Person,Production,Purchasing,Sales(我省略了其他标准模式名称,如db_accessadmin,db_datareader等)

编辑:我可以通过查询系统视图 – INFORMATION_SCHEMA.SCHEMATA获取模式列表,但更喜欢使用模式API作为首选。

最佳答案
对于2005和更高版本,这些都将提供您所寻找的。

SELECT name FROM sys.schemas
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA

对于2000,这将给出实例中的数据库的列表。

SELECT * FROM INFORMATION_SCHEMA.SCHEMATA

这就是@ Adrift的回答中提到的“向后兼容性”。

在SQL Server 2000(和更低版本)中,没有真正的“模式”,虽然你可以使用角色作为命名空间以类似的方式。在这种情况下,这可以是最接近的等价物。

SELECT * FROM sysusers WHERE gid <> 0

转载注明原文:c# – 如何获取Sql Server数据库中所有模式的列表 - 代码日志