https://docs.microsoft.com/en-us/sql/t-sql/language-elements/reserved-keywords-transact-sql
Microsoft SQL Server 将保留关键字用于定义、操作和访问数据库。 保留关键字是 Transact-SQL 使用的 SQL Server 语言语法的一部分,用于分析和理解 Transact-SQL 语句和批处理。 尽管在 SQL Server 脚本中使用 Transact-SQL 保留关键字作为标识符和对象名在语法上是可行的,但规定只能使用分隔标识符。
下表列出了 SQL Server 和 Azure SQL 数据仓库保留关键字。
表 1

ADD EXTERNAL PROCEDURE
ALL FETCH PUBLIC
ALTER FILE RAISERROR
FILLFACTOR READ
ANY FOR READTEXT
AS FOREIGN RECONFIGURE
ASC FREETEXT REFERENCES
AUTHORIZATION FREETEXTTABLE 复制
备份 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 关机
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 返回页首
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 VALUES
DUMP ORDER VARYING
ELSE OUTER VIEW
END OVER WAITFOR
ERRLVL PERCENT WHEN
ESCAPE PIVOT WHERE
EXCEPT PLAN WHILE
EXEC PRECISION WITH
在运行 CREATE 语句前执行 PRIMARY WITHIN GROUP
EXISTS PRINT WRITETEXT
EXIT PROC

下表列出了 Azure SQL 数据仓库 专用的保留关键字。
表 2

LABEL

此外,ISO 标准定义了保留关键字列表。 不要使用 ISO 保留关键字作为对象名和标识符。 ODBC 保留关键字列表(如下表所示)与 ISO 保留关键字列表相同。
备注
ISO 标准保留关键字有时可能比 SQL Server 限制更多,有时则更少。 例如,ISO 保留关键字列表包含 INT。 SQL Server 不必将此区分为保留关键字。
Transact-SQL 保留关键字可用作数据库或数据库对象(如表、列、视图等)的标识符或名称。 使用带引号的标识符或分隔标识符。 不限制将保留关键字用作变量和存储过程参数的名称。

ODBC 保留关键字

保留了下列关键字以用于 ODBC 函数调用。 这些关键字根本不约束 SQL 语法;然而,为确保与支持核心 SQL 语法的驱动程序兼容,应用程序应避免使用这些关键字。
下面是当前的 ODBC 保留关键字列表。
表 3

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

将来的关键字

下列关键字可能会在将来的 SQL Server 版本中保留使用,作为将来要实现的新功能。 注意,不要使用这些关键字作为标识符。
表 4

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 SYMMETRIC
CORR MULTISET SYSTEM
CORRESPONDING NAMES TEMPORARY
COVAR_POP NATURAL TERMINATE
COVAR_SAMP NCHAR THAN
CUBE NCLOB TIME
CUME_DIST 新增功能 TIMESTAMP
CURRENT_CATALOG NEXT TIMEZONE_HOUR
CURRENT_DEFAULT_TRANSFORM_GROUP TIMEZONE_MINUTE
CURRENT_PATH 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
DEPTH PAD VAR_POP
DEREF 参数 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
HOLD REGR_SYY ZONE