带有可选参数的存储过程,该参数在SQL Server Management Studio中不显示"执行存储过程"或者"脚本存储过程"

时间:2017-08-08 13:43:32

标签: sql-server sql-server-2008-r2 ssms sql-server-2014 ssms-2014

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

这两个都导致执行SP的预构建SQL查询,并且它们都包含来自SP的可选参数。有没有办法让它成为可选参数"隐藏"?

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

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

1 个答案:

答案 0 :(得分:3)

您可以使用另一个包装存储过程:

valid.file

打包机:

CREATE PROCEDURE dbo.my_orig_proc
    @id INT
   ,@some_param_default INT = 10

AS
BEGIN
...
END

如有必要,我还会限制访问原始程序。

另一种方法是添加支票,不允许特定用户覆盖价值:

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

缺点:您需要在两个位置更改参数值,如果用户具有模拟权限,他仍然可以执行它。