anchor.diff:  
   // https://msdn.microsoft.com/en-us/library/ms187742.aspx
   column_definition
  -    : column_name (data_type | AS expression) (COLLATE id)? null_notnull?
  -      ((CONSTRAINT constraint=id)? DEFAULT constant_expression (WITH VALUES)?
  -       | IDENTITY ('(' seed=DECIMAL ',' increment=DECIMAL ')')? (NOT FOR REPLICATION)?)?
  -      ROWGUIDCOL?
  -      column_constraint*
  +    : column_name (data_type | AS expression) null_notnull?
       ;
   
   // https://msdn.microsoft.com/en-us/library/ms186712.aspx
   column_constraint
       :(CONSTRAINT id)? null_notnull?
  -      ((PRIMARY KEY | UNIQUE) clustered? index_options?
  -      | CHECK (NOT FOR REPLICATION)? '(' search_condition ')')
       ;
   
   // https://msdn.microsoft.com/en-us/library/ms188066.aspx
   table_constraint
  -    : (CONSTRAINT id)?
  -       ((PRIMARY KEY | UNIQUE) clustered? '(' column_name_list ')' index_options? (ON id)?
  -       | CHECK (NOT FOR REPLICATION)? '(' search_condition ')')
  -    ;
  -
  -index_options
  -    : WITH '(' index_option (',' index_option)* ')'
  -    ;
  -
  -// https://msdn.microsoft.com/en-us/library/ms186869.aspx
  -// Id runtime checking. Id in (PAD_INDEX, FILLFACTOR, IGNORE_DUP_KEY, STATISTICS_NORECOMPUTE, ALLOW_ROW_LOCKS,
  -// ALLOW_PAGE_LOCKS, SORT_IN_TEMPDB, ONLINE, MAXDOP, DATA_COMPRESSION, ONLINE).
  -index_option
  -    : simple_id '=' (simple_id | on_off | DECIMAL)
  -    ;
  -
  -// https://msdn.microsoft.com/en-us/library/ms180169.aspx
  -declare_cursor
  -    : DECLARE cursor_name CURSOR ';'?
  -    | DECLARE cursor_name INSENSITIVE? SCROLL? CURSOR FOR select_statement
  -      (FOR (READ ONLY | UPDATE | (OF column_name_list)))? ';'?
  -    | DECLARE cursor_name
  -      CURSOR  declare_set_cursor_common (FOR UPDATE (OF column_name_list)?)? ';'?
  -    ;
  -
  -declare_set_cursor_common
  -    : (LOCAL | GLOBAL)?
  -      (FORWARD_ONLY | SCROLL)? (STATIC | KEYSET | DYNAMIC | FAST_FORWARD)?
  -      (READ_ONLY | SCROLL_LOCKS | OPTIMISTIC)? TYPE_WARNING?
  -      FOR select_statement
  -    ;
  -
  -fetch_cursor
  -    : FETCH ((NEXT | PRIOR | FIRST | LAST | ABSOLUTE expression | RELATIVE expression)? FROM)?
  -      GLOBAL? cursor_name (INTO LOCAL_ID (',' LOCAL_ID)*)? ';'?
  +    : (CONSTRAINT id)? '(' column_name_list ')'
       ;
   
   // https://msdn.microsoft.com/en-us/library/ms190356.aspx
  
positive.code: // https://msdn.microsoft.com/en-us/library/ms174269.aspx
  alter_database
      : ALTER DATABASE (database=id | CURRENT)
        (MODIFY NAME '=' new_name=id | COLLATE collation=id | SET database_option) ';'?
      ;
  
  // https://msdn.microsoft.com/en-us/library/bb522682.aspx
  // Runtime check.
  database_option
      : id (id | FULL)?
      ;
  
  // https://msdn.microsoft.com/en-us/library/ms176118.aspx
  drop_index
      : DROP INDEX (IF EXISTS)? name=id ';'?
      ;
  
  // https://msdn.microsoft.com/en-us/library/ms174969.aspx
  drop_procedure
      : DROP PROCEDURE (IF EXISTS)? func_proc_name ';'?
      ;
  
  // https://msdn.microsoft.com/en-us/library/ms175075.aspx
  drop_statistics
      : DROP STATISTICS (table_name '.')? name=id ';'
      ;
  
  // https://msdn.microsoft.com/en-us/library/ms173790.aspx
  
negative.code:     : SHOW CONFIG ';'?
      ;
  
  table_type_definition
      : TABLE '(' column_def_table_constraint (','? column_def_table_constraint)* ')'
      ;
  