What
are the differences between SET QUOTED_IDENTIFIER ON and SET QUOTED_IDENTIFIER
OFF [SET QUOTED_IDENTIFIER ON vs SET QUOTED_IDENTIFIER OFF]?
SET QUOTED_IDENTIFIER ON
|
SET QUOTED_IDENTIFIER OFF
|
|||||
Use
|
It is
treated as IDENTIFIER
Allows
characters enclosed with double quotes[“”] for Object names
|
It is
treated as Literal OR Value
Returns
the string value enclosed with double quotes[“”] as value
|
||||
SET QUOTED_IDENTIFIER ON
CREATE TABLE "Child"(RecordId int IDENTITY(100,1))
GO
RESULT:
Command(s) completed successfully.
|
SET QUOTED_IDENTIFIER OFF
CREATE TABLE "Child"(RecordId
int IDENTITY(100,1))
GO
RESULT:
Msg
102, Level 15, State 1, Line 2
Incorrect
syntax near 'Child'.
|
|||||
CREATE TABLE Child(RecordId
int IDENTITY(100,1))
GO
INSERT Child DEFAULT VALUES
GO
SET QUOTED_IDENTIFIER ON
SELECT "RecordId" FROM Child
RESULT:
|
CREATE TABLE Child(RecordId int IDENTITY(100,1))
GO
INSERT Child DEFAULT VALUES
GO
SET QUOTED_IDENTIFIER OFF
SELECT "RecordId" FROM Child
RESULT:
|
|||||
SET QUOTED_IDENTIFIER ON
SELECT
"RecordId"
RESULT:
Msg
207, Level 16, State 1, Line 2
Invalid column
name 'RecordId'.
|
SET QUOTED_IDENTIFIER OFF
SELECT
"RecordId"
RESULT:
|
|||||
Best
practice is to use the SET QUOTED_IDENTIFIER ON setting.
|
Avoid
using SET QUOTED_IDENTIFIER OFF setting. As more and more new features
require this setting value to be ON. For example while working with Filtered
Indexes SET QUOTED_IDENTIFIER setting should be ON otherwise we will get into
an exception.
|
|||||
Objects which are
created with SET QUTOED IDENTIFIER ON/OFF
|
SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE
uses_quoted_identifier = 1
|
SELECT OBJECT_NAME(object_id)
FROM sys.sql_modules
WHERE
uses_quoted_identifier = 0
|
No comments:
Post a Comment