如何在SQL-Server中创建只能访问一个表的用户,并且只能插入行

时间:2013-03-04 14:42:05

标签: sql-server sql-server-2008

我有一个SQL服务器数据库,很快就会有两个数据库,我用它来建立一个网站。

我已经拥有一个只读数据库1的用户帐户来搜索我们的产品库存。我只想为数据库2创建一个单独的帐户,仅用于表1,它只允许插入记录(不更新或删除或其他任何内容)。我试图尽可能多地使用访问限制(在代码之上尝试并阻止sql注入,如果有人以某种方式获得某些东西,我不希望数据库本身允许它。)

所以底线问题,如何在SQL服务器中创建一个用户,该用户只能限制访问y数据库中的x表,并且只能读取/插入记录,而不是其他内容?

4 个答案:

答案 0 :(得分:28)

创建用户,不要给出db_datareader或db_datawriter等任何角色

然后GRANT INSERT ON YourTable TO SomeUser

如果您想要插入并选择

GRANT INSERT, SELECT ON YourTable TO SomeUser

此处还可以看到一个完整的示例:Giving only insert permissions to a table for a new login

答案 1 :(得分:5)

(1)为用户提供仅限一个表的访问权限

GRANT SELECT ON [schemaName].[tableName] to [username]
Go 

(2)授予INSERT权限。

GRANT INSERT ON [schemaName].[tableName] TO [username]

答案 2 :(得分:1)

dbname.dbo.tablename上选择授予用户名 它给出了这个错误:

  

找不到对象'APP_TBL_Log',因为它不存在或您没有权限。

我以“ sa”身份登录

答案 3 :(得分:0)

授予访问单个表格的语法:

GRANT access_type ON table_name TO [user name]

撤销单个表格访问权限的语法:

REVOKE access_type ON table_name FROM [user name]

其中access_type可以是SELECT,INSERT,DELETE ......