【问题标题】:How to avoid Ctrl-E execute accidents with SQL Server?SQL Server如何避免Ctrl-E执行意外?
【发布时间】:2021-11-28 20:09:01
【问题描述】:

SQL Server Management Studio 在按下 Ctrl-E 后执行整个脚本。

对于手动维护脚本文件,我已经注释掉了所有的 UPDATE、INSERT 和 DELETE 语句。

然后只能通过选择要执行的 SQL 脚本来执行。

还有其他方法可以避免 Ctrl-E 执行意外吗?

【问题讨论】:

  • 抱歉,SQL Server 查询分析器还是 SQL Server Management Studio? QA 已被弃用多年,但它是一个实际产品,所以我问...
  • 很确定您的意思是 SSMS 而不是查询分析器。一个人是如何“不小心”按 ctrl-e 的?您也可以按 F5,这更容易一些。不过不太确定您的问题是什么。
  • (我总是在我的不良习惯/最佳实践演示文稿中开了个玩笑,避免这种情况的一种方法是让您的新查询模板在顶部有一个BEGIN TRANSACTION;,并将提交和回滚注释掉下面, 如果你做了一个 booboo, 这会给你回滚所有东西的机会. 但有时你会开玩笑, 因为你会在事务中执行一些更新, 然后去吃午饭或回家过夜......
  • @squillman - 你是对的,我使用 SSMS(并且在几年前使用过 QA)。我已经相应地编辑了我的问题。谢谢!

标签: sql-server tsql ssms


【解决方案1】:

在脚本顶部添加set noexec on;。这将阻止在文件中运行 任何 语句。

【讨论】:

  • 就是这样。
  • 谢谢,曼多。 :)
  • @JohnH 就是这样......直到您忘记添加该子句。这就是为什么在我们公司,我们在所有关键环境中都删除了这个快捷方式。 YMMV,像往常一样;-)。
  • @TT。 - 你说得对。但恕我直言,一路下来都是乌龟。也就是说,您的解决方案需要应用于您组织中的所有 SSMS 安装。因此,您的“直到您忘记应用它才有效”的告诫也适用于您。没有防弹的解决方案。
  • @BenThul 是的。这是我们在关键环境中每次新安装时坚持的程序。在任何情况下,我们都不想让我们的手指被烫伤,这就是我们的策略。更多的故障点,一些安装而不是大量的脚本等等。
【解决方案2】:

在 SQL Server Management Studio 中,您可以删除快捷键 CTRL+E 来执行查询。

转到菜单中的工具 > 选项,然后转到左侧树中的环境 > 键盘 > 键盘。然后在右侧表格中选择Query.Execute。选择快捷方式CTRL+E (SQL Query Editor),然后单击删除以删除快捷方式。然后,当您单击 CTRL+E 时,您将无法再执行查询。

【讨论】:

    【解决方案3】:

    为了防止从头到尾执行整个脚本文件,并且只允许运行选定的 sn-ps,这样可以:

    WHILE 1=1
      PRINT 'NOT ALLOWED, press the STOP button'
    
    PRINT 'After WHILE, will not show unless executed manually'
    
    GO
    
    PRINT 'After GO, will not show unless executed manually'
    

    由于服务器进入非常繁忙的循环,点击STOP按钮后可能不会立即停止,但最终会停止。

    为了完整起见,这里是停止按钮:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      • 2016-01-02
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      相关资源
      最近更新 更多