我知道有很多关于将存储过程迁移或同步到另一台服务器的主题,无论如何,我无法找到一些可接受的答案来解决以下问题。
我想通过脚本将ANSI_NULL值设置为OFF的存储过程迁移。 我想要迁移的过程示例:
USE [myDB]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[p_test_ansi_nulls] AS
SELECT CASE WHEN NULL = NULL THEN 'haha' ELSE 'no-haha' END h
ANSI_NULLS值存储在sys.sql_modules表中,但不存在于过程本身中。我尝试使用标头创建语句(包括SET ANSI_NULLS OFF字符串)并通过sp_executesql执行,但出现错误:
'CREATE / ALTER PROCEDURE'必须是查询批处理中的第一个语句。
那么有什么办法,如何使用此选项将程序迁移到另一台服务器或如何远程更改此设置? (程序非常复杂,因此我们无法更改代码..)
答案 0 :(得分:1)
完全按照你在那里写的方式去做。
SET ANSI_NULLS OFF
GO
CREATE PROCEDURE [dbo].[p_test_ansi_nulls] AS
SELECT CASE WHEN NULL = NULL THEN 'haha' ELSE 'no-haha' END h
这将创建ANSI_NULLS
关闭的程序:
此外,请注意 - 来自msdn:http://msdn.microsoft.com/en-us/library/ms188048.aspx
在SQL Server的未来版本中,ANSI_NULLS将始终为ON,并且将选项明确设置为OFF的任何应用程序都将生成错误。避免在新的开发工作中使用此功能,并计划修改当前使用此功能的应用程序。