如果脚本出错,将停止 SQL 创建数据库
Stopping SQL from creating databases if there was an error on script
情况:
当您 运行 一个脚本出现错误时(即使只有一个),SQL 无论如何都会创建数据库。您 运行 您的脚本,弹出一些错误,但您看到您的数据库已创建...但没有某些表、触发器、关系等。
它只会创建您在脚本中“做得很好”的内容;一个完全无用的结果,因为您需要整个数据库,而不仅仅是“正确完成”的内容。现在你必须删除那个不完整的数据库,纠正错误,希望这次一切顺利。不,你手上有另一个不完整、无用的数据库,你必须再次删除它并再次检查你的脚本(冲洗并重复直到所有错误都解决)。
Why SQL does this? Wouldn't it be better to not to create anything at all until the errors are solved from the script? That way I wouldn't have to lose my time deleting lots of databases that don't have everything I need...
Is there a way or an option to "tell" SQL not to create databases
unless the script is completely error-free?
我真的希望有这样的解决方案存在,不断删除数据库令人沮丧。谢谢。
是的,有一个简单的解决方案。这叫做事务管理:
SET XACT_ABORT ON
BEGIN TRANSACTION
-- Do your things
COMMIT TRANSACTION
如果有任何失败,整个事务将被回滚,就好像它从未存在过一样。
情况:
当您 运行 一个脚本出现错误时(即使只有一个),SQL 无论如何都会创建数据库。您 运行 您的脚本,弹出一些错误,但您看到您的数据库已创建...但没有某些表、触发器、关系等。
它只会创建您在脚本中“做得很好”的内容;一个完全无用的结果,因为您需要整个数据库,而不仅仅是“正确完成”的内容。现在你必须删除那个不完整的数据库,纠正错误,希望这次一切顺利。不,你手上有另一个不完整、无用的数据库,你必须再次删除它并再次检查你的脚本(冲洗并重复直到所有错误都解决)。
Why SQL does this? Wouldn't it be better to not to create anything at all until the errors are solved from the script? That way I wouldn't have to lose my time deleting lots of databases that don't have everything I need...
Is there a way or an option to "tell" SQL not to create databases unless the script is completely error-free?
我真的希望有这样的解决方案存在,不断删除数据库令人沮丧。谢谢。
是的,有一个简单的解决方案。这叫做事务管理:
SET XACT_ABORT ON
BEGIN TRANSACTION
-- Do your things
COMMIT TRANSACTION
如果有任何失败,整个事务将被回滚,就好像它从未存在过一样。