Reserved Keywords-Transact-SQL

THIS TOPIC APPLIES TO: yesSQL Server (starting with 2008)yesAzure SQL DatabaseyesAzure SQL Data Warehouse yesParallel Data Warehouse

Microsoft SQL Server uses reserved keywords for defining, manipulating, and accessing databases. Reserved keywords are part of the grammar of the Transact-SQL language that is used by SQL Server to parse and understand Transact-SQL statements and batches. Although it is syntactically possible to use SQL Server reserved keywords as identifiers and object names in Transact-SQL scripts, you can do this only by using delimited identifiers.

The following table lists SQL Server reserved keywords.

ADD EXTERNAL PROCEDURE
ALL FETCH PUBLIC
ALTER FILE RAISERROR
AND FILLFACTOR READ
ANY FOR READTEXT
AS FOREIGN RECONFIGURE
ASC FREETEXT REFERENCES
AUTHORIZATION FREETEXTTABLE REPLICATION
BACKUP FROM RESTORE
BEGIN FULL RESTRICT
BETWEEN FUNCTION RETURN
BREAK GOTO REVERT
BROWSE GRANT REVOKE
BULK GROUP RIGHT
BY HAVING ROLLBACK
CASCADE HOLDLOCK ROWCOUNT
CASE IDENTITY ROWGUIDCOL
CHECK IDENTITY_INSERT RULE
CHECKPOINT IDENTITYCOL SAVE
CLOSE IF SCHEMA
CLUSTERED IN SECURITYAUDIT
COALESCE INDEX SELECT
COLLATE INNER SEMANTICKEYPHRASETABLE
COLUMN INSERT SEMANTICSIMILARITYDETAILSTABLE
COMMIT INTERSECT SEMANTICSIMILARITYTABLE
COMPUTE INTO SESSION_USER
CONSTRAINT IS SET
CONTAINS JOIN SETUSER
CONTAINSTABLE KEY SHUTDOWN
CONTINUE KILL SOME
CONVERT LEFT STATISTICS
CREATE LIKE SYSTEM_USER
CROSS LINENO TABLE
CURRENT LOAD TABLESAMPLE
CURRENT_DATE MERGE TEXTSIZE
CURRENT_TIME NATIONAL THEN
CURRENT_TIMESTAMP NOCHECK TO
CURRENT_USER NONCLUSTERED TOP
CURSOR NOT TRAN
DATABASE NULL TRANSACTION
DBCC NULLIF TRIGGER
DEALLOCATE OF TRUNCATE
DECLARE OFF TRY_CONVERT
DEFAULT OFFSETS TSEQUAL
DELETE ON UNION
DENY OPEN UNIQUE
DESC OPENDATASOURCE UNPIVOT
DISK OPENQUERY UPDATE
DISTINCT OPENROWSET UPDATETEXT
DISTRIBUTED OPENXML USE
DOUBLE OPTION USER
DROP OR VALUES
DUMP ORDER VARYING
ELSE OUTER VIEW
END OVER WAITFOR
ERRLVL PERCENT WHEN
ESCAPE PIVOT WHERE
EXCEPT PLAN WHILE
EXEC PRECISION WITH
EXECUTE PRIMARY WITHIN GROUP
EXISTS PRINT WRITETEXT
EXIT PROC

Additionally, the ISO standard defines a list of reserved keywords. Avoid using ISO reserved keywords for object names and identifiers. The ODBC reserved keyword list, shown in the following table, is the same as the ISO reserved keyword list.

Note

The ISO standards reserved keywords list sometimes can be more restrictive than SQL Server and at other times less restrictive. For example, the ISO reserved keywords list contains INT. SQL Server does not have to distinguish this as a reserved keyword.

Transact-SQL reserved keywords can be used as identifiers or names of databases or database objects, such as tables, columns, views, and so on. Use either quoted identifiers or delimited identifiers. Using reserved keywords as the names of variables and stored procedure parameters is not restricted.

ODBC Reserved Keywords

The following words are reserved for use in ODBC function calls. These words do not constrain the minimum SQL grammar; however, to ensure compatibility with drivers that support the core SQL grammar, applications should avoid using these keywords.

This is the current list of ODBC reserved keywords.

ABSOLUTE EXEC OVERLAPS
ACTION EXECUTE PAD
ADA EXISTS PARTIAL
ADD EXTERNAL PASCAL
ALL EXTRACT POSITION
ALLOCATE FALSE PRECISION
ALTER FETCH PREPARE
AND FIRST PRESERVE
ANY FLOAT PRIMARY
ARE FOR PRIOR
AS FOREIGN PRIVILEGES
ASC FORTRAN PROCEDURE
ASSERTION FOUND PUBLIC
AT FROM READ
AUTHORIZATION FULL REAL
AVG GET REFERENCES
BEGIN GLOBAL RELATIVE
BETWEEN GO RESTRICT
BIT GOTO REVOKE
BIT_LENGTH GRANT RIGHT
BOTH GROUP ROLLBACK
BY HAVING ROWS
CASCADE HOUR SCHEMA
CASCADED IDENTITY SCROLL
CASE IMMEDIATE SECOND
CAST IN SECTION
CATALOG INCLUDE SELECT
CHAR INDEX SESSION
CHAR_LENGTH INDICATOR SESSION_USER
CHARACTER INITIALLY SET
CHARACTER_LENGTH INNER SIZE
CHECK INPUT SMALLINT
CLOSE INSENSITIVE SOME
COALESCE INSERT SPACE
COLLATE INT SQL
COLLATION INTEGER SQLCA
COLUMN INTERSECT SQLCODE
COMMIT INTERVAL SQLERROR
CONNECT INTO SQLSTATE
CONNECTION IS SQLWARNING
CONSTRAINT ISOLATION SUBSTRING
CONSTRAINTS JOIN SUM
CONTINUE KEY SYSTEM_USER
CONVERT LANGUAGE TABLE
CORRESPONDING LAST TEMPORARY
COUNT LEADING THEN
CREATE LEFT TIME
CROSS LEVEL TIMESTAMP
CURRENT LIKE TIMEZONE_HOUR
CURRENT_DATE LOCAL TIMEZONE_MINUTE
CURRENT_TIME LOWER TO
CURRENT_TIMESTAMP MATCH TRAILING
CURRENT_USER MAX TRANSACTION
CURSOR MIN TRANSLATE
DATE MINUTE TRANSLATION
DAY MODULE TRIM
DEALLOCATE MONTH TRUE
DEC NAMES UNION
DECIMAL NATIONAL UNIQUE
DECLARE NATURAL UNKNOWN
DEFAULT NCHAR UPDATE
DEFERRABLE NEXT UPPER
DEFERRED NO USAGE
DELETE NONE USER
DESC NOT USING
DESCRIBE NULL VALUE
DESCRIPTOR NULLIF VALUES
DIAGNOSTICS NUMERIC VARCHAR
DISCONNECT OCTET_LENGTH VARYING
DISTINCT OF VIEW
DOMAIN ON WHEN
DOUBLE ONLY WHENEVER
DROP OPEN WHERE
ELSE OPTION WITH
END OR WORK
END-EXEC ORDER WRITE
ESCAPE OUTER YEAR
EXCEPT OUTPUT ZONE
EXCEPTION

Future Keywords

The following keywords could be reserved in future releases of SQL Server as new features are implemented. Consider avoiding the use of these words as identifiers.

ABSOLUTE HOST RELATIVE
ACTION HOUR RELEASE
ADMIN IGNORE RESULT
AFTER IMMEDIATE RETURNS
AGGREGATE INDICATOR ROLE
ALIAS INITIALIZE ROLLUP
ALLOCATE INITIALLY ROUTINE
ARE INOUT ROW
ARRAY INPUT ROWS
ASENSITIVE INT SAVEPOINT
ASSERTION INTEGER SCROLL
ASYMMETRIC INTERSECTION SCOPE
AT INTERVAL SEARCH
ATOMIC ISOLATION SECOND
BEFORE ITERATE SECTION
BINARY LANGUAGE SENSITIVE
BIT LARGE SEQUENCE
BLOB LAST SESSION
BOOLEAN LATERAL SETS
BOTH LEADING SIMILAR
BREADTH LESS SIZE
CALL LEVEL SMALLINT
CALLED LIKE_REGEX SPACE
CARDINALITY LIMIT SPECIFIC
CASCADED LN SPECIFICTYPE
CAST LOCAL SQL
CATALOG LOCALTIME SQLEXCEPTION
CHAR LOCALTIMESTAMP SQLSTATE
CHARACTER LOCATOR SQLWARNING
CLASS MAP START
CLOB MATCH STATE
COLLATION MEMBER STATEMENT
COLLECT METHOD STATIC
COMPLETION MINUTE STDDEV_POP
CONDITION MOD STDDEV_SAMP
CONNECT MODIFIES STRUCTURE
CONNECTION MODIFY SUBMULTISET
CONSTRAINTS MODULE SUBSTRING_REGEX
CONSTRUCTOR MONTH SYMMETRIC
CORR MULTISET SYSTEM
CORRESPONDING NAMES TEMPORARY
COVAR_POP NATURAL TERMINATE
COVAR_SAMP NCHAR THAN
CUBE NCLOB TIME
CUME_DIST NEW TIMESTAMP
CURRENT_CATALOG NEXT TIMEZONE_HOUR
CURRENT_DEFAULT_TRANSFORM_GROUP NO TIMEZONE_MINUTE
CURRENT_PATH NONE TRAILING
CURRENT_ROLE NORMALIZE TRANSLATE_REGEX
CURRENT_SCHEMA NUMERIC TRANSLATION
CURRENT_TRANSFORM_GROUP_FOR_TYPE OBJECT TREAT
CYCLE OCCURRENCES_REGEX TRUE
DATA OLD UESCAPE
DATE ONLY UNDER
DAY OPERATION UNKNOWN
DEC ORDINALITY UNNEST
DECIMAL OUT USAGE
DEFERRABLE OVERLAY USING
DEFERRED OUTPUT VALUE
DEPTH PAD VAR_POP
DEREF PARAMETER VAR_SAMP
DESCRIBE PARAMETERS VARCHAR
DESCRIPTOR PARTIAL VARIABLE
DESTROY PARTITION WHENEVER
DESTRUCTOR PATH WIDTH_BUCKET
DETERMINISTIC POSTFIX WITHOUT
DICTIONARY PREFIX WINDOW
DIAGNOSTICS PREORDER WITHIN
DISCONNECT PREPARE WORK
DOMAIN PERCENT_RANK WRITE
DYNAMIC PERCENTILE_CONT XMLAGG
EACH PERCENTILE_DISC XMLATTRIBUTES
ELEMENT POSITION_REGEX XMLBINARY
END-EXEC PRESERVE XMLCAST
EQUALS PRIOR XMLCOMMENT
EVERY PRIVILEGES XMLCONCAT
EXCEPTION RANGE XMLDOCUMENT
FALSE READS XMLELEMENT
FILTER REAL XMLEXISTS
FIRST RECURSIVE XMLFOREST
FLOAT REF XMLITERATE
FOUND REFERENCING XMLNAMESPACES
FREE REGR_AVGX XMLPARSE
FULLTEXTTABLE REGR_AVGY XMLPI
FUSION REGR_COUNT XMLQUERY
GENERAL REGR_INTERCEPT XMLSERIALIZE
GET REGR_R2 XMLTABLE
GLOBAL REGR_SLOPE XMLTEXT
GO REGR_SXX XMLVALIDATE
GROUPING REGR_SXY YEAR
HOLD REGR_SYY ZONE

See Also

SET QUOTED_IDENTIFIER (Transact-SQL)
ALTER DATABASE Compatibility Level (Transact-SQL)