如何在SQL Server 2005中获取所有用户创建的数据库?

时间:2009-08-13 06:32:41

标签: sql-server sql-server-2005

我想要在sql server 2005中列出用户创建的数据库。如何通过T-SQL列出所有用户创建的数据库?

由于 拉杰什

5 个答案:

答案 0 :(得分:2)

我确信有一种“更好”的方式,但这有效:

SELECT * FROM sys.databases
where owner_sid != 1

答案 1 :(得分:2)

您查询sys.databases并删除系统数据库。真正的系统数据库是mastertempdbmodel(即db_id 1,,2和3)和mssqlsystemresource。但是mssqlsystemresource背后有一些魔法并且似乎不存在。另一方面,除了SQL引擎之外,每个人都认为msdb也是一个系统数据库。因此查询将类似于:

select * from sys.databases 
where name not in (N'master', N'tempdb', N'model', N'msdb')

答案 2 :(得分:0)

最简单的方法是

exec sp_databases

然而,这将包括系统数据库,因此您需要手动排除它们。不确定是否有一个不同的系统sproc将为你做。

虽然您可以使用

获得更多扩展信息
select * from sys.databases

我非常确定owner_sid字段不是系统数据库的可靠指示器,因为我的服务器上的系统和一些用户数据库都有相同的sid。

答案 3 :(得分:0)

SELECT name, owner_sid
FROM sys.databases

owner_sid应该提供足够的信息来区分,虽然我注意到我的Oslo_Repository sid也被指定为1,所以它可能不是100%可靠。

答案 4 :(得分:0)

SELECT [name]
FROM master.dbo.sysdatabases
WHERE dbid > 6