Suscriptores de IBM DB2
Microsoft SQL Server 2005 admite suscripciones de inserción a IBM DB2/AS 400, DB2/MVS y DB2/Universal Database a través de los proveedores de OLE DB incluidos con Microsoft Host Integration Server.
[!NOTA] Actualmente, la arquitectura basada en Itanium (antes IA-64) no admite el proveedor Microsoft OLE DB para DB2. Por lo tanto, la réplica de SQL Server no admite la réplica de datos en suscriptores de DB2 en esta plataforma.
Configuración de un suscriptor de IBM DB2
Para configurar un suscriptor de IBM DB2, siga estos pasos:
Instale la versión más reciente del proveedor Microsoft OLE DB para DB2 en el distribuidor:
- Si está utilizando SQL Server 2005 Enterprise Edition, puede descargar el proveedor desde este sitio Web de Microsoft; busque "Microsoft OLE DB Provider for DB2".
- Si está utilizando SQL Server 2005 Standard Edition, instale la versión más reciente de Microsoft Host Integration Services (HIS), que contiene el proveedor.
Además de instalar el proveedor, se recomienda instalar la Herramienta de acceso a datos, que se utiliza en el paso siguiente (se instala de manera predeterminada con la descarga de la versión Enterprise Edition). Para obtener más información sobre la instalación y uso de la Herramienta de acceso a datos, consulte la documentación del proveedor o de HIS.
Cree una cadena de conexión para el suscriptor. La cadena de conexión se puede crear en cualquier editor de texto, pero se recomienda utilizar la Herramienta de acceso a datos. Para crear la cadena en la Herramienta de acceso a datos:
- Haga clic en Inicio, Programas, Proveedor Microsoft OLE DB para DB2 y, a continuación, en Herramienta de acceso a datos.
- Siga los pasos que se indican en la Herramienta de acceso a datos para obtener información acerca del servidor DB2. Al finalizar la herramienta, se crea un vínculo de datos universal (UDL) con una cadena de conexión asociada (el UDL no se usa realmente en la réplica, pero la cadena de conexión sí).
- Obtenga acceso a la cadena de conexión: haga clic con el botón secundario en el UDL en la Herramienta de acceso a datos y seleccione Display Connection String (Mostrar cadena de conexión).
La cadena de conexión será similar a la siguiente (los saltos de línea son para facilitar la lectura):
Provider=DB2OLEDB;Initial Catalog=MY_SUBSCRIBER_DB;Network Transport Library=TCP;Host CCSID=1252; PC Code Page=1252;Network Address=MY_SUBSCRIBER;Network Port=50000;Package Collection=MY_PKGCOL; Default Schema=MY_SCHEMA;Process Binary as Character=False;Units of Work=RUW;DBMS Platform=DB2/NT; Persist Security Info=False;Connection Pooling=True;
La mayoría de las opciones de la cadena son específicas para el servidor DB2 que está configurando, pero la opción Process Binary as Character (Procesar valor binario como carácter) siempre debe establecerse en False. Se requiere un valor para que la opción Initial Catalog (Catálogo original) identifique la base de datos de suscripciones. La cadena de conexión se insertará en el Asistente para nueva suscripción cuando se cree la suscripción.
Cree una instantánea o una publicación transaccional, habilítela para suscriptores que no sean SQL Server y, después, cree una suscripción de inserción para el suscriptor. Para obtener más información, vea:
- SQL Server Management Studio: Cómo crear una suscripción para un suscriptor que no sea de SQL Server (SQL Server Management Studio)
- Programación de la réplica con Transact-SQL: How to: Create a Subscription for a Non-SQL Server Subscriber (Replication Transact-SQL Programming)
O bien, especifique una secuencia de comandos de creación personalizada para uno o más artículos. Cuando se publica la tabla, se crea una secuencia de comandos CREATE TABLE para ella. Para los suscriptores que no son de SQL Server, la secuencia de comandos se crea en dialecto de Transact-SQL y, posteriormente, el Agente de distribución la convierte a un dialecto SQL más general antes de aplicarla en el suscriptor. Para especificar una secuencia de comandos de creación personalizada, modifique la secuencia de comandos Transact-SQL existente o cree una secuencia de comandos completa que utilice el dialecto DB2 SQL; si crea una secuencia de comandos DB2, use la directiva bypass_translation para que el Agente de distribución aplique la secuencia de comandos sin convertir en el suscriptor.
Las secuencias de comandos se pueden modificar por distintas razones, aunque la más común es para modificar las asignaciones de tipos de datos. Para obtener más información, vea la sección "Consideraciones acerca de la asignación de tipos de datos", en este tema. Si modifica la secuencia de comandos Transact-SQL, los cambios deben limitarse a cambios en la asignación de tipos de datos y la secuencia de comandos no debe contener ningún comentario. Si se necesitan cambios más importantes, cree una secuencia de comandos DB2.
Para modificar la secuencia de comandos de un artículo y suministrarla como una secuencia de comandos de creación personalizada- Una vez generada la instantánea para la publicación, desplácese a la carpeta de instantáneas de la publicación.
- Busque el archivo .sch que tiene el mismo nombre que el artículo; por ejemplo, miArtículo.sch.
- Abra este archivo en el Bloc de notas o en otro editor de texto.
- Modifique el archivo y guárdelo en un directorio distinto.
- Ejecute sp_changearticle, especificando la ruta de acceso del archivo y el nombre de la propiedad creation_script. Para obtener más información, vea sp_changearticle (Transact-SQL).
Para crear una secuencia de comandos de un artículo y suministrarla como una secuencia de comandos de creación personalizada
- Cree una secuencia de comandos de artículo con el dialecto DB2 SQL. Asegúrese de que la primera línea del archivo sea bypass_translation y de que no haya nada más en la línea.
- Ejecute sp_changearticle, especificando la ruta de acceso del archivo y el nombre de la propiedad creation_script.
Consideraciones para los suscriptores de IBM DB2
Además de las consideraciones planteadas en el tema Suscriptores que no son de SQL Server, tenga en cuenta los siguientes problemas al replicar en suscriptores de DB2:
- Los datos y los índices para cada tabla replicada se asignan a un espacio de tablas de DB2. El tamaño de la página de un espacio de tablas de DB2 controla el número máximo de columnas y el tamaño máximo de las filas de las tablas que pertenecen al espacio de tablas. Asegúrese de que el espacio de tablas asociado con las tablas replicadas es apropiado para el número de columnas replicadas y el tamaño máximo de las filas de las tablas.
- No publique tablas en suscriptores de DB2 con la réplica transaccional si una o más columnas de clave principal en la tabla tienen un tipo de datos DECIMAL(32-38, 0-38) o NUMERIC(32-38, 0-38). La réplica transaccional identifica las filas con la clave principal y esto puede producir errores, ya que estos tipos de datos se asignan a VARCHAR(41) en el suscriptor. Las tablas con claves principales que utilicen estos tipos de datos se pueden publicar con la réplica de instantáneas.
- Si desea crear previamente las tablas en el suscriptor en lugar de crearlas por medio de la réplica, use la opción Sólo compatibilidad con réplica. Para obtener más información, vea Inicializar una suscripción transaccional sin una instantánea.
- SQL Server permite utilizar nombres de tabla y de columna más largos que DB2:
- Si la base de datos de publicaciones incluye tablas con nombres más largos que los admitidos por la versión de DB2 en el suscriptor, especifique otro nombre para la propiedad destination_table del artículo. Para obtener más información acerca de cómo configurar propiedades al crear una publicación, vea Cómo crear publicaciones y definir artículos (SQL Server Management Studio) y How to: Define an Article (Replication Transact-SQL Programming).
- No es posible especificar otros nombres de columnas. Debe asegurarse de que las tablas publicadas no incluyan nombres de columna más largos que lo permitido por la versión de DB2 en el suscriptor.
Asignar tipos de datos de SQL Server a IBM DB2
En la tabla siguiente se muestran las asignaciones de tipos de datos que se utilizan cuando se replican datos en un suscriptor que ejecuta IBM DB2.
Tipo de datos de SQL Server | Tipo de datos de IBM DB2 |
---|---|
BIGINT |
DECIMAL(19,0) |
BINARY(1-254) |
CHAR(1-254) FOR BIT DATA |
BINARY(255-8000) |
VARCHAR(255-8000) FOR BIT DATA |
BIT |
SMALLINT |
CHAR(1-254) |
CHAR(1-254) |
CHAR(255-8000) |
VARCHAR(255-8000) |
DATETIME |
TIMESTAMP |
DECIMAL(1-31, 0-31) |
DECIMAL(1-31, 0-31) |
DECIMAL(32-38, 0-38) |
VARCHAR (41) |
DOUBLE PRECISION |
DOUBLE |
FLOAT |
FLOAT |
IMAGE |
VARCHAR(0) FOR BIT DATA1 |
INT |
INT |
MONEY |
DECIMAL(19,4) |
NCHAR(1-4000) |
VARCHAR(1-4000) |
NTEXT |
VARCHAR(0)1 |
NUMERIC(1-31, 0-31) |
DECIMAL(1-31,0-31) |
NUMERIC(32-38, 0-38) |
VARCHAR (41) |
NVARCHAR(1-4000) |
VARCHAR(1-4000) |
NVARCHAR(MAX) |
VARCHAR(0)1 |
REAL |
REAL |
SMALLDATETIME |
TIMESTAMP |
SMALLINT |
SMALLINT |
SMALLMONEY |
DECIMAL(10,4) |
SQL_VARIANT |
N/D |
SYSNAME |
VARCHAR (128) |
TEXT |
VARCHAR(0)1 |
TIMESTAMP |
CHAR(8) FOR BIT DATA |
TINYINT |
SMALLINT |
UNIQUEIDENTIFIER |
CHAR(38) |
VARBINARY(1-8000) |
VARCHAR(1-8000) FOR BIT DATA |
VARCHAR(1-8000) |
VARCHAR(1-8000) |
VARBINARY(MAX) |
VARCHAR(0) FOR BIT DATA1 |
VARCHAR(MAX) |
VARCHAR(0)1 |
XML |
VARCHAR(0)1 |
1 Para obtener más información acerca de las asignaciones a VARCHAR(0), vea la siguiente sección.
Consideraciones acerca de la asignación de tipos de datos
Tenga en cuenta los siguientes problemas de asignación de tipos de datos al replicar en suscriptores de DB2:
Al asignar CHAR, VARCHAR, BINARY y VARBINARY de SQL Server a CHAR, VARCHAR, CHAR FOR BIT DATA y VARCHAR FOR BIT DATA de DB2, respectivamente, la réplica establece la longitud del tipo de datos de DB2 de forma que sea igual a la del tipo de datos de SQL Server.
Esto permite crear correctamente la tabla generada en el suscriptor, siempre que la restricción del tamaño de página de DB2 sea suficientemente grande como para admitir el tamaño máximo de la fila. Asegúrese de que el nombre de inicio de sesión que utiliza para obtener acceso a la base de datos de DB2 tiene permisos de acceso a espacios de tabla de tamaño suficiente para las tablas que se van a replicar en DB2.DB2 admite columnas VARCHAR de hasta 32 kilobytes (KB); por lo tanto, es posible que algunas columnas de objetos grandes de SQL Server se puedan asignar correctamente a columnas VARCHAR de DB2. Sin embargo, el proveedor OLE DB que utiliza la réplica para DB2 no admite la asignación de objetos grandes de SQL Server a objetos grandes de DB2. Por este motivo, las columnas TEXT, VARCHAR(MAX), NTEXT y NVARCHAR(MAX) de SQL Server se asignan a VARCHAR(0) en las secuencias de comandos de creación generadas. El valor de longitud 0 debe cambiarse a un valor apropiado antes de aplicar la secuencia de comandos al suscriptor. Si no se cambia la longitud del tipo de datos, DB2 mostrará el error 604 cuando se intente crear la tabla en el suscriptor de DB2 (el error 604 indica que la precisión o el atributo de longitud de un tipo de datos no son válidos).
Basándose en sus conocimientos de la tabla de origen que desea replicar, determine si es apropiado asignar un objeto grande de SQL Server a un elemento de longitud variable de DB2 y especifique una longitud máxima apropiada en una secuencia de comandos de creación personalizada. Para obtener información acerca de cómo especificar una secuencia de comandos de creación personalizada, vea el paso 5 de la sección "Configuración de un suscriptor de IBM DB2", en este tema.[!NOTA] La longitud especificada para el tipo DB2, al combinarse con otras longitudes de columna, no puede superar el tamaño máximo de fila especificado, basado en el espacio de tabla de DB2 al que están asignados los datos de la tabla.
Si no hay ninguna asignación apropiada para una columna de objetos grandes, puede utilizar el filtrado de columna en el artículo para que no se replique. Para obtener más información, vea Filtrar datos publicados.
Al replicar NCHAR y NVARCHAR de SQL Server en CHAR y VARCHAR de DB2, la réplica utiliza el mismo especificador de longitud para el tipo de DB2 que para el de SQL Server. Sin embargo, es posible que la longitud del tipo de datos sea demasiado reducida para la tabla DB2 generada.
En algunos entornos DB2, un elemento de datos CHAR de SQL Server no se limita a caracteres de un solo byte; esto debe tenerse en cuenta para la longitud de un elemento CHAR o VARCHAR. También debe tener en cuenta los caracteres de desplazamiento hacia dentro y desplazamiento hacia fuera si se necesitan. Si desea replicar tablas con columnas NCHAR y NVARCHAR, es posible que necesite especificar una longitud máxima mayor para el tipo de datos en una secuencia de comandos de creación personalizada. Para obtener información acerca de cómo especificar una secuencia de comandos de creación personalizada, vea el paso 5 de la sección "Configuración de un suscriptor de IBM DB2", en este tema.
Vea también
Conceptos
Suscriptores que no son de SQL Server
Suscribirse a publicaciones