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

标签 c# .net sql-server ado.net

我想检索给定 Sql Server 数据库中所有模式的列表。使用 ADO.NET 架构检索 API,我得到了所有集合的列表,但没有“架构”的集合。 我可以遍历 'Tables''Procedures' 集合(如果需要,还可以遍历其他集合)并获得唯一模式名称的列表,但没有更简单/更短的方法达到同样的结果?

示例:对于标准的 'AdventureWorks' 数据库,我想获取以下列表 - dbo,HumanResources,Person,Production,Purchasing,Sales(我已经省略了其他标准模式名称,如 db_accessadmindb_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/

相关文章:

c# - C# 中的 select() 函数

c# - 在 Silverlight 应用程序中集成现有的 wcf 项目

c# - MVC DropDownListFor 不从模型中选择值

.net - 以 "self learner"身份申请 .net 职位

c# - 如何通过 C# 中的反射获取类型的 protected 和公共(public)属性

sql-server - tablix 'Tablix1' 无效。缺少 DataSetName 属性的值

php 数据库库,错误 : SQLSTATE[HY000] Unknown host machine name (severity 2)

c# - 如何防止 System.Timers.Timer 在线程池上排队执行?

SQL 确定最小连续访问天数?

c# - 在 ASP.net C# 中,有没有一种方法可以将控制权从 Javascript 传递给我的 CS?