主页 > 知识库 > 数据库 > SQL server >

关于SQL Server没有dbo权限的问题

来源: 作者: 发表于:2012-08-21 10:55  点击:
关于 SQL Server 没有 dbo 权限的问题关于 sql server 数据库查询数据或执行存储过程时,出现类似 没有dbo权限、找不到 dbo.XXX 对象等的解决方法 1. 出现这个问题的原因是因为当前连接数据库的登录用户不是 dbo 权限,所以此用户不能操作所有者为 dbo 的对

关于 SQL Server 没有 dbo 权限的问题   关于 sql server 数据库查询数据或执行存储过程时,出现类似 "没有dbo权限"、"找不到 dbo.XXX 对象"等的解决方法
  1. 出现这个问题的原因是因为当前连接数据库的登录用户不是 dbo 权限,所以此用户不能操作所有者为 dbo 的对象。为什么不开放 dbo 权限:因为如果客户的程序有问题(比如有注入)、或密码泄漏等,如果当前用户有 dbo 权限的话,会给数据库服务器带来安全隐患,所以我司的数据库都不开放 dbo 权限,而我们给用户开放了datareader、datawriter、ddladmin 等权限,这些权限一般情况下是足够的。
  2. 用户在初始化数据的时候,比如通过企业管理器执行导入数据的 SQL ,或通过某些网站安装程序初始化的时候,这些原始的初始化数据中的对象所有者可能是 dbo ,这将会导致在初始化数据后,数据库的当前登录用户没有权限操作这些对象。
  3. 对于以上问题,解决方法如下:  www.dedecms.com  
    1. 在您对数据库的结构进行了更改后,要注意数据库对象(如数据表、存储过程等)的所有者应该是您的数据库用户名,而不是 dbo ,如果您发现有某些对象的所有者是 dbo ,这时您应该登录我司的数据库控制面板,然后找到“修复对象所有者”的按钮,点击一下就可以将所有对象的所有者设置为您的当前登录用户。   (注意:系统表、系统存储过程 等不用处理,只有自己建立的表、存储过程、视图等才要处理)
  4. 在您的程序中,要注意以下方面   在查询、更新、删除数据,执行存储过程等一切操作中,不要使用 "dbo.表名"、"dbo.存储过程名" 等进行操作,   而改为直接用 "表名"、"存储过程"名等进行操作,就是不要带有对象所有者的部分,如:   select * from dbo.table1 应该改为 select * from table1   更多请做类似修改~       作者 eric wang

    有帮助
    (0)
    0%
    没帮助
    (0)
    0%