在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中有一些选项可以设置。
答
你可以与其他包装你的存储过程:
包装:
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他仍然可以执行它。
一种方法是用另一个包装过程并限制对某些参数的访问。然后在这个程序里面调用你的原始程序。 – lad2025
谢谢我已经想到了。 –