SQL Server - 为用户创建一个新数据库,并且只授予他们访问/查看该数据库的权限

时间:2014-08-26 16:43:14

标签: sql-server database sql-server-2008 login sql-server-2012

我拥有SQL Server 2012服务器的管理员权限,并且有一个用户希望我在服务器上为他们创建一个“丢弃”数据库。 基本上,我期待:

  1. 创建此数据库
  2. 授予用户完全访问权限/仅限于数据库
  3. 让他们在SSMS对象资源管理器中看到它及其架构 - 而不是任何其他数据库
  4. 我在网上找到了不少答案,让我最接近的答案是这一个: https://stackoverflow.com/a/15400392/1693085

    基本上给我这些SQL行执行:

    --Step 1: (create a new user)
    create LOGIN hello WITH PASSWORD='foo', CHECK_POLICY = OFF;
    
    
    -- Step 2:(deny view to any database)
    USE master;
    GO
    DENY VIEW ANY DATABASE TO hello; 
    
    
     -- step 3 (then authorized the user for that specific database , you have to use the  master by doing use master as below)
    USE master;
    GO
    ALTER AUTHORIZATION ON DATABASE::yourDB TO hello;
    GO
    

    但是,当我以该用户身份登录并右键单击创建的表时,我会重复几次以下错误:

    An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
    
    ------------------------------
    ADDITIONAL INFORMATION:
    
    The EXECUTE permission was denied on the object 'xp_instance_regread', database 'mssqlsystemresource', schema 'sys'.
    

    并且,如果我忽略它并尝试删除表格,我会再次得到基本相同的错误。

    我基本上想做的就是创建一个用户并确保他们没有比那个数据库更多的访问权限,但对该数据库拥有完全访问权限...

    我做错了什么/我应该改变什么?

    感谢!!!

1 个答案:

答案 0 :(得分:1)

您可以通过授予用户对存储过程的权限来解决此问题:

USE master
GO

GRANT EXEC ON OBJECT::master.dbo.xp_instance_regread TO hello
GO