在SQL Server Management Studio“执行存储过程”或“脚本存储过程”中未显示可选参数的存储过程

问题描述:

在SQL Server Management Studio(SSMS)中,可以使用GUI执行存储过程以获得帮助。这可以通过在对象资源管理器中右键单击存储过程并选择“执行存储过程”或“脚本存储过程为>创建到>新查询编辑器窗口”来完成。在SQL Server Management Studio“执行存储过程”或“脚本存储过程”中未显示可选参数的存储过程

这两个都会导致预构建的SQL查询来执行SP,并且它们都包含来自SP的可选参数。有没有一种方法可以使可选参数“隐藏”?

我有一些使用SSMS运行某些SP的用户支持人员,我不希望他们提供某些可选参数的值。如果需要,我希望能够在运行SP时自己提供,而不是用户支持人员。

我已经标记了SQL Server 2014和2008 R2,以防SP中有一些选项可以设置。

+1

一种方法是用另一个包装过程并限制对某些参数的访问。然后在这个程序里面调用你的原始程序。 – lad2025

+0

谢谢我已经想到了。 –

你可以与其他包装你的存储过程:

​​

包装:

CREATE PROCEDURE dbo.my_wrapper_proc 
    @id INT 
AS 
BEGIN 
    EXEC dbo.my_orig_proc @id; 
END 

我还会限制访问,如果必要的一部开拓创新的过程。


另一种方法是增加检查,不允许使用特定的用户覆盖值:

CREATE PROCEDRUE dbo.my_orig_proc 
    @id INT, 
    ,@some_param_default INT = 10 
AS 
BEGIN 
    IF USER_NAME() = 'user_name' AND @some_param_default <> 10 
     RAISERROR('You cannot change @some_param_default value' ,16,1); 
END 

缺点:您需要在两个地方需要修改的参数值,如果用户有冒充privilige他仍然可以执行它。