启用/禁用存储过程

时间:2014-04-16 15:54:47

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

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

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

5 个答案:

答案 0 :(得分:4)

在单独的模式中创建这些存储过程(使用CREATE SCHEMA),然后对该模式中的所有存储过程执行GRANT或REVOKE执行权限。

答案 1 :(得分:1)

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

我希望这会有所帮助

答案 2 :(得分:1)

您无法创建子文件夹,但可以创建另一个架构。将其命名为您喜欢的任何名称(例如inactive),并相应地设置权限。

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

alter schema inactive transfer dbo.proc

答案 3 :(得分:1)

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

答案 4 :(得分:0)

创建一个新表来管理你的SP,并且在每个SP中只添加一个IF,它总是要求创建的表dbo.ManagerSP如果sp是Active = true,如果是,则运行SP,如果没有, ,而不是运行,

有了控制权,你所有的SP只需要在dbo.ManagerSP中运行一个活动状态的更新