我在AWS RDS SQL Server数据库中遇到了奇怪的问题,但我无法弄清楚发生了什么。关于Amazon RDS SQL Server的ANSI警告未设置
试验1个
create table #tmp
(test varchar(10) null)
insert into #tmp
select 'asfsadfasdsafdafas'
select * from #tmp
drop table #tmp
结果:
消息8152,级别16,状态14,行5
字符串或二进制数据将被截断。------------------ asfsadfasd
当我看到数据库的属性,它说的是ANSI:在
(0行(S)的影响)
测试2
set ANSI_WARNINGS OFF
create table #tmp1
(test varchar(10) null)
insert into #tmp1
select 'asfsadfasdsafdafas'
select * from #tmp1
drop table #tmp1
结果警告已启用设置为FALSE,但是,数据库似乎不像预期的那样运行。
任何帮助,将不胜感激。
编辑: 另一个例子可能有助于
ALTER DATABASE test_db
set QUOTED_IDENTIFIER OFF
go
select "hello"
结果:
消息207,级别16,状态1,行5 无效列名 '你好' 。
感谢
几乎所有的客户端(例如ADO,ODBC等),将默认设置ANSI_WARNINGS。无论如何,我强烈建议保留它 - 如果你想在这里发生截断,很容易指定一个'SUBSTRING'操作。如果关闭了ansi警告,很多SQL Server的功能都不可用,所以开发需要关闭它们的代码是一个坏习惯。 –
仅供参考http://www.sqlservercentral.com/articles/SET+Options/144571/ – SQL006
感谢达米安 - 如果我能做到这一点,我会喜欢它。不幸的是,这不是我们的选择。我正在将现有服务器迁移到AWS,我需要按原样复制它。我也有一个与quoted_identifiers类似的问题。 – Vandelay