【问题标题】:SQL Server - Create a new database for a user and ONLY give them access / view rights to that one DBSQL Server - 为用户创建一个新数据库,并且只授予他们对该数据库的访问/查看权限
【发布时间】:2014-08-26 16:43:13
【问题描述】:

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

  1. 创建此数据库
  2. 仅授予用户对该数据库的完全访问/权限
  3. 让他们在 SSMS 对象资源管理器中查看它及其架构 - 但不能查看任何其他数据库

我在网上找到了很多答案,最接近我的是这个: 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'.

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

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

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

谢谢!!!

【问题讨论】:

  • 您是否按照链接帖子中的说明进行操作?首先拒绝用户查看数据库的权限,然后将用户放入数据库中,然后将登录名设置为数据库所有者。
  • @Dave.Gugg,我做到了...不过,我仍然收到该错误消息...有什么想法吗??
  • 您是否尝试向该 sp 授予权限?
  • 到那个 sp??对不起,我不明白你的意思...
  • 哦,好的 - 明白了...我现在就试试....

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


【解决方案1】:

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

USE master
GO

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2011-02-20
    • 1970-01-01
    • 2014-03-13
    • 2023-03-24
    相关资源
    最近更新 更多