Rya*_*anW 15 permissions sql-server
使用 SQL Server 2008 中的安全性,我试图授予用户 CREATE TABLE 权限,但仅限于特定架构内。CREATE TABLE 权限是否仅适用于数据库级别?
我可以限制用户仅在架构内创建表吗?
我试过了:
USE [databasename]
GRANT CONTROL ON Schema :: [schemaname] TO [username]
GO
Run Code Online (Sandbox Code Playgroud)
和
USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GO
Run Code Online (Sandbox Code Playgroud)
但是,用户仍然无法在目标模式中创建表。直到我运行这个,用户才能创建一个表:
USE [databasename]
GRANT CREATE TABLE to [username]
GO
Run Code Online (Sandbox Code Playgroud)
db2*_*db2 13
根据 SQL Server 2008 帮助:
需要数据库中的 CREATE TABLE 权限和正在创建表的架构的 ALTER 权限。
我刚刚通过在测试数据库中使用 EXECUTE AS 对此进行了测试,并且我能够在具有 ALTER 权限的架构中创建一个表,但在 dbo 架构中却没有(我没有授予 ALTER 权限)。因此,只要您对模式的 ALTER 权限还没有过于宽松,这应该是这样做的方法。
小智 7
向特定数据库中的特定用户授予创建表的权限不仅需要 CREATE TABLE 权限,还需要模式的 ALTER 权限,例如 DBO。
USE [databasename]
GRANT ALTER ON Schema :: [schemaname] TO [username]
GRANT CREATE TABLE TO [username]
GO
Run Code Online (Sandbox Code Playgroud)
例如;
USE db_mydatabase
GRANT ALTER ON Schema :: DBO TO user_mydatabase
GRANT CREATE TABLE TO user_mydatabase
GO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
68140 次 |
| 最近记录: |