2012-01-13 43 views
3

今天,我编辑了我公司网站上最重要的表格。我忘记了在更新语句后添加where子句,并且更改了所有用户的登录名。大约13,000人是恶魔。SQL Server:更新大号时出现警告。行

在SQL Server或SQL Server Management Studio中是否有一种方法可以在更新或删除超过10行的行时发出警报?

+9

我不认为你需要它。你只犯过一次这样的错误,在你的双脚掉下来之后,即使在现场服务器上运行选择语句也会给你带来汗水。 – devrooms 2012-01-13 01:34:57

+6

总是在事务中做类似的事情,所以你可以回滚以防万一...... – Sparky 2012-01-13 02:21:51

+3

除了在一个事务中运行更新,我建议你虔诚地选择包含你想要更新的数据的语句,并且将该语句转换为更新语句(当然,完成where语句)。 @devrooms评论也是我的经验准确。希望你有一个备份... – jlnorsworthy 2012-01-13 02:47:46

回答

2

这是一个稍微不同的方法,但如果你想被提醒的事实,您使用的是生产服务器,SSMS Tools Pack(无附加在SSMS)有一个漂亮的功能叫做窗口连接着色

您将每个使用的SQL Server与一种颜色相关联,并且每个查询窗口顶部都有一个对应的彩色条。我所有的生产服务器均为红色; dev是绿色的;和测试/分期是橙色的。当我需要小心时,对我来说总是非常明显的。

另外,默认情况下,每个新的查询窗口都会打开并显示BEGIN TRAN/ROLLBACK声明,因此您应该记得先测试可能具有破坏性的查询。

请注意我对该软件没有商业兴趣,但我发现它非常有用。

+0

非常感谢你。 – Indy 2012-01-14 16:09:49

+0

没问题。不要感到难过,我们都做过一次! – 2012-01-14 18:32:35

0

您可以添加一个更新触发器,当插入的表格的行数超过X行数时会失败,但如果您确实希望进行更改,则需要禁用/重置触发器(不难,但烦人 - 这是你以后,我想)。

但是,如果你正在做手动操作,它们应该在最后一个select中进行开始tran/rollback事务,以验证你正在做什么,并且只有在你满意后才提交它。 (我们大概都可以告诉你至少有一个案例,我们认为我们对此感到满意,但仍然犯了错误 - 哈哈)。

+0

哈哈哈,如何添加更新触发器? – Indy 2012-01-14 16:12:03