如何让所有SQLServer用户只读访问某数据库?

tatsuya88 2013-06-06 10:32:04
数据库服务器下面有很多用户,按道理说只要grant connect,select to public就可以了
但是运行报错:

消息 4627,级别 16,状态 1,第 1 行
无法对角色和应用程序角色授予、拒绝或撤消连接数据库的权限。

请问如何才能让所有用户都可以只读访问数据库,而不是另开一个只读用户呢?
...全文
336 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
tatsuya88 2013-06-06
  • 打赏
  • 举报
回复
非常感谢各位的回答,问题已经成功解决 grant connect,select to guest
KevinLiu 2013-06-06
  • 打赏
  • 举报
回复
引用 3 楼 tatsuya88 的回复:
[quote=引用 1 楼 SmithLiu328 的回复:] 不行的,Public是Role不是用户或者用户组。Grant的对象是TO <某个用户、登录名或组>,所以你要新建一个用户然后给权限。
grant connect to public 这句会报错 grant select to public 但这句是可以的[/quote] GRANT CONNECT TO guest; GO
唐诗三百首 2013-06-06
  • 打赏
  • 举报
回复
请问如何才能让所有用户都可以只读访问数据库,而不是另开一个只读用户呢? --> 授予数据库用户db_datareader角色即可.
tatsuya88 2013-06-06
  • 打赏
  • 举报
回复
引用 1 楼 SmithLiu328 的回复:
不行的,Public是Role不是用户或者用户组。Grant的对象是TO <某个用户、登录名或组>,所以你要新建一个用户然后给权限。
grant connect to public 这句会报错 grant select to public 但这句是可以的
tatsuya88 2013-06-06
  • 打赏
  • 举报
回复
不过我这边一个数据库权限开的比较大,所有用户都可以访问,查看public居然有connect权限,也不知当时是怎么搞出来的
KevinLiu 2013-06-06
  • 打赏
  • 举报
回复
不行的,Public是Role不是用户或者用户组。Grant的对象是TO <某个用户、登录名或组>,所以你要新建一个用户然后给权限。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧