compatibility level set to |
compatibility level set to |
Possibility of impact |
The WITH keyword is always optional for the lock hint in the FROM clause. |
However, in some exceptions, these hints are only supported in the FROM clause when table hints are specified with the WITH keyword. For more information, see FROM (Transact-SQL). |
High |
Supports the use of outer join operators *= and =* in warning messages. |
The use of these two operators is not supported; the OUTER JOIN keyword should be used. |
High |
When a column reference in the ORDER by list is bound to a column defined in the SELECT list, the ambiguity of the column is ignored, and the column prefix is sometimes ignored. This can cause the result set to be returned in an unexpected order. For example, there is a two-part breakdown (<table_alias>. <column>) The ORDER by clause can be used as a reference to a column in the SELECT list, but will token the alias. Please consider the following query. SELECT c1 = -c1 FROM t _table AS x ORDER BY x.c1
When executed, the column prefix in ORDER by is ignored. The sort operation does not perform as expected on the specified source column ( x.c1 ), but instead on the derived column defined in the query c1 . The execution plan for this query is displayed by first calculating the values of the derived columns, and then sorting the computed values. |
If there is an ambiguity in the column, an error is raised. The column prefix (if any) specified in ORDER by is not ignored when binding to a column defined in the SELECT list. Please consider the following query. SELECT c1 = -c1 FROM t _table AS x ORDER BY x.c1
When executed, the column prefix in the ORDER by clause is not ignored. The sort operation executes as expected for the specified source column ( x.c1 ). The execution plan for this query displays the sort operator to t_table sort the rows returned from, and then sorts the values of the derived columns defined in the SELECT list c1 . |
In |
In insert SELECT, if the union belongs to a different data type, each union branch is converted directly to the type of the INSERT destination column. Even if the union that you are using may fail due to incompatible type conversions, INSERT SELECT causes the union to execute successfully because the branch of the result type of union is never converted. |
The result type of UNION is derived independently of the INSERT SELECT. Each branch of the Union is converted to the result type of union and then converted to the target column type of INSERT. If there is an incompatible type in the UNION, the first conversion may result in an error. To run at compatibility level 90, you must repair the union of all incompatible types that are used in INSERT SELECT. |
In |
When a view or referenced view uses the TOP clause, inserting and updating through the view is not supported correctly in the view that specifies the WITH CHECK OPTION clause. |
Inserting and updating through views is not supported in views that use the with CHECK OPTION when the view or referenced view uses the TOP clause. |
In |
The UNION of a variable-length column and a fixed-length column produces a fixed-length column. |
The UNION of a variable-length column and a fixed-length column produces a variable-length column. |
In |
Allows the use of SET xact_abort OFF in triggers. |
The use of SET xact_abort OFF in triggers is not allowed. |
In |
Lets you use (and ignore) the FOR BROWSE clause in the view. |
Use the FOR BROWSE clause in the view is not allowed. |
In |
ANSI_WARNINGS does not control domain errors. If Ansi_warnings is set to OFF and ARITHABORT is not changed, the ARITHABORT setting is respected. |
The domain error is controlled by Ansi_warnings and is an error with a severity level of 16. If Ansi_warnings or ARITHABORT is on, an error is thrown instead of returning a NULL value. This change may break user scripts that depend on ARITHABORT that are set to OFF. |
In |
If a direct pass query executed on a remote data source (OpenRowset or OpenQuery) produces a column with duplicate names, the duplicate column names are ignored unless the columns are explicitly named in the query. |
If you generate a column with duplicate column names for a direct pass query performed on a remote data source (OpenRowset or OpenQuery), an error is raised. |
Low |
String constants and varbinary constants of size greater than 8000 are treated as text,ntext , or image. |
String constants and varbinary constants larger than 8000 are treated as varchar (max) types (or are treated as nvarchar (max) and varbinary, respectively ( Max)). If the select list contains such an expression, you can change the use select ... The data type of the table created by into. |
Low |
By converting a lower-priority comparison number in a type hierarchy to a higher-priority type, in each numeric type (smallint,tinyint,int,bigint, Numeric,decimal,smallmoney,and money) are compared. |
Numeric type values are compared without conversion. This helps improve performance. However, this can cause some changes in behavior, especially in cases where the conversion causes an overflow exception. |
Low |
The built-in metadata function that uses the string parameter truncates the input if its input length is greater than 4,000 characters. |
If truncation causes the loss of non-whitespace characters, the built-in metadata function throws an error. |
Low |
The disabled character set in an unquoted identifier remains unchanged. |
The Transact-SQL parser supports the Unicode 3.2 standard, which changes the character classification of some international characters that are currently prohibited from being used in delimited identifiers. |
Low |
When a floating-point domain error occurs (that is, the log () function has a negative argument), set ANSI_WARNINGS on does not overwrite set ARITHABORT OFF. If Ansi_warnings is on but ARITHABORT is OFF, a floating-point domain error does not cause the query to terminate. |
Set ANSI_WARNINGS on completely overrides the ARITHABORT OFF setting. In this case, a floating-point domain error causes the query to terminate. |
Low |
Allows (and ignores) non-integer constants in the ORDER by clause. |
Non-integer constants are not allowed in the ORDER by clause. |
Low |
An empty Set statement is allowed (no set option specified). |
Empty SET clauses are not allowed. |
Low |
The IDENTITY property is not correctly derived for the column generated by the derived table. |
The columns generated for the derived table are correctly derived from the IDENTITY property. |
Low |
The Nullable property of an arithmetic operator that performs operations on a floating-point data type can always be null. |
When the input is non-nullable and ansi_warnings is on, the nullable property of the arithmetic operator that performs the operation on the floating-point data type is changed to non-nullable. |
Low |
INSERT in combination with UNION: In a SELECT statement, the types generated by each result set are converted to the target result type. |
INSERT in combination with UNION: SELECT statement, determine the primary type of each branch and convert the result to the target table type before converting it to that type. |
Low |
In SELECT: In the For XML statement, the hex (' character) and Hex ("character" ) are always manifested, even if not required. |
The for XML only manifested Hex (27) and Hex (22) only when needed. These characters are not manifested in the following cases:
- In the property content, if the attribute value is "delimited" , then the hex (' character) is not manifested, and if the attribute value is ' delimited ' , then the hex ("character" ) is not manifested.
- In the element content, the Hex (27) and Hex (22) are never manifested.
|
Low |
In the for XML, the timestamp value is mapped to an integer. |
In the for XML, the timestamp value is mapped to a binary value. For more information, see for XML support for timestamp data types. |
High if timestamp column is used; otherwise low |
In the for XML and OPENXML, a large range of Unicode characters (3 bytes) in the name is represented by a 8-bit representation. For example, the for XML uses a 8-bit representation of the Unicode code-bit u+10000 in the following manner: <a_x00010000_ c1= "1"/> td> |
In the for XML and OPENXML, the name is represented by a large range of Unicode characters (3 bytes) using 6-bit. For example, the for XML uses a 6-bit representation of the Unicode code-bit u+10000 in the following manner: <a_x010000_ c1= "1"/> |
Low |
In the for XML, a derived table mapping using AUTO mode is considered transparent. For example:
&NBSP; |
copy code |
use adventureworkscreate TABLE test (id int), insert INTO Test VALUES (1), insert INTO Test VAL UES (2);
SELECT * FROM (select a.ID as a, b.id as B from test a joins Test B on a.id=b.id) test for XML AUTO; |
If the compatibility level for AdventureWorks is set to 80, the example above will be generated: <a a= "1" ><b b = "1"/></A> <a a= "2" ><b b= "2"/></A> |
In the for XML, A derived table mapping that uses AUTO mode is considered opaque. If the compatibility level of AdventureWorks is set to 90, the example above will be generated: <test a= "1" b= "1"/> <test a= "2" b= "2"/> |
High If the for XML AUTO mode is applied to the view; otherwise low |
In Japanese and Korean only, the string-to -money conversion supports the use of the backslash character (/) as the currency symbol. |
In all languages, the backslash character ( /) is accepted in all string-to-money conversions. When/as a currency symbol, ISNUMERIC returns TRUE. For databases on versions of SQL Server prior to SQL Server 2005, this new behavior splits dependent on the included/IsNumeric return value and the language used is neither Japanese nor Korean indexed and computed columns. |
Low |
The result of an arithmetic operator is always nullable, even if the operand is not nullable and ansi_warnings or ARITHABORT is set to ON. |
When Ansi_warnings or ARITHABORT is set to ON, the result of a floating-point arithmetic operator cannot be null if the two operands are not NULL. This nullability change can cause an error in the following scenario: Use bcp to bulk export data in a binary format from a SQL Server 2000 table that contains computed columns that use floating-point arithmetic operators, and then use bcp or BULK INSERT to bulk Import these data into SQL Server 2005 tables that contain the same definition.
Attention: |
When all two options are OFF, the database engine marks the result as nullable. This is the same as in SQL Server 2000. |
|
Low |
For built-in functions with nvarchar as parameters, the value is converted to nvarchar(4000) If the supplied value is varchar. In SQL Server 2000, if a large value is passed, the value is truncated itself. |
For built-in functions with nvarchar as parameters, the value is converted to nvarchar(4000) Even if the supplied value is varchar. However, if you pass a large value, SQL Server 2008 generates an error. To run at compatibility level 90, you must fix any custom code that relies on truncation behavior. |
Low |
Fixed-Length (char,binary , or nchar) strings with variable lengths (varchar,varbinary,nvarchar the Union of Strings returns a fixed-length result. |
The union of a variable-size string and a fixed-size string returns a variable-size string. To run at compatibility level 90, you must fix any place (index, query, and computed column) as long as it depends on the type that is obtained by the set of the variable and fixed-size types. |
Low |
The object name that contains the character 0xFFFF is a valid identifier. |
The object name that contains the character 0xFFFF is an invalid identifier and cannot be accessed. To run at compatibility level 90, you must rename the object that contains this character. |
Low |
In SELECT isnumeric ('<string>'), the comma embedded within<string> is very important. For example, the following SELECT ISNUMERIC(‘121212,12‘) query returns 0. This indicates that the string 121212,12 is not a number. |
In SELECT isnumeric ('<string>'), the comma embedded in<string> can be ignored. For example, the following SELECT ISNUMERIC(‘121212,12‘) query returns 1. This indicates that the string 121212,12 is a number. |
Low |
The colon (:) that follows the reserved keyword in a Transact-SQL statement is ignored. |
The colon after the keyword is reserved in a Transact-SQL statement (:) Will cause the statement to fail. |
Low |
A GROUP by clause in a subquery that references a column in an external query succeeds. |
The GROUP by clause in a subquery referencing a column in an external query returns an error, according to the SQL standard. |
Low |