关于 SQL Server 没有 dbo 权限的问题
时间 :
2022-03-07
编辑 :admin
当sql server数据库查询数据或执行存储过程时,解决方案如“无dbo权限”和“无dbo”。出现“发现XXX对象”。
1.出现此问题的原因是当前连接到数据库的登录用户没有dbo权限,因此该用户无法操作所有者为dbo的对象。为什么不打开dbo权限:因为如果客户的程序出现问题(比如注入漏洞)或者数据库密码泄露,如果当前用户拥有dbo权限,就会给数据库服务器带来安全隐患。因此,我们的数据库不开放dbo权限,但是我们对用户开放datareader、datawriter、ddladmin等权限,一般就足够了。
2.当用户初始化数据时,比如通过enterprise manager执行导入数据的SQL,或者通过一些网站安装程序进行初始化,这些原始初始化数据中的对象所有者可能是dbo,这将导致数据库的当前登录用户在初始化数据后没有权限操作这些对象。
3. 对于以上问题,解决方法如下: 1. 在您对数据库的结构进行了更改后,要注意数据库对象(如数据表、存储过程等)的所有者应该是您的数据库用户名,而不是 dbo ,如果您发现有某些对象的所有者是 dbo ,这时您应该登录我司的数据库控制面板,然后找到“修复对象所有者”的按钮,点击一下就可以将所有对象的所有者设置为您的当前登录用户。 (注意:系统表、系统存储过程 等不用处理,只有自己建立的表、存储过程、视图等才要处理)