Sql 为什么select权限被拒绝?
向数据库用户授予权限时遇到问题。例如,我似乎无法获得我的用户选择特权,无论我给它多少安全和会员资格。我首先给用户选择权限数据库>安全性>用户>属性>安全性 并授予它db_datareader成员资格。在这不起作用之后,我将该用户添加到所有成员身份中,并授予他在安全部分中可用的所有权限。失败后,我在security>login>properties中为用户提供了所有可用的权限,我将登录添加到所有服务器角色accept sysadmin,并为用户提供了我希望他访问的数据库中所有模式的所有权。但我还是在下面遇到了同样的错误:Sql 为什么select权限被拒绝?,sql,Sql,向数据库用户授予权限时遇到问题。例如,我似乎无法获得我的用户选择特权,无论我给它多少安全和会员资格。我首先给用户选择权限数据库>安全性>用户>属性>安全性 并授予它db_datareader成员资格。在这不起作用之后,我将该用户添加到所有成员身份中,并授予他在安全部分中可用的所有权限。失败后,我在security>login>properties中为用户提供了所有可用的权限,我将登录添加到所有服务器角色accept sysadmin,并为用户提供了我希望他访问的数据库中所有模式的所有权。但我还是
The SELECT permission was denied on object 'Patient_Information', database 'Clinical_Data', schema 'dbo'
当我将登录添加到角色sysadmin时,它所映射到的用户在执行选择、插入和基本上其他操作时没有问题。奇怪的是,当我查看数据库>属性>权限时,用户没有我在securables部分授予他的任何权限。以下是我用来授予的代码:
USE Clinical_Data; GRANT Select on schema::DBO to lab31
提前感谢您提供的任何帮助 我通常创建一个数据库角色,并将用户分配给该角色。将架构权限分配给数据库角色。下面是一个为虚拟数据库使用代码的快速示例
--
-- 1 - GRANTING CORRECT USER ACCESS BY SCHEMA
--
--create test user login
CREATE LOGIN [User1] WITH PASSWORD=N'p@55w0rd'
GO
-- Make sure we are in autos
USE [AUTOS]
GO
--create user in test database
CREATE USER [User1] FOR LOGIN [User1] WITH DEFAULT_SCHEMA=[ACTIVE]
GO
--create role
CREATE ROLE [Auto_User] AUTHORIZATION [dbo]
GO
--apply permissions to schemas
GRANT ALTER ON SCHEMA::[ACTIVE] TO [Auto_User]
GO
GRANT CONTROL ON SCHEMA::[ACTIVE] TO [Auto_User]
GO
GRANT SELECT ON SCHEMA::[ACTIVE] TO [Auto_User]
GO
--ensure role membership is correct
EXEC sp_addrolemember N'Auto_User', N'User1'
GO
如果您对SQLServerManagementStudio更熟悉,那么可以尝试一下。所有的动作可能都不准确,但我确实与SS 2012进行了核对
假设您的登录名是[bilbo],他们想要访问的数据库是[middle earth]
请不要给出所有服务器角色或所有数据库角色!当用户执行诸如drop table之类的愚蠢操作时,您只是在要求头痛。我通常创建一个数据库角色并将用户分配给该角色。将架构权限分配给数据库角色。下面是一个为虚拟数据库使用代码的快速示例
--
-- 1 - GRANTING CORRECT USER ACCESS BY SCHEMA
--
--create test user login
CREATE LOGIN [User1] WITH PASSWORD=N'p@55w0rd'
GO
-- Make sure we are in autos
USE [AUTOS]
GO
--create user in test database
CREATE USER [User1] FOR LOGIN [User1] WITH DEFAULT_SCHEMA=[ACTIVE]
GO
--create role
CREATE ROLE [Auto_User] AUTHORIZATION [dbo]
GO
--apply permissions to schemas
GRANT ALTER ON SCHEMA::[ACTIVE] TO [Auto_User]
GO
GRANT CONTROL ON SCHEMA::[ACTIVE] TO [Auto_User]
GO
GRANT SELECT ON SCHEMA::[ACTIVE] TO [Auto_User]
GO
--ensure role membership is correct
EXEC sp_addrolemember N'Auto_User', N'User1'
GO
如果您对SQLServerManagementStudio更熟悉,那么可以尝试一下。所有的动作可能都不准确,但我确实与SS 2012进行了核对
假设您的登录名是[bilbo],他们想要访问的数据库是[middle earth]
请不要给出所有服务器角色或所有数据库角色!当用户做了一些愚蠢的事情,如删除表格时,您只是在要求头痛。数据库是“临床数据”,表格是dbo。患者信息模式是dbo。关于这一点,不应该再进行修改。这是您的数据库,还是您用来存储数据的其他人的数据库?如果病例数据库是“临床数据”,表是dbo,他们可能必须为用户设置权限。患者信息模式是dbo。关于这一点,不应再进行修改。这是您的数据库,还是您用来存储数据的其他人的数据库?如果是这样的话,他们可能必须为用户设置权限。哈,我是如此渴望在我的测试数据库上授予所有权限并开始运行,以至于我意外地分配了DB_denydatareader和DB_denydatawriter。谢谢,特别是考虑周到的4个SSMS步骤。哈,我非常渴望授予我的测试数据库的所有权限并启动和运行,以至于我意外地分配了DB_denydatareader和DB_denydatawriter。感谢,特别是为周到的4 SSMS步骤。