撤消公共角色的连接权限

时间:2011-08-03 16:15:30

标签: sql-server-2008 permissions roles

我正在使用MSSQL 2008 R2。我有一个特定的数据库,当它恢复时,可以从SQL Management Studio的每个人访问它。通过使用下面的SQL语句,我发现公共服务器角色已被授予此数据库的连接权限。

use db_mydb
SELECT * 
  FROM sys.database_permissions 
 WHERE grantee_principal_id = (SELECT principal_id 
                                 FROM sys.server_principals 
                                WHERE name ='public')

此查询的结果如下

0 DATABASE 0 0 2 1 CO CONNECT G GRANT

是否有任何撤销此权限的工作?

2 个答案:

答案 0 :(得分:0)

正确的方法之一是

  • 在数据库中运行DROP USER所有用户
  • 对这些用户运行DENY CONNECT

不要乱用公众

您的代码也误导了您:

  • 服务器级公共角色与数据库级公共角色无关
  • sys.database_permissions.grantee_principal_id指的是sys.database_principals
  • 对于角色,sys.database_permissions / sys.database_principalssys.server_principals
  • 之间没有公共列

答案 1 :(得分:0)

我的解决方案是创建一个空数据库。然后使用生成脚本对表,视图和存储的procuder进行编写脚本。然后使用导入数据选项导入数据。所有这些只能使用Micosoft SQL Management Studio完成。