当对象存在检查打开时,为 SQL 个对象生成静态 SQL 脚本而不是动态 SQL
Generate static SQL scripts for SQL objects instead of dynamic SQL when object existence check is turned ON
我在我的 SQL Server Mgmt Studio 中保持 "Check for object existence" 选项处于打开状态,因为我需要 SQL 服务器在删除和重新创建之前自动包含 "IF EXISTS" 语句对象。
现在,每当我右键单击并尝试为任何对象生成 "Create and Drop scripts" 时,它会将整个 CREATE 语句作为动态 SQL 放置,我认为这完全是一团糟而且更容易错误。
是否有任何选项可以让 SSMS 在对象存在检查打开时生成静态 SQL 脚本?
我正在使用 SSMS 2012。
如果我理解正确,这是正确/最好的方法...
问题是,在 T-SQL 中没有 DROP_AND_CREATE
语句。许多人使用
IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='SomeFunction')
DROP FUNCTION dbo.SomeFunction;
GO
CREATE FUNCTION dbo.SomeFunction...
但这是有问题的,如果有像 CONSTRAINT
或 GRANT
或其他的依赖关系...
使用上面的检查并决定是创建 CREATE
语句还是将第一个单词动态更改为 ALTER
会更容易。您不能将这两个语句都放在某种条件工作流中,因为它必须是 批处理中的第一个 。
... pure mess and more prone to errors
特别是对于生成的语句,我不希望出现错误...你是对的,这并不漂亮,但许多代码生成器不会生成 漂亮的代码。这并不重要...
我在我的 SQL Server Mgmt Studio 中保持 "Check for object existence" 选项处于打开状态,因为我需要 SQL 服务器在删除和重新创建之前自动包含 "IF EXISTS" 语句对象。
现在,每当我右键单击并尝试为任何对象生成 "Create and Drop scripts" 时,它会将整个 CREATE 语句作为动态 SQL 放置,我认为这完全是一团糟而且更容易错误。
是否有任何选项可以让 SSMS 在对象存在检查打开时生成静态 SQL 脚本?
我正在使用 SSMS 2012。
如果我理解正确,这是正确/最好的方法...
问题是,在 T-SQL 中没有 DROP_AND_CREATE
语句。许多人使用
IF EXISTS(SELECT 1 FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_NAME='SomeFunction')
DROP FUNCTION dbo.SomeFunction;
GO
CREATE FUNCTION dbo.SomeFunction...
但这是有问题的,如果有像 CONSTRAINT
或 GRANT
或其他的依赖关系...
使用上面的检查并决定是创建 CREATE
语句还是将第一个单词动态更改为 ALTER
会更容易。您不能将这两个语句都放在某种条件工作流中,因为它必须是 批处理中的第一个 。
... pure mess and more prone to errors
特别是对于生成的语句,我不希望出现错误...你是对的,这并不漂亮,但许多代码生成器不会生成 漂亮的代码。这并不重要...