Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
SQL Server admite suscripciones push para IBM Db2/AS/400, DB2/MVS y DB2/Universal Database a través de los proveedores OLE DB incluidos con Microsoft Host Integration Server.
Configuración de un suscriptor de IBM Db2
Para configurar un suscriptor de IBM Db2, siga estos pasos:
Instale la última versión del proveedor OLE DB de Microsoft para DB2 en el distribuidor:
Si usas SQL Server Enterprise Edition, en la página web de Descargas de SQL Server, en la sección de Descargas Relacionadas, selecciona el enlace a la última versión del Paquete de Funciones Microsoft SQL Server. En la página web del Microsoft SQL Server Feature Pack, busca OLE DB Provider for DB2.
Si usas SQL Server Standard Edition, instala la última versión del servidor Microsoft Host Integration Services (HIS), que incluye al proveedor.
Además de instalar el proveedor, instala la herramienta de acceso a datos, que se utiliza en el siguiente paso. La herramienta se instala por defecto junto con la descarga de SQL Server Enterprise Edition. Para obtener más información sobre la instalación y uso de la Herramienta de acceso a datos, vea la documentación del proveedor o de HIS.
Cree una cadena de conexión para el suscriptor. Puedes crear la cadena de conexión en cualquier editor de texto, pero usa la herramienta de acceso a datos. Para crear la cadena en la Herramienta de acceso a datos:
Selecciona Inicio, Programas, Proveedor OLE DB para DB2 y luego Herramienta de Acceso a Datos.
Siga los pasos que se indican en la Herramienta de acceso a datospara obtener información acerca del servidor DB2. Cuando completas la herramienta, se crea un enlace de datos universal (UDL) con una cadena de conexión asociada. El UDL no se usa para replicar, pero sí la cadena de conexión.
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 es similar a la siguiente (los saltos de línea son para la legibilidad):
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;Derive Parameters=False;Units of Work=RUW;DBMS Platform=DB2/NT; Persist Security Info=False;Connection Pooling=True;La mayoría de las opciones en la cadena son específicas del servidor DB2 que estás configurando, pero siempre deberías configurar las
Process Binary as Characteropciones yDerive ParameterscomoFalse. Necesitas proporcionar un valor para laInitial Catalogopción de identificar la base de datos de suscripción. Escriba la cadena de conexión en el Asistente para nueva suscripción cuando 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 push para el suscriptor. Para más información, consulte Crear una suscripción para un suscriptor que no sea de SQL Server.
O bien, especifique un script de creación personalizado para uno o más artículos. Cuando se publica la tabla, se crea un script
CREATE TABLEpara ella. Para suscriptores no SQL Server, creas el script en el dialecto Transact-SQL y el Agente de distribución lo traduce a un dialecto SQL más genérico antes de aplicarlo al suscriptor. Para especificar un script de creación personalizado, modifica el script de Transact-SQL existente o crea un script completo que utilice el dialecto SQL de DB2. Si creas un script DB2, usa la directiva bypass_translation para que el Agente de distribución aplique el script al Suscriptor sin traducción.Puedes modificar scripts por varias razones, pero la más común es alterar los mapeos de tipos de datos. Para más información, consulte la sección "Consideraciones sobre el mapeo de tipos de datos" en este artículo. Si modificas el script de Transact-SQL, restringe los cambios en el mapeo de tipos de datos y no incluyas ningún comentario. Si necesitas cambios más sustanciales, crea un script de DB2.
Para modificar el script de un artículo y suministrarlo como un script de creación personalizado
Después de generar la instantánea para la publicación, ve a la carpeta de instantáneas de la publicación.
Busque el archivo
.schque tiene el mismo nombre que el artículo; por ejemplo,MyArticle.sch.Abre este archivo usando el Bloc de notas u 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 más información, consulte sp_changearticle (Transact-SQL).
Para crear un script para un artículo y proporcionarlo como un script de creación personalizado
Crea un script de artículo usando el dialecto SQL de Db2. Asegúrese de que la primera línea del archivo sea bypass_translationy 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 mencionadas en el artículo Suscriptores que no son de SQL Server, tenga en cuenta las siguientes cuestiones al replicar en suscriptores de Db2:
Los datos e índices de cada tabla replicada se asignan a un espacio de tabla Db2. El tamaño de página de un espacio de mesa Db2 controla el número máximo de columnas y el tamaño máximo de fila de las tablas que pertenecen al espacio de mesa. 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 publiques tablas a los suscriptores de Db2 usando replicación transaccional si una o más columnas clave primarias de la tabla son de tipo de datos DECIMAL(32-38, 0-38) o NUMERIC(32-38, 0-38). La replicación transaccional identifica filas usando la clave primaria. Este método puede provocar fallos porque estos tipos de datos se asignan a VARCHAR(41) en el Suscriptor. Puedes publicar tablas con claves primarias que usen estos tipos de datos usando replicación instantánea.
Si quieres crear tablas en el Suscriptor, en lugar de que la replicación las cree, usa la opción solo de soporte de replicación. Para obtener más información, consulte Inicializar una suscripción transaccional sin una instantánea.
SQL Server permite nombres de tablas y columnas más largos que Db2:
Si la base de datos de publicación incluye tablas con nombres más largos que los admitidos en la versión de Db2 del Suscriptor, especifique un nombre alternativo para la propiedad del artículo destination_table. Para más información sobre cómo configurar propiedades al crear una publicación, vea Create a Publication (Crear una publicación) y Define an Article (Definir un artículo).
No puedes especificar nombres alternativos de columnas. Asegúrese de que las tablas publicadas no incluyan nombres de columna que superen la longitud admitida en la versión de Db2 del Suscriptor.
Mapeando 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.
| Tipos de datos de SQL Server | Tipo de datos de IBM Db2 |
|---|---|
| bigint | DECIMAL(19,0) |
| binary(1-254) | CHAR(1-254) PARA DATOS BINARIOS |
| binary(255-8000) | VARCHAR(255-8000) PARA DATOS DE BITS |
| bit | SMALLINT |
| char(1-254) | CHAR(1-254) |
| char(255-8000) | VARCHAR(255-8000) |
| date | FECHA |
| datetime | TIMESTAMP |
| datetime2(0-7) | VARCHAR(27) |
| datetimeoffset(0-7) | VARCHAR(34) |
| decimal(1-31, 0-31) | DECIMAL(1-31, 0-31) |
| decimal(32-38, 0-38) | VARCHAR(41) |
| float(53) | DOBLE |
| float | FLOTANTE |
| geography | IMAGEN |
| geometry | IMAGEN |
| hierarchyid | IMAGEN |
| image | VARCHAR(0) PARA DATOS DE BITS* |
| into | INT |
| money | DECIMAL(19,4) |
| nchar(1-4000) | VARCHAR(1-4000) |
| ntext | VARCHAR(0)* |
| numérico(1-31, 0-31) | DECIMAL(1-31,0-31) |
| numérico(32-38, 0-38) | VARCHAR(41) |
| nvarchar(1-4000) | VARCHAR(1-4000) |
| nvarchar(max) | VARCHAR(0)* |
| real | REAL |
| smalldatetime | TIMESTAMP |
| smallint | SMALLINT |
| smallmoney | DECIMAL(10,4) |
| sql_variant | N/D |
| sysname | VARCHAR(128) |
| text | VARCHAR(0)* |
| time(0-7) | VARCHAR(16) |
| timestamp | CHAR(8) PARA DATOS BINARIOS |
| tinyint | SMALLINT |
| uniqueidentifier | CHAR(38) |
| varbinary(1-8000) | VARCHAR(1-8000) PARA DATOS DE TIPO BIT |
| varchar(1-8000) | VARCHAR(1-8000) |
| varbinary(máx) | VARCHAR(0) PARA DATOS DE BIT* |
| varchar(max) | VARCHAR(0)* |
| xml | VARCHAR(0)* |
- Consulte la siguiente sección para obtener más información sobre las correspondencias con VARCHAR(0).
Consideraciones sobre el mapeo de tipos de datos
Tenga en cuenta los siguientes problemas de asignación de tipos de datos al replicar en suscriptores de DB2:
Al mapear los tipos de SQL Server char, varchar, binary y varbinary a los tipos de Db2 CHAR, VARCHAR, CHAR FOR BIT DATA y VARCHAR FOR BIT DATA, respectivamente, la replicación establece la longitud del tipo de datos de Db2 para que sea la misma que la del tipo de SQL Server.
Este enfoque permite crear con éxito la tabla generada en el Suscriptor, siempre que la restricción de tamaño de página de DB2 sea lo suficientemente grande para acomodar el tamaño máximo de la fila. Asegúrate de que el usuario que utilices para acceder a la base de datos Db2 tenga permisos para acceder a espacios de tabla con capacidad suficiente para las tablas que se replican en Db2.
DB2 soporta columnas VARCHAR de hasta 32 kilobytes (KB); por lo tanto, algunas columnas de objetos grandes de SQL Server pueden mapearse adecuadamente a columnas VARCHAR de DB2. Sin embargo, el proveedor OLE DB que usa la replicación para DB2 no soporta mapear objetos grandes de SQL Server a objetos grandes de DB2. Por esta razón, las columnas de texto de SQL Server, varchar(max),ntext y nvarchar(max) se asignan a VARCHAR(0) en los scripts de creación generados. Debes cambiar el valor de longitud de 0 a un valor apropiado antes de aplicar el script al Suscriptor. Si no cambias la longitud del tipo de dato, DB2 genera el error 604 cuando se intenta crear la tabla en el suscriptor DB2 (el error 604 indica que el atributo de precisión o longitud de un tipo de dato no es válido).
Basándote en tu conocimiento de la tabla fuente que estás replicando, determina si es apropiado mapear un objeto grande de SQL Server a un elemento de longitud variable de DB2, y especifica una longitud máxima adecuada en un script de creación personalizado. Para información sobre cómo especificar un script de creación personalizado, consulte el paso 5 en la sección "Configuración de un suscriptor IBM Db2" en este artículo.
Nota:
La longitud especificada para el tipo DB2, combinada con otras longitudes de columna, no puede superar el tamaño máximo de fila basado en el espacio de la tabla DB2 al que se asignan los datos de la tabla.
Si no hay un mapeo adecuado para una columna de objeto grande, considera usar filtrado por columna en el artículo para que la columna no se replique. Para obtener más información, vea Filtrar datos publicados.
Al replicar SQL Server nchar y nvarchar a DB2 CHAR y VARCHAR, la replicación utiliza el mismo especificador de longitud para el tipo DB2 que para el tipo SQL Server. Sin embargo, la longitud del tipo de dato podría ser demasiado pequeña para la tabla DB2 generada.
En algunos entornos DB2, un elemento de datos de SQL Server no está restringido a caracteres de un solo byte; la longitud de un elemento CHAR o VARCHAR debe tener en cuenta esta condición. También debes tener en cuenta los caracteres shift in y shift out si son necesarios. Si replicas tablas con columnas nchar y nvarchar , puede que necesites especificar una longitud máxima mayor para el tipo de dato en un script de creación personalizado. Para información sobre cómo especificar un script de creación personalizado, consulte el paso 5 en la sección "Configuración de un suscriptor IBM Db2" en este artículo.