我想检索给定 Sql Server 数据库中所有模式的列表。使用 ADO.NET
架构检索 API,我得到了所有集合的列表,但没有“架构”的集合。
我可以遍历 'Tables'
、'Procedures'
集合(如果需要,还可以遍历其他集合)并获得唯一模式名称的列表,但没有更简单/更短的方法达到同样的结果?
示例:对于标准的 'AdventureWorks'
数据库,我想获取以下列表 - dbo,HumanResources,Person,Production,Purchasing,Sales
(我已经省略了其他标准模式名称,如 db_accessadmin
、db_datareader
等)
编辑:我可以通过查询系统 View 获取架构列表 - 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(及更低版本)中,并没有真正的“架构”本身,尽管您可以以类似的方式将角色用作 namespace 。在那种情况下,这可能是最接近的等价物。
SELECT * FROM sysusers WHERE gid <> 0
关于c# - 如何获取 Sql Server 数据库中所有模式的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3719623/