今天恢复数据库的时候,发现有很多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 了。

相关文章:

  • 2021-07-19
  • 2022-12-23
  • 2021-10-27
  • 2021-05-27
  • 2022-12-23
  • 2021-11-16
  • 2022-12-23
猜你喜欢
  • 2021-08-17
  • 2021-10-03
  • 2022-01-17
  • 2022-12-23
  • 2021-08-26
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案