【问题标题】:SQL Server checking if you have access to a databaseSQL Server 检查您是否有权访问数据库
【发布时间】:2011-02-24 13:04:04
【问题描述】:

早安,

我已连接到我的 SQL Server 2005 - 并设法列出了该服务器上的所有数据库。现在我想对每个数据库进行检查,看看我是否有权查看该数据库..

我该怎么办?

非常感谢, 乔尔

【问题讨论】:

    标签: sql-server-2005


    【解决方案1】:

    正如 neslekkiM 在不同答案的 cmets 中指出的那样,您可以在查找数据库列表时使用此内联:

    SELECT name, has_dbaccess(name) 
    FROM sys.databases
    

    【讨论】:

      【解决方案2】:

      首先,您需要找出数据库服务器中的所有名称:

      SELECT [name]
        FROM sys.databases;
      

      然后,您必须为每个数据库运行以下命令才能获得权限:

      USE databaseName;
      
      SELECT *
        FROM fn_my_permissions(null, 'DATABASE')
      

      【讨论】:

      • 你好 - 这似乎很好用 - 但是,我会用什么替换 @dbname?
      • @J Harley:我的错。我忘了把它改成“数据库”。
      • 如果您无权访问数据库,则不能对其“使用数据库名称”。似乎 HAS_PERMS_BY_NAME 可能是更好的选择?
      • 或者更好的是,使用 select has_dbaccess(databasename) 给你 1 或 0,告诉你是否允许使用数据库,然后使用 fn_my_permissions 或 has_perms_by_name 来查看是否允许创建表或数据库中的其他东西。
      【解决方案3】:

      我认为您想查看sys.database_permissions,我认为您可以在其中查询此信息。

      查看这里了解更多信息:
      http://msdn.microsoft.com/en-us/library/ms188367.aspx

      【讨论】:

        【解决方案4】:

        查看数据库是什么意思?!

        您可以使用以下查询列出当前数据库的所有权限:

        SELECT * FROM fn_my_permissions (NULL, 'DATABASE');
        

        【讨论】:

        • 是的,这就是我想要做的——但也许对于你没有连接到的数据库?这可能吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-08-16
        • 1970-01-01
        • 1970-01-01
        • 2011-10-26
        • 1970-01-01
        • 1970-01-01
        • 2010-10-15
        相关资源
        最近更新 更多