使用SQL Server(2008),您可以在模式中授予创build表权限吗?

在SQL Server 2008中使用安全性,我试图授予用户CREATE TABLE权限,但只能在特定的模式中使用。 CREATE TABLE权限是否仅适用于数据库级别?

我可以限制用户只在模式中创build表吗?

我试过了:

USE [databasename] GRANT CONTROL ON Schema :: [schemaname] TO [username] GO 

 USE [databasename] GRANT ALTER ON Schema :: [schemaname] TO [username] GO 

但是,用户仍然无法在目标模式中创build表。 直到我运行这个,用户可以创build一个表:

 USE [databasename] GRANT CREATE TABLE to [username] GO 

GRANT

GRANT数据库权限

根据SQL Server 2008的帮助:

在数据库中需要CREATE TABLE权限,在创build表的模式中需要ALTER权限。

我只是在testing数据库中使用EXECUTE AS来testing这个,我能够在具有ALTER权限的模式中创build一个表,但是不能在dbo模式(为此我没有授予ALTER权限)中创build一个表。 所以只要你对模式上的ALTER权限没有太过自由,这应该是这样做的方式。

授予在特定数据库中为特定用户创build表的权限不仅需要CREATE TABLE权限,还需要对模式(例如DBO)具有ALTER权限。

 USE [databasename] GRANT ALTER ON Schema :: [schemaname] TO [username] GRANT CREATE TABLE TO [username] GO 

例如;

 USE db_mydatabase GRANT ALTER ON Schema :: DBO TO user_mydatabase GRANT CREATE TABLE TO user_mydatabase GO 

在适用于2008 R2的模式的权限文档中没有关于这种权限的任何内容: http : //msdn.microsoft.com/zh-cn/library/ms187940.aspx

所以我会得出结论:不行,创build表只能在数据库级别进行控制(这似乎适用于所有的安全性)。

你当然可以。 如果你有user1,那么定义它的默认模式为user1。 授予该用户数据库权限的CREATE TABLE。 而已。 user1只能在user1模式中创build表。