我已经连接到我的SQL Server 2005 - 并已成功地列出所有服务器上的数据库。现在我想对每个数据库进行检查,看看我是否有权查看该数据库..
我该如何解决这个问题?
非常感谢, 乔尔
我已经连接到我的SQL Server 2005 - 并已成功地列出所有服务器上的数据库。现在我想对每个数据库进行检查,看看我是否有权查看该数据库..
我该如何解决这个问题?
非常感谢, 乔尔
首先,你需要找出所有的名字在你的数据库服务器:
SELECT [name]
FROM sys.databases;
然后,您必须为每个数据库运行以下命令才能获得权限:
USE databaseName;
SELECT *
FROM fn_my_permissions(null, 'DATABASE')
你是什么意思视图的数据库?
您可以使用下面的查询列出当前数据库中的所有权限:
SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
是这就是我想要做的 - 但也许对于没有连接到的数据库?那可能吗? – 2010-05-27 07:48:19
我想你想看看sys.database_permissions
,我认为你可以查询这些信息。
这里看到更多的信息:
http://msdn.microsoft.com/en-us/library/ms188367.aspx
由于neslekkiM在一个不同的答案的评论已经指出的那样,你可以使用这个在线找出数据库列表时:
SELECT name, has_dbaccess(name)
FROM sys.databases
你好 - 这似乎很好 - 但是,我会用什么替换@dbname? – 2010-05-27 08:18:12
@J哈利:我不好。我忘了把它改成'数据库'。 – 2010-05-27 08:31:45
完美的工作正常 - 欢呼:) – 2010-05-27 08:37:44