Stored procedures 服务器像Unicode一样打开存储过程

Stored procedures 服务器像Unicode一样打开存储过程,stored-procedures,sql-server-2008-r2,Stored Procedures,Sql Server 2008 R2,正如您在下面的图片中所看到的,我的SQL存储过程以某种方式打开了类似Unicode SPs的过程。 以前不是这样,我也不知道现在是怎么回事 我有大约5000个存储过程,因此不可能手动编辑它。 我的SPs从ALTER PROCEDURE开始,之前的所有内容都以某种方式添加 您的SP仍能正常工作。这正是SQLServerManagementStudio在您想要生成ALTER或CREATE语句时编写对象脚本的方式 要更改此行为,请转到工具>选项>SQL Server对象资源管理器>脚本编写 将选项“I

正如您在下面的图片中所看到的,我的SQL存储过程以某种方式打开了类似Unicode SPs的过程。 以前不是这样,我也不知道现在是怎么回事

我有大约5000个存储过程,因此不可能手动编辑它。
我的SPs从
ALTER PROCEDURE
开始,之前的所有内容都以某种方式添加


您的SP仍能正常工作。这正是SQLServerManagementStudio在您想要生成ALTER或CREATE语句时编写对象脚本的方式

要更改此行为,请转到工具>选项>SQL Server对象资源管理器>脚本编写

将选项“Include IF NOT EXISTS子句”设置为“False


(在SQL Server Management Studio的其他版本中,该选项可能被称为“检查对象是否存在”)

如前所述,将脚本选项“Include IF NOT EXISTS子句”更改为false可以解决问题。要添加上下文,如果该值为true,则必须通过将整个Alter Procedure语句放入@statement变量来编写脚本,因为与存在性检查关联的条件逻辑要求Alter Procedure语句位于BEGIN/END块内,这是不允许的。因此,微软的解决办法是将整个ALTER PROCEDURE语句放在@statement变量中,该变量在BEGIN/END块中有条件地执行。

这很有帮助。非常感谢,我们为这件事苦苦挣扎了几个星期。是的,这些程序也适用于此,但对其进行一些更改确实很痛苦,因为所有内容都是红色的:)