Marking identifiers as quoted

create replication definition and alter replication definition commands allow you to mark quoted identifiers using the new parameter quoted. When an identifier is marked and the dsi_quoted_identifiers is set to on, the replicate servers that subscribe to the replication definition receives the marked identifier as a quoted identifier. If the dsi_quoted_identifiers is off, the markings are ignored and the replicate server does not receive quoted identifiers.

Modified create replication definition syntax

The modified create replication definition syntax is:

create replication definition replication_definition
with primary at data_server.database
[with all tables named [table_owner.] 'table_name' [quoted] |
[with primary table named [table_owner.]'table_name']
 with replicate table named [table_owner.]'table_name'] [quoted]]
(column_name [as replicate_column_name] [datatype [null | not null] 
        [map to published_datatype]] [quoted]
[, column_name [as replicate_column_name] 
        [datatype [null | not null] computed]
        [map to published_datatype]] [quoted]...)
primary key (column_name [, column_name]...)
[searchable columns (column_name [, column_name]...)]
[send standby [{all | replication definition} columns]]
[replicate {minimal | all} columns]
[replicate_if_changed (column_name [, column_name]...)]
[always_replicate (column_name [, column_name]...)]
[with dynamic sql | without dynamic sql]

For example, to create a table foo with column foo_col1 as a quoted identifier, enter:

create replication definition repdef
   with primary at primaryDS.primaryDB
   with all tables named “foo”
   (“foo_col1” int quoted, “foo_col2” int)
   primary key (“foo_col1”)

Modified alter replication definition syntax

The modified alter replication definition syntax is:

alter replication definition replication_definition
{with replicate table named table_owner.]'table_name' | 
add colum_name [as replicate_column_name]
       [datatype [null | not null]]
       [map to published_datatype] [quoted],... |
alter columns with column_name
       [as replicate_column_name] [quoted | not quoted],...|
alter columns with column_name
        datatype [null | not null]
        [map to published_datatype],...|
alter columns column_name {quoted | not quoted}
add primary key column_name [, column_name]... |
drop primary key column_name [, column_name]... |
add searchable columns column_name [, column_name]... |
drop searchable columns column_name [, column_name]... |
send standby [off | {all | replication definition} columns] |
replicate {minimal | all} columns | 
replicate_if_changed column_name [, column_name]... |
always_replicate column_name [, column_name]...} |
{with | without} dynamic sql
alter replicate table name {quoted | not quoted}

For example, to mark as quoted the table named foo, enter:

alter replication definition repdef
   alter replicate table name “foo” quoted

To unmark the column foo_col1, enter:

alter replication definition repdef
   with replicate table named “foo”
   alter columns “foo_col1” not quoted

NoteWhen replicating to a warm standby database and to replication definition subscribers, and the primary table name is marked as quoted but the replicate table name is not, or vice-versa, Replication Server sends both the primary table name and the replicate table name as quoted.