Compartilhar via


Assinantes do IBM DB2

O Microsoft SQL Server oferece suporte a assinaturas push para IBM DB2/AS 400, DB2/MVS e DB2/Universal Database por meio dos provedores OLE DB fornecidos com o Microsoft Host Integration Server.

Configurando um Assinante do IBM DB2

Para configurar um Assinante IBM DB2, siga estas etapas:

  1. Instale a versão mais recente do Microsoft OLE DB Provider para DB2 no Distribuidor:

    • Se você estiver usando o SQL Server 2008 Enterprise, na página da Web Downloads do SQL Server 2008, na seção Downloads relacionados, clique no link para a versão mais recente do Microsoft SQL Server 2008 Feature Pack. Na página da Web do Microsoft SQL Server 2008 Feature Pack, pesquise por Microsoft OLE DB Provider for DB2.

    • Se você estiver usando o SQL Server 2008 Standard, instale a versão mais recente do servidor Microsoft Host Integration Services (HIS), que inclui o provedor.

    Além de instalar o provedor, recomendamos que você instale o Data Access Tool, que é usado na próxima etapa (é instalado por padrão com o download do SQL Server 2008 Enterprise). Para obter mais informações sobre a instalação e uso de Data Access Tool, consulte a documentação do provedor ou a documentação HIS.

  2. Crie uma cadeia de conexão para o Assinante. A cadeia de conexão pode ser criada em qualquer editor de texto, mas recomendamos que você use o Data Access Tool. Para criar a cadeia de caracteres no Data Access Tool:

    1. Clique em Iniciar, Programas, Microsoft OLE DB Provider para DB2 e, então, Data Access Tool.

    2. No Data Access Tool, siga as etapas para prover informações sobre o servidor de DB2. Quando você concluir a ferramenta, um UDL (vínculo de dados universal) é criado com uma cadeia de conexão associada (o UDL não é usado de fato pela replicação, mas a cadeia de conexão é).

    3. Acesse a cadeia de conexão: clique com o botão direito em UDL no Data Access Tool e selecione Exibir Cadeia de Conexão.

    A cadeia de conexão será semelhante a (quebras de linha são para legibilidade):

    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;
    

    A maioria das opções na cadeia de caracteres é específica para o servidor DB2 que você está configurando, mas a opção Process Binary as Character deve sempre ser definida como False. Um valor é necessário para a opção Initial Catalog para identificar o banco de dados de assinatura. A cadeia de conexão será inserida no Assistente para Nova Assinatura quando você criar a assinatura.

  3. Crie um instantâneo ou uma publicação transacional, habilite-o para Assinantes não SQL Server e, em seguida, crie uma assinatura push para o Assinante. Para obter mais informações, consulte:

  4. Opcionalmente, especifique um script de criação personalizado para um ou mais artigos. Quando uma tabela é publicada, um script CREATE TABLE é criado para aquela tabela. Para Assinantes não SQL Server, o script é criado no dialeto Transact-SQL e, depois, é convertido para um dialeto SQL mais genérico pelo Distribution Agent antes de ser aplicado ao Assinante. Para especificar um script de criação personalizado, modifique o script Transact-SQL existente ou crie um script completo que usa o dialeto SQL DB2; se for criado um script DB2, use a diretiva bypass_translation para que o Distribution Agent aplique o script no Assinante sem conversão.

    Os scripts podem ser modificados por diversas razões, porém a razão mais comum é alterar mapeamentos de tipo de dados. Para obter mais informações, consulte a seção "Considerações para o mapeamento de tipo de dados" neste tópico. Se você modificar o script Transact-SQL, as alterações deverão ficar restritas a alterações de mapeamento de tipo de dados (e o script não deverá conter nenhum comentário). Se mais alterações significativas forem requeridas, crie um script DB2.

    Para modificar um script de artigo e provê-lo como um script de criação personalizado

    1. Depois que o instantâneo for gerado para a publicação, navegue à pasta de instantâneo da publicação.

    2. Localize o arquivo .sch com o mesmo nome do artigo, por exemplo MyArticle.sch.

    3. Abra este arquivo usando o Bloco de Notas ou outro editor de textos.

    4. Modifique o arquivo e salve-o em um diretório diferente.

    5. Execute sp_changearticle, especificando o caminho e nome do arquivo para a propriedade creation_script. Para obter mais informações, consulte sp_changearticle (Transact-SQL).

    Para criar um script de artigo e fornecê-lo como um script de criação personalizado

    1. Crie um script de artigo usando o dialeto DB2 SQL. Certifique-se que a primeira linha do arquivo é bypass_translation, com nada mais na linha.

    2. Execute sp_changearticle, especificando o caminho e nome do arquivo para a propriedade creation_script.

Considerações sobre os Assinantes IBM DB2

Além das considerações abrangidas no tópico Assinantes não SQL Server, considere os assuntos a seguir ao replicar para os Assinantes DB2:

  • Os dados e índices para cada tabela replicada são atribuídos para um espaço de tabela de DB2. O tamanho de página de um espaço de tabela DB2 controla o número máximo de colunas e o tamanho máximo da linha das tabelas pertencentes ao espaço de tabela. Verifique se o espaço de tabela associado com tabelas replicadas é baseado apropriadamente no número de colunas replicadas e no tamanho máximo das linhas das tabelas.

  • Não publique tabelas para Assinantes DB2 usando replicação transacional se uma ou mais colunas de chave primária na tabela forem do tipo de dados DECIMAL(32-38, 0-38) ou NUMERIC(32-38, 0-38). A replicação transacional identifica linhas usando a chave primária; isso poderá resultar em falhas porque estes tipos de dados são mapeados para VARCHAR(41) no Assinante. Tabelas com chaves primárias que usam estes tipos de dados podem ser publicadas usando replicação de instantâneo.

  • Se você quer pré-criar tabelas no Assinante, em vez de deixar a replicação criá-las, use a opção Suporte para replicação somente. Para obter mais informações, consulte Inicializando uma assinatura transacional sem um instantâneo.

  • O SQL Server permite nomes de tabela e nomes de coluna mais longos que o DB2:

Mapear Tipos de Dados do SQL Server para IBM DB2

A tabela a seguir exibe os mapeamentos dos tipos de dados usados quando os dados são replicados para um Assinante que executa IBM DB2.

Tipos de dados SQL Server

Tipo de dados 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)

date

DATE

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)

DOUBLE

float

FLOAT

geography

IMAGE

geometry

IMAGE

hierarchyid

IMAGE

image

VARCHAR(0) FOR BIT DATA1

into

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

time(0-7)

VARCHAR(16)

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 Consulte a próxima seção para obter mais informações sobre mapeamentos para VARCHAR(0).

Considerações sobre mapeamento de tipo de dados

Considere os seguintes problemas de mapeamento de tipo de dados ao replicar para Assinantes DB2:

  • Durante o mapeamento de char, varchar, binary e varbinary do SQL Server para CHAR, VARCHAR, CHAR FOR BIT DATA e VARCHAR FOR BIT DATA do DB2, respectivamente, a replicação define o comprimento do tipo de dados do DB2 como igual ao do tipo do SQL Server.

    Isto permite que a tabela gerada seja criada com êxito no Assinante, desde que a restrição de tamanho da página DB2 seja ampla o suficiente para acomodar o tamanho máximo da linha. Assegure-se de que o logon usado para acessar o banco de dados do DB2 tenha permissões para acessar espaços de tabela de tamanho suficiente para as tabelas que estão sendo replicadas para DB2.

  • O DB2 pode suportar colunas VARCHAR de até 32 KB (quilobytes); portanto, é possível que algumas colunas de objeto grande do SQL Server possam ser mapeadas apropriadamente para colunas VARCHAR do DB2. Porém, o provedor OLE DB que a replicação usa para DB2 não oferece suporte ao mapeamento de objetos grandes do SQL Server para objetos grandes do DB2. Por isso, as colunas text, varchar(max), ntext e nvarchar(max) do SQL Server são mapeadas para VARCHAR(0) nos scripts de criação gerados. O valor de comprimento de 0 deve ser alterado para um valor apropriado antes de aplicar o script ao Assinante. Se o comprimento de tipo de dado não for alterado, o DB2 gerará erro 604 quando a criação de tabela for tentada no Assinante DB2 (o erro 604 indica que o atributo de precisão ou comprimento de um tipo de dado não é válido).

    Baseado em seu conhecimento da tabela de origem que você está replicando, determine se é apropriado mapear um objeto grande do SQL Server para um item do DB2 de comprimento variável e especifique um comprimento máximo apropriado em um script de criação personalizado. Para informações sobre especificar um script de criação personalizado, consulte a etapa 5 na seção "Configurando um Assinante do IBM DB2" neste tópico.

    ObservaçãoObservação

    O comprimento especificado para o tipo do DB2, quando combinado com outros comprimentos de coluna, não pode exceder o tamanho máximo de linha baseado no espaço de tabela do DB2 ao qual os dados de tabela são atribuídos.

    Se não houver mapeamento apropriado para uma coluna de objeto grande, considere usar filtragem de coluna no artigo para que a coluna não seja replicada. Para obter mais informações, consulte Filtrando dados publicados.

  • Durante a replicação de nchar e nvarchar do SQL Server para DB2 CHAR e VARCHAR, a replicação usa para o tipo do DB2 o mesmo especificador de comprimento usado para o tipo do SQL Server. Porém, o comprimento de tipo de dados pode ser muito pequeno para a tabela DB2 gerada.

    Em alguns ambientes DB2, um item de dados char do SQL Server não é restrito a caracteres de byte único; o comprimento de um item CHAR ou VARCHAR deve levar isso em conta. Você deve levar também em conta os caracteres SI e SO se forem necessários. Se estivar replicando tabelas com as colunas nchar e nvarchar, talvez seja necessário especificar um comprimento máximo maior para o tipo de dados em um script de criação personalizado. Para informações sobre especificar um script de criação personalizado, consulte a etapa 5 na seção "Configurando um Assinante do IBM DB2" neste tópico.