如果我就在SQL Server Management Studio中单击一个表,然后选择 '脚本表作为>创建>新查询编辑器窗口' 出现包含代码:SQL服务器ANSI_PADDING
SET ANSI_PADDING ON
....创建表...
SET ANSI_PADDING OFF
所以,我想,ANSI_PADDING是否开启或关闭影响了整个数据库,并将其接通,以创建一个表,然后再次关闭?
如果您创建一个关闭ANSI_Padding的表,会发生什么情况?你怎么能打开这张桌子?
如果我就在SQL Server Management Studio中单击一个表,然后选择 '脚本表作为>创建>新查询编辑器窗口' 出现包含代码:SQL服务器ANSI_PADDING
SET ANSI_PADDING ON
....创建表...
SET ANSI_PADDING OFF
所以,我想,ANSI_PADDING是否开启或关闭影响了整个数据库,并将其接通,以创建一个表,然后再次关闭?
如果您创建一个关闭ANSI_Padding的表,会发生什么情况?你怎么能打开这张桌子?
SET ANSI_PADDING控制的方式 列中存储值短于 所述定义的列的大小,和 列中存储值的是 在
char
,varchar
,binary
和varbinary
数据尾随空白的方式。在MicrosoftSQL服务器ANSI_PADDING的未来版本将 永远是和 选项明确设置为OFF的任何应用程序 产生错误。避免在新的开发工作中使用此功能,并且 计划修改 当前使用此功能的应用程序。
此设置仅影响新列的定义。创建列后,SQL Server将根据创建列时的设置存储值。 现有的列不受稍后对此设置的更改影响。
感谢您的回答。我很困惑。一方面,你说这只会影响新列的定义 - 而上面的anser说它会影响整个表中数据的检索方式? – 2010-08-25 15:53:02
@MikeWilson:两个答案都是正确的。上面引用的文字略有误导,因为它指的是在DDL中使用SET ANSI_PADDING而不是DML。 – 2010-08-26 00:05:10
所以,如果ANSI_PADDING应该是,我应该...... 当我选择“脚本表作为>创建>新查询编辑器窗口”,并在显示包含的代码: SET ANSI_PADDING ON ....创建表... SET ANSI_PADDING OFF ...删除'SET ANSI_PADDING OFF'?为什么SQL Server生成SET ANSI_PADDING OFF'如果它应该始终打开?顺便说一句,我正在使用2008年。 – 2010-08-26 09:27:47
所以,我想,ANSI_PADDING是否开启或关闭影响了整个数据库,并将其接通,以创建一个表,然后再次关闭?
不,SET选项仅影响连接的上下文,如果有2个连接进来,一个有ANSI_PADDING OFF,另一个ON,它们不会影响其他连接。但是......在一个连接中创建的表格将具有该设置对其执行的行为。
在这里阅读更多http://msdn.microsoft.com/en-us/library/ms190356.aspx
因此,如果连接1套进来ANSI_NULLS关闭 然后select * from bla where col = null
将工作
然而这将不用于连接2的工作,如果它与使用默认设置ANSI_NULLS( ON)
你可以看到你的设置是什么由要么执行dbcc useroptions
或者如果你是2005年和高达
SELECT SPID,VALUE,ANSI_SETTING
FROM (
SELECT @@SPID AS SPID,
CASE quoted_identifier
WHEN 1 THEN 'SET' ELSE 'OFF' END QUOTED_IDENTIFIER,
CASE arithabort
WHEN 1 THEN 'SET' ELSE 'OFF' END ARITHABORT,
CASE ansi_null_dflt_on
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_NULL_DFLT_ON,
CASE ansi_defaults
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_DEFAULTS ,
CASE ansi_warnings
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_WARNINGS,
CASE ansi_padding
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_PADDING,
CASE ansi_nulls
WHEN 1 THEN 'SET' ELSE 'OFF' END ANSI_NULLS,
CASE concat_null_yields_null
WHEN 1 THEN 'SET' ELSE 'OFF' END CONCAT_NULL_YIELDS_NULL
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID) P
UNPIVOT (VALUE FOR ANSI_SETTING IN(
QUOTED_IDENTIFIER,ARITHABORT,ANSI_NULL_DFLT_ON,
ANSI_DEFAULTS,ANSI_WARNINGS,
ANSI_PADDING,ANSI_NULLS,CONCAT_NULL_YIELDS_NULL
)
) AS unpvt
已发表评论,但我想在搜索相关主题http:// sqlmag时分享我的发现。com/blog/sql-server-management-studio-s-ugly-ansipadding-bug – 2015-04-30 04:06:57