SQL Server Management Studio "execute stored procedure" 或 "script stored procedure" 中未显示的带有可选参数的存储过程
Stored procedure with optional parameter that doesn't show in SQL Server Management Studio "execute stored procedure" or "script stored procedure"
在 SQL Server Management Studio (SSMS) 中,您可以使用 GUI 执行存储过程以获得帮助。这可以通过右键单击对象资源管理器中的存储过程并选择 "Execute Stored Procedure" 或 "Script Stored Procedure as > CREATE to > New Query Editor Window".
来完成。
这两者都会导致预构建的 SQL 查询来执行 SP,并且它们都包含来自 SP 的可选参数。有没有办法让它的可选参数是 "hidden"?
我有一些用户支持人员使用 SSMS 运行 某些 SP,我不希望他们为某些可选参数提供值。我希望能够自己提供它们,如果需要的话,当我 运行 SP,而不是用户支持人员时。
我标记了 SQL Server 2014 和 2008 R2,以防我可以在 SP 中设置一些选项。
您可以用另一个包装您的存储过程:
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
如有必要,我也会限制对原始程序的访问。
另一种方法是添加检查并且不允许特定用户覆盖值:
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
缺点:需要修改两个地方的参数值,如果用户有模拟权限,他仍然可以执行。
在 SQL Server Management Studio (SSMS) 中,您可以使用 GUI 执行存储过程以获得帮助。这可以通过右键单击对象资源管理器中的存储过程并选择 "Execute Stored Procedure" 或 "Script Stored Procedure as > CREATE to > New Query Editor Window".
来完成。这两者都会导致预构建的 SQL 查询来执行 SP,并且它们都包含来自 SP 的可选参数。有没有办法让它的可选参数是 "hidden"?
我有一些用户支持人员使用 SSMS 运行 某些 SP,我不希望他们为某些可选参数提供值。我希望能够自己提供它们,如果需要的话,当我 运行 SP,而不是用户支持人员时。
我标记了 SQL Server 2014 和 2008 R2,以防我可以在 SP 中设置一些选项。
您可以用另一个包装您的存储过程:
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
如有必要,我也会限制对原始程序的访问。
另一种方法是添加检查并且不允许特定用户覆盖值:
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
缺点:需要修改两个地方的参数值,如果用户有模拟权限,他仍然可以执行。