2017-08-17 6 views
0

J'ai un problème étrange dans une base de données AWS RDS SQL Server que j'ai tourné et je ne peux pas comprendre ce qui se passe.ANSI Avertissements sur Amazon RDS SQL Server ne pas définir

Test 1

create table #tmp 
(test varchar(10) null) 

insert into #tmp 
select 'asfsadfasdsafdafas' 

select * from #tmp 
drop table #tmp 

Résultats dans:

Msg 8152, niveau 16, état 14, ligne 5
Chaîne ou des données binaires seront tronquées.

(0 rangée (s) affecté)

test 2

set ANSI_WARNINGS OFF 

create table #tmp1 
(test varchar(10) null) 

insert into #tmp1 
select 'asfsadfasdsafdafas' 

select * from #tmp1 
drop table #tmp1 

Résultats dans:

------------------ 
asfsadfasd 

Quand je regarde les propriétés de base de données, il est dit que la norme ANSI Warnings Enabled est défini sur FALSE, cependant, la base de données ne semble pas se comporter comme prévu.

Toute aide serait appréciée.

EDIT: Un autre exemple pourrait aider

ALTER DATABASE test_db 
set QUOTED_IDENTIFIER OFF 
go 

select "hello" 

Résultats dans:


Msg 207, niveau 16, état 1, ligne 5 nom de colonne non valide 'bonjour' .

Merci

+1

Presque tous les clients (par exemple ADO, ODBC, etc.) seront mis en ANSI_WARNINGS par défaut. Je recommande vivement de le laisser de toute façon - si vous voulez que la troncature se produise ici, il est assez facile de spécifier une opération 'SUBSTRING'. Et beaucoup de fonctionnalités SQL Server ne sont tout simplement pas disponibles si les avertissements ansi sont désactivés, donc c'est une mauvaise habitude de développer du code qui les oblige à partir. –

+0

Pour référence http://www.sqlservercentral.com/articles/SET+Options/144571/ – SQL006

+0

Merci Damien - J'adorerais pouvoir le faire. Malheureusement, ce n'est pas une option pour nous. Je migre un serveur existant vers AWS et j'ai besoin de le répliquer tel quel. J'ai aussi un problème similaire avec quoted_identifiers. – Vandelay

Répondre

0
--The Issue Occur Because of Length Of Datatype 

    create table #tmp1 
    (test varchar(50) null) 

    insert into #tmp1 
    select 'asfsadfasdsafdafas' 

    select * from #tmp1 
    drop table #tmp1 
--============================== 

When create or alter SQL object like Stored Procedure, User Defined Function in Query Analyzer, it is created with following SQL commands prefixed and suffixed. What are these – QUOTED_IDENTIFIER ON/OFF and ANSI_NULL ON/OFF? 
SET QUOTED_IDENTIFIER ON 
GO 
SET ANSI_NULLS ON 
GO--SQL PROCEDURE, SQL FUNCTIONS, SQL OBJECTGO 
SET QUOTED_IDENTIFIER OFF 
GO 
SET ANSI_NULLS ON 
GO 

ANSI NULL ON/OFF: 
This option specifies the setting for ANSI NULL comparisons. When this is on, any query that compares a value with a null returns a 0. When off, any query that compares a value with a null returns a null value. 

QUOTED IDENTIFIER ON/OFF: 
This options specifies the setting for usage of double quotation. When this is on, double quotation mark is used as part of the SQL Server identifier (object name). This can be useful in situations in which identifiers are also SQL Server reserved words. 
+0

Merci Affaiz - Je vais reformuler ma question un peu – Vandelay

+0

Merci - Je dois pouvoir régler ceci au niveau de la base de données ie pour qu'il persiste au-delà de cette session – Vandelay

+0

Clic droit Le DB >> OPTIONS >> Identificateurs cités activés ON/DE –