Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
O SQL Server suporta subscrições push para IBM Db2/AS 400, DB2/MVS e DB2/Universal Database através dos fornecedores OLE DB incluídos no Microsoft Host Integration Server.
Configuração de um Subscritor IBM Db2
Para configurar um Assinante IBM Db2, siga estes passos:
Instale a versão mais recente do Microsoft OLE DB Provider para DB2 no Distribuidor:
Se estiver a usar SQL Server Enterprise Edition, na página Web de Downloads SQL Server, na secção Downloads Relacionados, selecione o link para a versão mais recente do Microsoft SQL Server Feature Pack. Na página web do Microsoft SQL Server Feature Pack, pesquise por OLE DB Provider for DB2.
Se estiver a usar o SQL Server Standard Edition, instale a versão mais recente do servidor Microsoft Host Integration Services (HIS), que inclui o fornecedor.
Para além de instalar o fornecedor, instale a Ferramenta de Acesso a Dados, que será utilizada na etapa seguinte. A ferramenta é instalada por defeito com o download para SQL Server Enterprise Edition. Para mais informações sobre a instalação e utilização da Ferramenta de Acesso a Dados, consulte a documentação do fornecedor ou a documentação HIS.
Crie uma string de ligação para o Assinante. Podes criar a cadeia de ligação em qualquer editor de texto, mas usa a Data Access Tool. Para criar a cadeia na Ferramenta de Acesso a Dados:
Selecione Iniciar, Programas, Fornecedor OLE DB para DB2 e depois Ferramenta de Acesso a Dados.
Na Ferramenta de Acesso a Dados, siga os passos para fornecer informações sobre o servidor DB2. Quando concluir a ferramenta, é criada uma ligação de dados universal (UDL) com uma cadeia de ligação associada. O UDL não é usado para replicação, mas a cadeia de ligação é.
Acede à cadeia de ligação: clica com o botão direito no UDL na Ferramenta de Acesso a Dados e seleciona Mostrar Cadeia de Ligação.
A cadeia de ligação é semelhante à seguinte (as 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 são específicas para o servidor DB2 que estás a configurar, mas deves sempre definir as
Process Binary as Characteropções eDerive ParametersparaFalse. Tem de fornecer um valor para a opçãoInitial Catalogpara identificar a base de dados de subscrição. Introduza a cadeia de ligação no Assistente de Nova Subscrição ao criar a subscrição.Crie um snapshot ou publicação transacional, ative-o para Assinantes que não sejam SQL Server e depois crie uma subscrição push para o Assinante. Para mais informações, consulte Criar uma Subscrição para um Assinante que não é SQL Server.
Opcionalmente, especifique um script de criação personalizado para um ou mais artigos. Quando uma tabela é publicada, é criado um
CREATE TABLEscript para essa tabela. Para Subscritores não-SQL Server, cria-se o script no dialeto Transact-SQL, e o Distribution Agent traduz-o para um dialeto SQL mais genérico antes de o aplicar ao Assinante. Para especificar um script de criação personalizado, pode modificar o script de Transact-SQL existente ou criar um script completo que utilize o dialeto SQL do DB2. Se criares um script DB2, usa a diretiva bypass_translation para que o Distribution Agent aplique o script ao assinante sem tradução.Podes modificar scripts por várias razões, mas a mais comum é alterar os mapeamentos dos tipos de dados. Para mais informações, consulte a secção "Considerações sobre Mapeamento de Tipos de Dados" neste artigo. Se modificares o Transact-SQL script, restrinja alterações ao mapeamento de tipos de dados e não incluas comentários. Se precisares de mudanças mais substanciais, cria um script DB2.
Modificar um script de artigo e fornecê-lo como um script de criação personalizado
Depois de gerar o snapshot para a publicação, vá à pasta snapshot da publicação.
Localize o
.schficheiro com o mesmo nome do artigo, comoMyArticle.sch.Abra este ficheiro usando o Notepad ou outro editor de texto.
Modifica o ficheiro e guarda-o numa pasta diferente.
Execute
sp_changearticle, especificando o caminho do ficheiro e o nome para a propriedade creation_script . Para mais informações, consulte sp_changearticle (Transact-SQL).
Criar um roteiro de artigo e fornecê-lo como um script de criação personalizado
Crie um script de artigo usando o dialeto SQL Db2. Certifique-se de que a primeira linha do ficheiro é bypass_translation, sem mais nada nessa linha.
Execute sp_changearticle, especificando o caminho do ficheiro e o nome da propriedade creation_script .
Considerações para os Assinantes do IBM Db2
Para além das considerações abordadas no artigo Subscritores que não sejam do SQL Server, considere as seguintes questões ao replicar para subscritores 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 tabelas Db2 controla o número máximo de colunas e o tamanho máximo de linha das tabelas pertencentes ao espaço de tabelas. Certifique-se de que o espaço de tabela associado às tabelas replicadas é apropriado com base no número de colunas replicadas e no tamanho máximo de linha das tabelas.
Não publique tabelas aos Subscritores Db2 usando replicação transacional se uma ou mais colunas-chave primárias da 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. Este método pode resultar em falhas porque estes tipos de dados são convertidos em VARCHAR(41) no Subscritor. Pode publicar tabelas com chaves primárias que utilizam estes tipos de dados usando replicação instantânea.
Se pretender criar tabelas no subscritor, em vez de serem criadas pela replicação, utilize a opção apenas de suporte de replicação. Para obter mais informações, consulte Inicializar uma assinatura transacional sem uma captura instantânea.
O SQL Server permite nomes de tabelas e colunas mais longos do que o Db2:
Se a base de dados de publicação incluir tabelas com nomes mais longos do que os suportados na versão do Db2 no Subscritor, especifique um nome alternativo para a propriedade de artigo destination_table. Para mais informações sobre definir propriedades ao criar uma publicação, consulte Criar uma Publicação e Definir um Artigo.
Não podes especificar nomes alternativos de colunas. Certifique-se de que as tabelas publicadas não incluam nomes de colunas mais longos do que os suportados na versão do Db2 no Subscritor.
Mapeamento de tipos de dados do SQL Server para o IBM Db2
A tabela seguinte mostra os mapeamentos de tipos de dados que são usados quando os dados são replicados para um assinante em execução no IBM Db2.
| Tipo de dados do SQL Server | Tipo de dados IBM Db2 |
|---|---|
| bigint | DECIMAL(19,0) |
| binário(1-254) | CHAR(1-254) PARA REPRESENTAR DADOS EM BITS |
| binário(255-8000) | VARCHAR(255-8000) PARA DADOS DE BITS |
| bit | SMALLINT |
| char(1-254) | CHAR(1-254) |
| Char(255-8000) | VARCHAR (255-8000) |
| date | DATE |
| datetime | DATA E HORA |
| 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 |
| geography | IMAGEM |
| geometry | IMAGEM |
| hierarchyid | IMAGEM |
| image | VARCHAR(0) PARA DADOS DE BIT* |
| para | INT |
| dinheiro | 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 | DATA E HORA |
| smallint | SMALLINT |
| dinheiro pequeno | DECIMAL(10,4) |
| sql_variant | N/A |
| sysname | VARCHAR (128) |
| texto | VARCHAR(0)* |
| Tempo(0-7) | VARCHAR(16) |
| timestamp | CHAR(8) PARA DADOS DE BITS |
| 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 BIT* |
| varchar(max) | VARCHAR(0)* |
| xml | VARCHAR(0)* |
- Consulte a secção seguinte para mais informações sobre mapeamentos para VARCHAR(0).
Considerações sobre mapeamento de tipos de dados
Considere as seguintes questões de mapeamento de tipos de dados ao replicar para assinantes do DB2:
Ao mapear os tipos char, varchar, binary e varbinary do SQL Server para CHAR, VARCHAR, CHAR FOR BIT DATA e VARCHAR FOR BIT DATA do Db2, respetivamente, a replicação define o comprimento do tipo de dados do Db2 para que seja o mesmo que o do tipo do SQL Server.
Esta abordagem permite que a tabela gerada seja criada com sucesso no Assinante, desde que a restrição de tamanho da página do DB2 seja suficientemente grande para acomodar o tamanho máximo da linha. Certifique-se de que o login que usa para aceder à base de dados Db2 tem permissões para aceder a espaços de tabela de tamanho suficiente para as tabelas a serem replicadas para Db2.
O DB2 suporta colunas VARCHAR de até 32 kilobytes (KB); assim, algumas colunas de objeto grandes do SQL Server podem ser adequadamente mapeadas para colunas VARCHAR do DB2. No entanto, o fornecedor 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 esta razão, as colunas text, varchar(max), ntext e nvarchar(max) do SQL Server são mapeadas para VARCHAR(0) nos scripts de criação gerados. Tem de alterar o valor do comprimento de 0 para um valor adequado antes de aplicar o script ao subscritor. Se não alterar o comprimento do tipo de dado, o DB2 gera o erro 604 quando a criação da tabela é tentada no assinante DB2 (o erro 604 indica que o atributo precisão ou comprimento de um tipo de dado não é válido).
Com base no teu conhecimento da tabela de origem que estás a replicar, determina se é apropriado mapear um objeto grande do SQL Server para um item DB2 de comprimento variável e especifica um comprimento máximo apropriado num script de criação personalizado. Para informações sobre como especificar um script de criação personalizado, consulte o passo 5 na secção "Configurar um Assinante IBM Db2" neste artigo.
Observação
O comprimento especificado para o tipo DB2, quando combinado com outros comprimentos de colunas, não pode exceder o tamanho máximo da linha com base no espaço da tabela DB2 a que os dados da tabela são atribuídos.
Se não houver mapeamento adequado para uma coluna de objeto grande, considere usar filtragem por colunas no artigo para que a coluna não seja replicada. Para mais informações, consulte Filtrar Dados Publicados.
Ao replicar SQL Server nchar e nvarchar para DB2 CHAR e VARCHAR, a replicação utiliza 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 demasiado pequeno para a tabela DB2 gerada.
Em alguns ambientes DB2, um item de dados char do SQL Server não está restringido a caracteres de um único byte; o comprimento de um item CHAR ou VARCHAR deve ter essa condição em conta. Deve também ter em conta os caracteres shift in e shift out, caso sejam necessários. Se estiveres a replicar tabelas com colunas nchar e nvarchar , podes precisar de especificar um comprimento máximo maior para o tipo de dado num script de criação personalizado. Para informações sobre como especificar um script de criação personalizado, consulte o passo 5 na secção "Configurar um Assinante IBM Db2" neste artigo.