我是一个偶然的DBA在一个小公司,没有一个专门的DBA。
我需要为Server 2008数据库设置一个只读登录/用户,使用Server身份验证,高级用户可以使用它来运行一些临时查询/报告。
我发现了许多关于设置只读用户的文章和文章,例如:
http://www.joellipman.com/articles/microsoft/sql-server/create-read-only-database-user-in-sql-server.html
我试着遵循这些指南,并确保所讨论的登录名仅是db_datareader和public角色的成员,但是当我以“只读”用户身份登录时,我仍然可以对数据进行更改。
例如,我可以在SSMS中运行这个查询。
UPDATE [dbo].[SoftwareRunLogs]
SET [RunDateTime] = '2010-10-29 13:31:06.133'
WHERE ID = 1并更新表中的行:
(1 row(s) affected)我预计这样的查询会失败。
当我尝试运行CREATE TABLE语句时,它会失败,而消息CREATE TABLE permission denied in database ...也会失败--我希望UPDATE、INSERT和DELETE语句会以类似的方式失败,但不会发生。
也许我无意中给了那个用户写权限,但是我不知道如何检查和查看。我一定错过了一些琐碎的东西。
有什么想法吗?
有一个名为ReadOnlyUser的服务器登录,下面是它的属性:





在数据库中,有一个名为ReadOnlyUser的用户,下面是它的属性:





发布于 2016-03-16 03:42:02
我查看了SSMS中Security节点中的所有项,似乎public数据库角色的属性已经发生了某种改变。他们看起来是这样的:

我真的不知道它们通常应该是什么样子,但是清除Delete、Insert、Update复选框似乎就能做到这一点。
眼前的问题现在已经解决了,我将阅读更多关于public角色以及它应该具有哪些设置的内容。
https://dba.stackexchange.com/questions/132339
复制相似问题