【问题标题】:Is it possible to modify system stored procedure?是否可以修改系统存储过程?
【发布时间】:2013-10-25 20:53:09
【问题描述】:

我想更改sp_helpindex 系统过程,或者用我的版本替换它。

原因是:

  • 显示 index_id
  • 显示包含的列
  • 显示过滤器定义
  • 显示填充因子
  • 显示索引大小
  • 同时显示堆信息

另外,有趣的是,我的版本表现更好(更快、更少读取、无光标)。

我尝试了以下方法,但都没有奏效:

  • sp_rename
  • 改变程序
  • 删除程序

错误Invalid object name 'sys.sp_helpindex'.

我现在能想到的唯一选择就是添加一个新程序而不是替换现有程序。但是,有一个缺点。我希望sp_help(反过来调用sp_helpindex)能够无缝地接收我的更改,因此在服务器上使用 Alt+F1 的每个人都会看到更改,而无需更改每个客户端上的默认 SSMS 快捷键。

【问题讨论】:

  • 有趣的问题。无论如何,为什么错误指的是sp_helpindex而不是sp_helptext
  • 我觉得这个比较适合数据库管理员-dba.stackexchange.com

标签: sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012


【解决方案1】:

不,您不能修改任何系统程序。您可以创建自己的并调用它;你只需给它一个不同的 sp_ 名称,将其标记为系统对象,而不是将其放入 sys 架构中。

哦,不要从头开始创建自己的 Kimberly Tripp has constantly been evolving her own version, updated for new features,当然你应该使用 Kendra Little's sp_BlitzIndex。你可能会发现你不需要写任何东西,因为很多其他人已经重新发明了这个轮子,并且做得很好。

【讨论】:

  • 是的,创建一个新的 proc 是我能想到的唯一解决方案(正如我在问题中提到的那样)。此外,Kimberly 的 proc 正是我开始使用的,并意识到它不符合我的要求,它没有显示填充因子、index_id 或大小。此外,我的解决方案性能更好,代码更少,由于没有游标,因此更易于维护。
猜你喜欢
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2010-09-14
相关资源
最近更新 更多