快速更新 数据库对象 拥有者

今天恢复数据库的时候,发现有很多procedure的所有者不是dbo,而是一些其他用户,这样造成用户不能访问它。

首先想到的是删除这些procedure然后再重建,发现数量太多不太现实。

突然又想到可以把所有存储过程列出来,然后用procedure sp_changeobjectowner 来更改它。

最后在我们经常用户查数据库表的 sysobjects 表里面,发现dbo的ID都是1,那么可不可以用sql来Update它呢。

抱着试一试的心态,执行了以下sql语名,

update  sysobjects
  
set  uid = 1
  
where  type = ' p '

结果出现以下错误:
服务器: 消息 259,级别 16,状态 2,行 1
未启用对系统目录的特殊更新。系统管理员必须重新配置 SQL Server 以允许这种操作。

于是按照提示,打开sql server属性 ->  服务器设置 -> 充许对系统目录进行直接修改
设置如下图:
快速更新 数据库对象 拥有者

再执行上面的语句,就把所有的procedure的所有者改成了 dbo 了。

你可能感兴趣的:(数据库)