Administrar columnas de identidad
Se aplica a: SQL Server Azure SQL Managed Instance
En este tema se describe cómo administrar columnas de identidad en SQL Server mediante SQL Server Management Studio o Transact-SQL. Cuando las inserciones del Suscriptor se replican de nuevo al Publicador, se deben administrar las columnas de identidad para evitar la asignación del mismo valor de identidad en el Suscriptor y el Publicador. La replicación puede administrar automáticamente intervalos de identidad o puede elegir procesar manualmente la administración de intervalos de identidad. Para obtener información sobre las opciones de administración de intervalos de identidad proporcionadas por la replicación, vea Replicar columnas de identidad.
En este tema
Antes de empezar:
Para administrar columnas de identidad con:
Antes de empezar
Recomendaciones
Al publicar una tabla en más de una publicación, debe especificar las mismas opciones de administración de intervalos de identidad para ambas publicaciones. Para obtener más información, vea "Publicar tablas en más de una publicación" en Publicar datos y objetos de base de datos.
Para crear un número que se incremente automáticamente y que se pueda usar en varias tablas, o que se pueda llamar desde las aplicaciones sin hacer referencia a ninguna tabla, vea Números de secuencia.
Uso de SQL Server Management Studio
Especifique una opción de administración de columnas de identidad en la pestaña Propiedades del cuadro de diálogo Propiedades del artículo: <Artículo> del Asistente para nueva publicación. Para obtener más información sobre cómo usar este asistente, vea Crear una publicación. En el Asistente para nueva publicación:
Si selecciona Publicación de combinación o Publicación transaccional con suscripciones actualizables en la página Tipo de publicación , seleccione la administración automática o manual de los intervalos de identidad (se recomienda utilizar la opción predeterminada: la administración automática). Una vez publicada la tabla, la propiedad no se puede modificar, pero otras propiedades relacionadas sí se pueden modificar.
Si selecciona otros tipos de publicaciones, debe establecer la administración de los intervalos de identidad en manual.
Modifique los intervalos de identidad y los umbrales en la pestaña Propiedades del cuadro de diálogo Propiedades del artículo: <Artículo>, disponible en el cuadro de diálogo Propiedades de la publicación: <Publicación>. Para obtener más información sobre el acceso a este cuadro de diálogo, vea View and Modify Publication Properties.
Para especificar una opción de administración de las columnas de identidad
Si el publicador está ejecutando una versión de SQL Server anterior a SQL Serve 2005 (9.x), en la página Tipo de publicación del Asistente para nueva publicación, seleccione Publicación de combinación o Publicación transaccional con suscripciones de actualización.
En la página Artículos , seleccione una tabla con una columna de identidad.
Haga clic en Propiedades del artículoy, a continuación, haga clic en Establecer propiedades del artículo de tabla resaltado.
En la pestaña Propiedades del cuadro de diálogo Propiedades del artículo: <Artículo>, en la sección Administración de intervalos de identidad, establezca la propiedad Administrar intervalos de identidad automáticamente en Automático o Manual (para publicadores que ejecuten SQL Server 2005 [9.x] o una versión posterior) o en True o False (para publicadores que ejecuten una versión de SQL Server anterior a SQL Server 2005 [9.x]).
Si seleccionó Automático o True en el paso 4, escriba los valores de las opciones en la siguiente tabla. Para obtener más información sobre cómo usar estos valores, vea la sección "Asignar intervalos de identidad"de Replicar columnas de identidad.
Opción Value Descripción Tamaño de intervalo del publicador Valor entero para el tamaño del intervalo (por ejemplo, 20 000). Vea la sección "Asignar intervalos de identidad"de Replicar columnas de identidad. Tamaño de intervalo del suscriptor Valor entero para el tamaño del intervalo (por ejemplo, 10000). Vea la sección "Asignar intervalos de identidad"de Replicar columnas de identidad. Porcentaje de umbral del intervalo Valor entero para el umbral de porcentaje (por ejemplo, 90 equivale a 90 por ciento). Porcentaje del total de valores de identidad utilizados en un nodo antes de que se asigne un nuevo intervalo de identidad.
Nota: Este valor se debe especificar, pero solo lo utilizan suscriptores que usan suscripciones de actualización en cola y suscriptores de publicaciones de combinación que ejecuten SQL Server Compact o versiones anteriores de otras ediciones de SQL Server. Para obtener más información, vea la sección "Asignar intervalos de identidad"de Replicar columnas de identidad.Valor de inicio del siguiente intervalo Valor entero. Solo lectura El valor en el que comenzará el siguiente intervalo. Por ejemplo, si el intervalo actual es 5001-6000, este valor será 6001. Valor máximo de identidad Valor entero. Solo lectura El valor más grande de la columna de identidad. Está determinado por el tipo de datos base de la columna. Incremento Valor entero. Solo lectura La cantidad en la que se debe incrementar o reducir el número de la columna de identidad para cada inserción: por lo general se establece en 1. Seleccione Aceptar.
Para modificar los intervalos de identidad y los umbrales una vez publicada la tabla
En la página Artículos del cuadro de diálogo Propiedades de la publicación: <Publicación>, seleccione una tabla con una columna de identidad.
Haga clic en Propiedades del artículoy, a continuación, haga clic en Establecer propiedades del artículo de tabla resaltado.
En la pestaña Propiedades del cuadro de diálogo Propiedades del artículo: <Artículo>, en la sección Administración de intervalos de identidad, escriba valores para una o varias de las siguientes propiedades: Tamaño de intervalo del publicador, Tamaño de intervalo del suscriptor y Porcentaje de umbral del intervalo.
Seleccione Aceptar.
Haga clic en Aceptar en el cuadro de diálogo Propiedades de la publicación: <Publicación>.
Usar Transact-SQL
Puede usar los procedimientos almacenados de replicación para especificar las opciones de administración de intervalos de identidad cuando se crea un artículo.
Para habilitar la administración automática de intervalos de identidad al definir artículos para una publicación transaccional
En la base de datos de publicación del publicador, ejecute sp_addarticle. Si la tabla de origen que va a publicar tiene una columna de identidad, especifique un valor de auto para @identityrangemanagementoption, el intervalo de valores de identidad asignados al Publicador para @pub_identity_range, el intervalo de valores de identidad asignados a cada Suscriptor para @identity_rangey el porcentaje de valores de identidad totales usados antes de que se asigne un nuevo intervalo de identidad para @threshold. Para obtener más información sobre la definición de artículos, vea Definir un artículo.
Nota:
Asegúrese de que el tipo de datos de la columna de identidad es lo bastante grande como para admitir el intervalo total de identidades que se están asignando a todos los Suscriptores.
Para deshabilitar la administración automática de intervalos de identidad al definir artículos para una publicación transaccional
En la base de datos de publicación del publicador, ejecute sp_addarticle. Especifique un valor de manual para @identityrangemanagementoption. Para obtener más información sobre la definición de artículos, vea Definir un artículo.
Asigne intervalos para identificar las columnas de artículo en el Suscriptor para evitar la generación de conflictos para actualizar los Suscriptores. Para obtener más información, vea la sección sobre cómo asignar intervalos para la administración manual de intervalos de identidad en el tema Replicar columnas de identidad.
Para habilitar la administración automática de intervalos de identidad al definir artículos para una publicación de combinación
En la base de datos de publicación del publicador, ejecute sp_addmergearticle. Si la tabla de origen que va a publicar tiene una columna de identidad, especifique un valor de auto para @identityrangemanagementoption, el intervalo de valores de identidad asignados a una suscripción de servidor para @pub_identity_range, el intervalo de valores de identidad asignados al Publicador y cada suscripción de cliente para @identity_range, y el porcentaje de valores de identidad totales usados antes de que se asigne un nuevo intervalo de identidad para @threshold. Para obtener más información sobre cuándo se asignan los nuevos intervalos de identidad, vea Asignar intervalos de identidad en el tema Replicar columnas de identidad. Para obtener más información sobre la definición de artículos, vea Definir un artículo.
Nota:
Asegúrese de que el tipo de datos de la columna de identidad es lo bastante grande como para admitir el intervalo total de identidades que se están asignando a todos los Suscriptores, particularmente para los Suscriptores con suscripciones de servidor.
Para deshabilitar la administración automática de intervalos de identidad al definir artículos para una publicación de combinación
En la base de datos de publicación del publicador, ejecute sp_addmergearticle. Especifique uno de los valores siguientes para @identityrangemanagementoption:
manual : los intervalos de identidad deben estar asignados manualmente para actualizar los Suscriptores.
none : las columnas de identidad en el Publicador no se definirán como columnas de identidad en el Suscriptor.
Para obtener más información sobre la definición de artículos, vea Definir un artículo.
Asigne intervalos para identificar las columnas de artículo en el Suscriptor para evitar la generación de conflictos para actualizar los Suscriptores.
Para cambiar los valores de administración automática de intervalos de identidad para un artículo existente en una publicación transaccional o de instantáneas
En la base de datos de publicación del publicador, ejecute sp_helparticle y tenga en cuenta el valor de identityrangemanagementoption en el conjunto de resultados. Si este valor es 0, la administración automática de intervalos de identidad no está habilitada.
Si el valor de identityrangemanagementoption en el conjunto de resultados es 1, cambie la configuración de la siguiente manera:
Para cambiar los intervalos de identidad asignados, ejecute sp_changearticle en el Publicador de la base de datos de publicación. Especifique un valor de identity_range o pub_identity_range para @property y el nuevo valor del intervalo para @value.
Para cambiar el umbral en el que los nuevos intervalos están asignados, ejecute sp_changearticle en el Publicador de la base de datos de publicación. Especifique un valor de threshold para @property y el nuevo valor umbral para @value.
Para cambiar la configuración de administración automática de intervalos de identidad para un artículo existente en una publicación de combinación
En la base de datos de publicación del publicador, ejecute sp_helpmergearticle y tenga en cuenta el valor de identity_support en el conjunto de resultados. Si este valor es 0, la administración automática de intervalos de identidad no está habilitada.
Si el valor de identity_support en el conjunto de resultados es 1, cambie la configuración de la siguiente manera:
Para cambiar los intervalos de identidad asignados, ejecute sp_changemergearticle en el Publicador de la base de datos de publicación. Especifique un valor de identity_range o pub_identity_range para @property y el nuevo valor del intervalo para @value.
Para cambiar el umbral en el que los nuevos intervalos están asignados, ejecute sp_changemergearticle en el Publicador de la base de datos de publicación. Especifique un valor de threshold para @property y el nuevo valor umbral para @value. Para obtener más información sobre cuándo se asignan los nuevos intervalos de identidad, vea Asignar intervalos de identidad en el tema Replicar columnas de identidad.
Para deshabilitar la administración automática de intervalos de identidad, ejecute sp_changemergearticle en el Publicador de la base de datos de publicación. Especifique un valor de identityrangemanagementoption para @property y manual o ninguno para @value.