我想要在sql server 2005中列出用户创建的数据库。如何通过T-SQL列出所有用户创建的数据库?
由于 拉杰什
答案 0 :(得分:2)
我确信有一种“更好”的方式,但这有效:
SELECT * FROM sys.databases
where owner_sid != 1
答案 1 :(得分:2)
您查询sys.databases并删除系统数据库。真正的系统数据库是master
,tempdb
,model
(即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