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

/* Data types */
	-- Exact numerics
	bigint
	bit
	decimal
	int
	money
	numeric
	smallint
	smallmoney
	tinyint

	-- Approximate numerics
	float
	real
	
	-- Date and time
	date
	datetime2
	datetime
	datetimeoffset
	smalldatetime
	time

	-- Character strings
	char
	varchar
	text
	
	-- Unicode character strings
	nchar
	nvarchar
	ntext
	
	-- Binary strings
	binary
	varbinary
	image
	
	-- Other data types
	cursor
	hierarchyid
	sql_variant
	table
	rowversion
	uniqueidentifier
	xml
	    -- Spatial Geometry Types
	geometry
		-- Spatial Geography Types
	geography
	
	

/* Functions */
--ODBC Functions
	BIT_LENGTH
	CONCAT
	OCTET_LENGTH
	TRUNCATE
	CURRENT_DATE
	CURDATE
	CURRENT_TIME
	CURTIME
	DAYNAME
	DAYOFMONTH
	DAYOFWEEK
	HOUR
	MINUTE
	SECOND
	MONTHNAME
	QUARTER
	WEEK
	
	

--Aggregate Functions
	APPROX_COUNT_DISTINCT
	AVG
	CHECKSUM_AGG
	COUNT
	COUNT_BIG
	GROUPING
	GROUPING_ID
	MAX
	MIN
	STDEV
	STDEVP
	STRING_AGG
	SUM
	VAR
	VARP

--Analytic Functions 
	CUME_DIST
	FIRST_VALUE
	LAG
	LAST_VALUE
	LEAD
	PERCENTILE_CONT
	PERCENTILE_DISC
	PERCENT_RANK

--Collation Functions
	COLLATIONPROPERTY
	TERTIARY_WEIGHTS

--Configuration
	@@DATEFIRST
	@@DBTS
	@@LANGID
	@@LANGUAGE
	@@LOCK_TIMEOUT
	@@MAX_CONNECTIONS
	@@MAX_PRECISION
	@@NESTLEVEL
	@@OPTIONS
	@@REMSERVER
	@@SERVERNAME
	@@SERVICENAME
	@@SPID
	@@TEXTSIZE
	@@VERSION

--Conversion Functions 
	CAST
	CONVERT
	PARSE
	TRY_CAST
	TRY_CONVERT
	TRY_PARSE

--Cryptographic functions
	ENCRYPTBYKEY
	ENCRYPTBYPASSPHRASE
	KEY_ID
	DECRYPTBYKEYAUTOASYMKEY
	SYMKEYPROPERTY
	DECRYPTBYKEY
	DECRYPTBYPASSPHRASE
	KEY_GUID
	KEY_NAME
	ENCRYPTBYASYMKEY
	ENCRYPTBYCERT
	ASYMKEYPROPERTY
	DECRYPTBYASYMKEY
	DECRYPTBYCERT
	ASYMKEY_ID
	SIGNBYASYMKEY
	SIGNBYCERT
	IS_OBJECTSIGNED
	VERIFYSIGNEDBYASMKEY
	VERIGYSIGNEDBYCERT
	DecryptByKeyAutoCert
	HASHBYTES
	CERTENCODED
	CERTPRIVATEKEY

-- Cursor 
	@@CURSOR_ROWS
	@@FETCH_STATUS
	CURSOR_STATUS

--Data type
	DATALENGTH
	IDENT_CURRENT
	IDENT_INCR
	IDENT_SEED
	IDENTITY
	SQL_VARIANT_PROPERTY

--Date and Time Data Types and Functions
	SYSDATETIME 
	SYSDATETIMEOFFSET 
	SYSUTCDATETIME 
	CURRENT_TIMESTAMP
	GETDATE 
	GETUTCDATE  
	DATENAME 
	DATEPART 
	DAY 
	MONTH 
	YEAR 
	DATEFROMPARTS 
	DATETIME2FROMPARTS 
	DATETIMEFROMPARTS 
	DATETIMEOFFSETFROMPARTS 
	SMALLDATETIMEFROMPARTS 
	TIMEFROMPARTS 
	DATEDIFF 
	DATEDIFF_BIG 
	DATEADD 
	EOMONTH 
	SWITCHOFFSET 
	TODATETIMEOFFSET 
	ISDATE 

--JSON
	ISJSON
	JSON_VALUE
	JSON_QUERY
	JSON_MODIFY
	OPENJSON

--Mathematical Functions
	ABS
	ACOS
	ASIN
	ATAN
	ATN2
	CEILING
	COS
	COT
	DEGREES
	EXP
	FLOOR
	LOG
	LOG10
	PI
	POWER
	RADIANS
	RAND
	ROUND
	SIGN
	SIN
	SQRT
	SQUARE
	TAN

--Logical Functions
	CHOOSE
	IIF

--Metadata
	@@PROCID
	APP_NAME
	APPLOCK_MODE
	APPLOCK_TEST
	ASSEMBLYPROPERTY
	COL_LENGTH
	COL_NAME
	COLUMNPROPERTY
	DATABASE_PRINCIPAL_ID
	DATABASEPROPERTYEX
	DB_ID
	DB_NAME
	FILE_ID
	FILE_IDEX
	FILE_NAME
	FILEGROUP_ID
	FILEGROUP_NAME
	FILEGROUPPROPERTY
	FILEPROPERTY
	FULLTEXTCATALOGPROPERTY
	FULLTEXTSERVICEPROPERTY
	INDEX_COL
	INDEXKEY_PROPERTY
	INDEXPROPERTY
	NEXT VALUE FOR
	OBJECT_DEFINITION
	OBJECT_ID
	OBJECT_NAME
	OBJECT_SCHEMA_NAME
	OBJECTPROPERTY
	OBJECTPROPERTYEX
	ORIGINAL_DB_NAME
	PARSENAME
	SCHEMA_ID
	SCHEMA_NAME
	SCOPE_IDENTITY
	SERVERPROPERTY
	STATS_DATE
	TYPE_ID
	TYPE_NAME
	TYPEPROPERTY
	VERSION

--Ranking Functions 
	RANK
	DENSE_RANK
	NTILE
	ROW_NUMBER

--Replication Functions
	PUBLISHINGSERVERNAME

--Rowset
	OPENDATASOURCE 
	OPENJSON 
	OPENQUERY 
	OPENROWSET 
	OPENXML 

--Security
	CERTENCODED
	CERTPRIVATEKEY
	CURRENT_USER
	DATABASE_PRINCIPAL_ID
	fn_builtin_permissions
	fn_get_audit_file
	fn_my_permissions
	HAS_PERMS_BY_NAME
	IS_MEMBER
	IS_ROLEMEMBER
	IS_SRVROLEMEMBER
	ORIGINAL_LOGIN
	PWDCOMPARE
	PWDENCRYPT
	SCHEMA_ID
	SCHEMA_NAME
	SESSION_USER
	SUSER_ID
	SUSER_SID
	SUSER_SNAME
	SYSTEM_USER
	SUSER_NAME
	USER_ID
	USER_NAME

--String
	ASCII
	CONCAT
	FORMAT
	LOWER
	PATINDEX
	REPLICATE
	RTRIM
	STR
	STRING_SPLIT
	TRANSLATE
	UPPER
	CHAR
	CONCAT_WS
	LEFT
	LTRIM
	QUOTENAME
	REVERSE
	SOUNDEX
	STRING_AGG
	STUFF
	TRIM
	CHARINDEX
	DIFFERENCE
	LEN
	NCHAR
	REPLACE
	RIGHT
	SPACE
	STRING_ESCAPE
	SUBSTRING
	UNICODE

--System
	$PARTITION
	@@ERROR
	@@IDENTITY
	@@PACK_RECEIVED
	@@ROWCOUNT
	@@TRANCOUNT
	BINARY_CHECKSUM
	CHECKSUM
	COMPRESS
	CONNECTIONPROPERTY
	CONTEXT_INFO
	CURRENT_REQUEST_ID
	CURRENT_TRANSACTION_ID
	DECOMPRESS
	ERROR_LINE
	ERROR_MESSAGE
	ERROR_NUMBER
	ERROR_PROCEDURE
	ERROR_SEVERITY
	ERROR_STATE
	FORMATMESSAGE
	GET_FILESTREAM_TRANSACTION_CONTEXT
	GETANSINULL
	HOST_ID
	HOST_NAME
	ISNULL
	ISNUMERIC
	MIN_ACTIVE_ROWVERSION
	NEWID
	NEWSEQUENTIALID
	ROWCOUNT_BIG
	SESSION_CONTEXT
	SESSION_ID
	XACT_STATE

--System Statistical
	@@CONNECTIONS
	@@CPU_BUSY
	fn_virtualfilestats
	@@IDLE
	@@IO_BUSY
	@@PACKET_ERRORS
	@@PACK_RECEIVED
	@@PACK_SENT
	@@TIMETICKS
	@@TOTAL_ERRORS
	@@TOTAL_READ
	@@TOTAL_WRITE

--Text & Image
	TEXTPTR
	TEXTVALID

--Trigger Functions 
	COLUMNS_UPDATED
	EVENTDATA
	TRIGGER_NESTLEVEL
	UPDATE


/* Global variables */





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