是否有"你确定"存储过程执行?:)

Ash*_*Ash 6 sql confirm stored-procedures dialog

我有一个存储过程,正在做很多删除.成千上万的记录.它不会从应用程序中运行,但我担心的是,我的一个客户意外地运行它(由于他们的"好奇心",我之前遇到了问题):D

是.有备份和类似的东西,但我在想......不要吓唬他们......有没有办法问用户"你确定吗?" 在执行之前?:) 谢谢

Zom*_*eep 7

我想你可能有一个名为"确认"的参数,需要传入一个特定的字符串(例如,"我知道我在做什么"),如果没有设置,或设置不正确,只需从程序没有执行主代码.不完全是你想要的,但这是一个选择.

例如 - (未经测试且可能很糟糕的语法)

CREATE PROCEDURE dbo.mySproc (
@Confirmation Varchar(100)
) AS
BEGIN
    if(@Confirmation <> 'I know what I am doing')
    BEGIN
        return;
    END
    DELETE from table_name where condition
END
Run Code Online (Sandbox Code Playgroud)

  • 同意,但如果他们无论如何都可以直接访问sproc,那么没有什么可以阻止他们绕过任何东西.最好在整个过程中添加适当的访问/执行安全性. (5认同)

Row*_*haw 6

简而言之,没有.

该理论认为,任何有权查找并能够运行存储过程的人都应该被允许.最好限制权限,以便具有过度好奇心的人没有运行此权限的权限.

另一个不太安全的选择是需要一个需要作为参数传递的预定义秘密 - 当然,他们可以通过编写存储过程的脚本来找到秘密...

当然,另一点是:如果它不可调用,为什么要包括它?毕竟,当你来做管理类型任务时,你可以将这些语句编写为一个文件,你可以在自己的机器上保持安全