Compartilhar via


Assinantes do IBM DB2

O SQL Server dá suporte a assinaturas push para IBM DB2/AS 400, DB2/MVS e DB2/Banco de Dados Universal por meio dos provedores OLE DB incluídos no Microsoft Host Integration Server.

Configurando um Assinante do IBM DB2

Para configurar um Assinante do IBM DB2, siga estas etapas:

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

    • Se você estiver usando o Microsoft SQL Server 2012 Enterprise, na página da Web de 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 o Provedor do Microsoft OLE DB para DB2.

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

    Além de instalar o provedor, recomendamos que você instale a Ferramenta de Acesso a Dados, que é usada na próxima etapa (ela é instalada por padrão com o download do SQL Server 2012 Enterprise). Para obter mais informações sobre como instalar e usar a Ferramenta de Acesso a Dados, consulte a documentação do provedor ou a documentação do 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 a Ferramenta de Acesso a Dados. Para criar a cadeia de caracteres na Ferramenta de Acesso a Dados:

    1. Clique em Iniciar, Programas, Provedor OLE DB da Microsoft para DB2 e, em seguida, Ferramenta de Acesso a Dados.

    2. Na Ferramenta de Acesso a Dados, siga as etapas para fornecer informações sobre o servidor DB2. Quando você conclui a ferramenta, um UDL (link de dados universal) é criado com uma cadeia de conexão associada (a UDL não é realmente usada pela replicação, mas a cadeia de conexão é).

    3. Acesse a cadeia de conexão: clique com o botão direito do mouse na UDL na Ferramenta de Acesso a Dados 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 são específicas para o servidor DB2 que você está configurando, mas a opção Process Binary as Character sempre deve ser definida como False. Um valor é necessário para a opção Initial Catalog de 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 publicação transacional, habilite-o para assinantes que não são do SQL Server e crie uma assinatura push para o Assinante. Para obter mais informações, consulte Criar uma assinatura para um assinante que não seja do SQL Server.

  4. Opcionalmente, especifique um script de criação personalizado para um ou mais artigos. Quando uma tabela é publicada, um script CREATE TABLE é criado para essa tabela. Para assinantes que não são do SQL Server, o script é criado no dialeto Transact-SQL e, em seguida, é traduzido para um dialeto SQL mais genérico pelo Agente de Distribuição antes de ser aplicado no Assinante. Para especificar um script de criação personalizado, modifique o script Transact-SQL existente ou crie um script completo que use o dialeto SQL DB2; se um script DB2 for criado, use a diretiva bypass_translation para que o Agente de Distribuição aplique o script no Assinante sem tradução.

    Os scripts podem ser modificados por vários motivos, mas o motivo mais comum é alterar mapeamentos de tipo de dados. Para obter mais informações, consulte a seção "Considerações de mapeamento de tipo de dados" neste tópico. Se você modificar o script Transact-SQL, as alterações deverão ser restritas a alterações de mapeamento de tipo de dados (e o script não deve conter comentários). Se forem necessárias alterações mais substanciais, crie um script DB2.

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

    1. Depois que o instantâneo tiver sido gerado para a publicação, navegue até a pasta de instantâneo da publicação.

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

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

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

    5. Execute sp_changearticle, especificando o caminho e o 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 SQL DB2. Verifique se a primeira linha do arquivo está bypass_translation, sem mais nada na linha.

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

Considerações para assinantes do IBM DB2

Além das considerações abordadas no tópico Assinantes que não são do SQL Server, considere os seguintes aspectos ao replicar para Assinantes do DB2.

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

  • Não publique tabelas para Destinatários 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 as linhas utilizando a chave primária, o que pode causar falhas, uma vez que esses tipos de dados são convertidos para VARCHAR(41) no Assinante. Tabelas com chaves primárias que usam esses tipos de dados podem ser publicadas usando a replicação por instantâneo.

  • Se você deseja pré-criar tabelas no Assinante, em vez de permitir que a replicação as crie, use a opção de suporte apenas para replicação. Para mais informações, consulte Inicializar uma assinatura transacional sem um instantâneo.

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

    • Se o banco de dados de publicação incluir tabelas com nomes mais longos do que os suportados na versão do DB2 no lado do Assinante, especifique um nome alternativo para a propriedade de artigo destination_table. Para obter mais informações sobre como definir propriedades ao criar uma publicação, consulte Criar uma publicação e definir um artigo.

    • Não é possível especificar nomes de coluna alternativos. Você deve garantir que as tabelas publicadas não incluam nomes de coluna mais longos do que os suportados na versão DB2 utilizada pelo assinante.

Mapeando tipos de dados do SQL Server para o IBM DB2

A tabela a seguir mostra os mapeamentos de tipo de dados usados quando os dados são replicados para um Assinante executando o IBM DB2.

Tipo de dados do SQL Server Tipo de dados IBM DB2
bigint DECIMAL(19,0)
binary(1-254) CHAR(1-254) COM DADOS EM BITS
binary(255-8000) VARCHAR(255-8000) PARA DADOS BINÁRIOS
bit SMALLINT
char(1-254) CHAR(1-254)
char(255-8000) VARCHAR(255-8000)
date DATA
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) DUPLICAR
float FLUTUAR
geography IMAGEM
geometry IMAGEM
hierarchyid IMAGEM
image VARCHAR(0) PARA DADOS BINÁRIOS1
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ão aplicável
sysname VARCHAR(128)
text VARCHAR(0)1
time(0-7) VARCHAR(16)
timestamp CHAR(8) PARA DADOS DE BIT
tinyint SMALLINT
uniqueidentifier CHAR(38)
varbinary(1-8000) VARCHAR(1-8000) PARA DADOS BINÁRIOS
varchar(1-8000) VARCHAR(1-8000)
varbinary(max) VARCHAR(0) PARA DADOS DE BIT1
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 do DB2:

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

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

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

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

    Observação

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

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

  • Ao replicar os tipos SQL Server nchar e nvarchar para DB2 CHAR e VARCHAR, a replicação usa o mesmo especificador de comprimento para o tipo DB2 que para o tipo SQL Server. No entanto, o comprimento do tipo de dados pode ser muito pequeno para a tabela DB2 gerada.

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

Consulte Também

Assinantes que não são do SQL Server
Assinar publicações