【问题标题】:Enable/Disable stored procedures启用/禁用存储过程
【发布时间】:2014-04-16 15:54:47
【问题描述】:

我正在使用 SQL Server 2012 Web 版中的一大组存储过程(约 300 个),我需要在不同时间启用/禁用一些存储过程。

有没有办法在 SQL Server Management Studio 的“可编程性”下创建一个子文件夹来放置不活动的存储过程?如果没有,是否可以选择启用/禁用特定存储过程而不将其从数据库中删除?由于我经常需要启用/禁用,我宁愿不删除该过程,然后在需要时重新编写脚本?

【问题讨论】:

  • 只是你想让它们不碍事,还是你想让它们无法执行?
  • 更多只是“不碍事”,但很容易恢复。就像我可以创建一个显示“已禁用”的文件夹一样。

标签: sql-server stored-procedures ssms sql-server-2012-web


【解决方案1】:

在单独的架构中创建这些存储过程(使用CREATE SCHEMA),然后为负责用户授予或撤销该架构中所有存储过程的执行权。

【讨论】:

    【解决方案2】:

    作为建议,您可以在命名时使用合同,例如 spTest 是启用的,spTest_Disabled 是同一个被禁用的,因此您可以使用此签名编写另一个存储过程 spChangeSpStatus(spName,state) 此 sp 使用 sp_rename将程序重命名为新程序,(我的意思是在其名称中添加_disabled 或从名称中删除_disabled

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      您不能创建子文件夹,但可以创建另一个架构。给它起任何你喜欢的名字(比如inactive)并适当地设置它的权限。

      然后编写一个脚本将对象从工作模式(比如dbo)移动到inactive

      alter schema inactive transfer dbo.proc
      

      【讨论】:

        【解决方案4】:

        有一个名为SQLTreeo 的廉价工具允许您在对象资源管理器中创建文件夹。如果我没记错的话,有两种操作模式,一种是允许每个使用该工具的用户拥有自己的文件夹结构,另一种是在所有安装了 SQLTreeo 的机器上强制使用通用文件夹结构。

        【讨论】:

          【解决方案5】:

          创建一个新表来管理您的 SP,并在每个 SP 中添加一个 IF,如果该 sp 为 Active=true,则始终询问创建的表 dbo.ManagerSP,如果为 true,则 SP 运行,,,如果不是,, ,不运行,,,

          为了控制您的所有 SP,只需在 dbo.ManagerSP 中运行活动状态的更新

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-04-09
            • 2023-03-23
            • 1970-01-01
            • 1970-01-01
            • 2012-11-03
            • 2022-10-14
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多