我如何获得所有架构的SQL Server数据库的列表
我想找回在给定的SQL Server数据库的所有模式的列表。使用 ADO.NET
模式检索API,我得到的所有集合的列表,但没有收集架构。
我可以遍历'表'
,程序
集合(如果需要的人),并获得独特的名单架构名称,但不存在获得相同的结果的更简单/更短的方法是什么?
I want to retrieve a list of all schemas in a given Sql Server database. Using the ADO.NET
schema retrieval API I get a list of all collections but there is no collection for 'Schemas'.
I could traverse the 'Tables'
, 'Procedures'
collections (and others if required) and obtain a list of unique schema names but isn't there a easier/shorter way of achieving the same result?
例:对于标准'AdventureWorks的
数据库我想也得到了下面的列表 - DBO,HumanResources,人员,生产,采购,销售
(我省略了像 db_accessadmin
,的db_datareader
等其它标准舍姆的名字)
Example: For the standard 'AdventureWorks'
database I would like too obtain the following list - dbo,HumanResources,Person,Production,Purchasing,Sales
(I've omitted the other standard schem names like db_accessadmin
,db_datareader
etc)
编辑:我可以通过查询系统视图获取架构的名单 - INFORMATION_SCHEMA.SCHEMATA
,但使用的架构API作为第一选择将preFER
I can get the list of schemas by querying the system view - INFORMATION_SCHEMA.SCHEMATA
but would prefer using the schema API as first choice.
有关2005年以后,这些都将让你在寻找什么。
For 2005 and later, these will both give what you're looking for.
SELECT name FROM sys.schemas
SELECT SCHEMA_NAME FROM INFORMATION_SCHEMA.SCHEMATA
2000年,这会给数据库的在实例的。
SELECT * FROM INFORMATION_SCHEMA.SCHEMATA
这就是落后不相容指出,在@漂泊的答案。
That's the "backward incompatability" noted in @Adrift's answer.
在SQL Server 2000中(或更低),不会有真正的模式正因为如此,虽然可以以类似的方式使用角色名称空间。在这种情况下,这可能是最接近的等价物
In SQL Server 2000 (and lower), there aren't really "schemas" as such, although you can use roles as namespaces in a similar way. In that case, this may be the closest equivalent.
SELECT * FROM sysusers WHERE gid <> 0