Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a:SQL Server
O 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 IBM Db2
Para configurar um Assinante IBM DB2, siga estas etapas:
Instale a versão mais recente do Provedor Microsoft OLE DB para DB2 no Distribuidor:
Se você estiver usando SQL Server Edição Enterprise, na página de Downloads SQL Server, na seção Downloads Relacionados, selecione o link para a versão mais recente do Microsoft SQL Server Feature Pack. Na página do Microsoft SQL Server Feature Pack, procure por OLE DB Provider for DB2.
Se você estiver usando o SQL Server Standard Edition, instale a versão mais recente do servidor Microsoft Host Integration Services (HIS), que inclui o provedor.
Além de instalar o provedor, instale a Ferramenta de Acesso a Dados, que será usada na próxima etapa. A ferramenta é instalada por padrão junto com o download para SQL Server Edição 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.
Crie uma string de conexão para o Assinante. Você pode criar a cadeia de conexão em qualquer editor de texto, mas use a ferramenta Data Access Tool. Para criar a cadeia de caracteres no Data Access Tool:
Selecione Iniciar, Programas, Provedor OLE DB para DB2 e então Ferramenta de Acesso a Dados.
No Data Access Tool, siga as etapas para prover informações sobre o servidor de DB2. Quando você completa a ferramenta, ela cria um enlace de dados universal (UDL) com uma cadeia de conexão associada. O UDL não é usado pela replicação, mas a cadeia de conexão é.
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 é semelhante à seguinte (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;Derive Parameters=False;Units of Work=RUW;DBMS Platform=DB2/NT; Persist Security Info=False;Connection Pooling=True;A maioria das opções na string é específica para o servidor DB2 que você está configurando, mas você sempre deve definir as
Process Binary as Characteropções eDerive ParametersparaFalse. Você precisa fornecer um valor para aInitial Catalogopção de identificar o banco de dados de assinaturas. Insira a cadeia de conexão no Assistente de Nova Assinatura ao criar a assinatura.Crie uma publicação de instantâneo ou uma publicação transacional, habilite-a para Assinantes que não sejam do SQL Server e, em seguida, 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.
Opcionalmente, especifique um script de criação personalizado para um ou mais artigos. Quando uma tabela é publicada, um script
CREATE TABLEé criado para ela. Para Assinantes não SQL Server, você cria o script no dialeto Transact-SQL, e o Agente de Distribuição o traduz para um dialeto SQL mais genérico antes de aplicá-lo no Assinante. Para especificar um script de criação personalizado, pode modificar o script de Transact-SQL existente ou criar um script completo que use o dialeto SQL do DB2. Se você criar um script DB2, use a diretiva bypass_translation para que o Agente de Distribuição aplique o script no Assinante sem tradução.Você pode modificar scripts por vários motivos, mas o mais comum é alterar mapeamentos de tipos de dados. Para mais informações, veja a seção "Considerações sobre Mapeamento de Tipos de Dados" neste artigo. Se você modificar o script Transact-SQL, restrinja alterações no mapeamento de tipos de dados e não inclua comentários. Se precisar de mudanças mais substanciais, crie um script DB2.
Para modificar um script de artigo e fornecê-lo como um script de criação personalizado
Depois que o snapshot for gerado para a publicação, vá para a pasta snapshot da publicação.
Localize o arquivo
.schcom o mesmo nome do artigo, por exemplo,MyArticle.sch.Abra este arquivo usando o Notepad ou outro editor de texto.
Modifique o arquivo e salve-o em um diretório diferente.
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
Crie um script de artigo usando o dialeto SQL do Db2. Certifique-se que a primeira linha do arquivo seja bypass_translation, com nada mais na linha.
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 tratadas no artigo Assinantes que não são do SQL Server, considere as seguintes questões ao replicar para assinantes do Db2:
Os dados e índices de cada tabela replicada são atribuídos a um espaço de tabela Db2. O tamanho da 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 do Db2 usando replicação transacional se uma ou mais colunas principais da tabela forem do tipo de dado DECIMAL(32-38, 0-38) ou NUMERIC(32-38, 0-38). A replicação transacional identifica linhas usando a chave primária. Esse método pode resultar em falhas porque esses tipos de dados são mapeados para VARCHAR(41) no Assinante. Você pode publicar tabelas com chaves primárias que utilizam esses tipos de dados usando replicação por snapshot.
Se você quiser criar tabelas no Assinante, em vez de permitir que a replicação as crie, use a opção somente suporte à replicação. Para obter mais informações, consulte Inicializar uma Assinatura Transacional sem um Instantâneo.
O SQL Server permite nomes de tabelas e colunas mais longos do que o 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 Assinante, especifique um nome alternativo para a propriedade de artigo destination_table. Para mais informações sobre como configurar propriedades ao criar uma publicação, consulte Criar uma publicação e Definir um artigo.
Você não pode especificar nomes alternativos de colunas. Certifique-se de que as tabelas publicadas não incluam nomes de colunas mais longos do que os compatíveis com a versão do Db2 no Assinante.
Mapeamento de tipos de dados do SQL Server para o 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.
| Tipo de dados do SQL Server | Tipo de dados IBM DB2 |
|---|---|
| bigint | DECIMAL(19,0) |
| binary(1-254) | CHAR(1-254) PARA DADOS DE BIT |
| binary(255-8000) | VARCHAR(255-8000) PARA 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) | DUPLO |
| float | FLOAT |
| geografia | IMAGE |
| geometria | IMAGE |
| hierarchyid | IMAGE |
| imagem | VARCHAR(0) PARA DADOS BINÁRIOS* |
| 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 DADOS DE BIT |
| tinyint | SMALLINT |
| uniqueidentifier | CHAR(38) |
| varbinary(1-8000) | VARCHAR(1-8000) PARA DADOS DE BIT |
| varchar(1-8000) | VARCHAR(1-8000) |
| varbinary(max) | VARCHAR(0) PARA DADOS BINÁRIOS* |
| varchar(max) | VARCHAR(0)* |
| xml | VARCHAR(0)* |
- Confira a próxima seção para mais informações sobre mapeamentos para VARCHAR(0).
Considerações sobre mapeamento de tipos de dados
Considere os seguintes problemas de mapeamento de tipos de dados na replicação para Assinantes 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 tamanho do tipo de dados do Db2 como igual ao do tipo do SQL Server.
Essa abordagem permite que a tabela gerada seja criada com sucesso no Assinante, desde que o limite de tamanho de página do DB2 seja grande o suficiente para suportar o tamanho máximo da linha. Certifique-se de que o login que você usa para acessar o banco de dados Db2 tenha permissões para acessar espaços de tabelas de tamanho suficiente para as tabelas que estão sendo replicadas no Db2.
O DB2 suporta colunas VARCHAR de até 32 kilobytes (KB); portanto, algumas colunas de objetos grandes do SQL Server podem ser adequadamente mapeadas para colunas VARCHAR do DB2. No entanto, o provedor OLE DB que a replicação usa para o DB2 não suporta mapear objetos grandes do SQL Server para objetos grandes do DB2. Por esse motivo, as colunas de texto do SQL Server, varchar(max),ntext e nvarchar(max) são mapeadas para VARCHAR(0) nos scripts de criação gerados. Você deve mudar o valor de comprimento de 0 para um valor apropriado antes de aplicar o script ao Assinante. Se você não alterar o comprimento do tipo de dado, o DB2 gera o erro 604 quando a criação da tabela é tentada no assinante do DB2 (o erro 604 indica que o atributo precisão ou comprimento de um tipo de dado 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 de comprimento variável do DB2 e especifique um comprimento máximo apropriado em um script de criação personalizado. Para informações sobre como especificar um script de criação personalizado, veja o passo 5 na seção "Configurando um Assinante IBM Db2" neste artigo.
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 baseado no espaço da tabela DB2 ao qual os dados da tabela são atribuídos.
Se não houver mapeamento apropriado para uma coluna de objeto grande, considere usar filtragem por colunas no artigo para que a coluna não seja replicada. Para obter mais informações, consulte Filter Published Data (Filtrar dados publicados).
Ao replicar nchar e nvarchar do SQL Server 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 dado 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 essa condição em conta. Você também deve levar em consideração os caracteres shift in e shift out, se eles forem necessários. Se você estiver replicando tabelas com colunas nchar e nvarchar , talvez precise especificar um comprimento máximo maior para o tipo de dado em um script de criação personalizado. Para informações sobre como especificar um script de criação personalizado, veja o passo 5 na seção "Configurando um Assinante IBM Db2" neste artigo.