避免用户编辑SQL Server数据库中的表/列

时间:2018-07-18 19:19:37

标签: sql-server

我想阻止用户访问SQL Server数据库中的表和列。与MS Access和SQL Server CE数据库一样,您可以分配一个数据库级别的密码,以便没有人可以打开数据库并更改任何表等。有什么方法可以使用SQL Server数据库(.mdf)做到这一点?当前,当用户安装我的应用程序时,我将以编程方式创建数据库。我在下面尝试了以下代码,但仍然能够在SSMS中打开数据库并更改数据库。

sSQL = "ALTER DATABASE COLORS SET RESTRICTED_USER"
cmd.Connection = cn
cmd.CommandText = sSQL
cmd.ExecuteNonQuery()

当我启动SSMS时,数据库被命名为[COLORS(受限用户)],但是我能够打开和更改表。

谢谢。

1 个答案:

答案 0 :(得分:0)

如果要使用Windows身份验证连接到数据库,则可以访问数据库。

如果用户是Server的Windows管理员,请假定他们拥有服务器(包括SQL Server)上的所有内容。拥有Windows管理员权限,绕过您应用的任何有针对性的保护都是很简单的。如果您不信任某人(用户),请不要授予他们Windows管理员权限。

为其创建一个 SQL身份验证 Creating a user and granting table level permissions

您可以将特定的对象权限授予用户,一种方法是

GRANT INSERT, SELECT , UPDATE ON TABLENAME TO USER_NAME

用于授予对象权限:GRANT Object Permissions

或者,您可以创建数据库角色并为该角色分配表权限,然后将角色附加到用户。

CREATE ROLE <RoleName>
GO
GRANT INSERT, SELECT , UPDATE ON <TABLENAME> TO  <RoleName>
GO
sp_addrolemember <TEST> , <UserName>