Erro para pacotes SSIS em servidores SQL configurados para usar criptografia e tamanho do pacote de rede
Este artigo ajuda você a resolver o problema que ocorre quando você configura o SQL Server para usar conexões criptografadas e a opção de tamanho do pacote de rede.
Versão original do produto: SQL Server
Número original do KB: 2006769
Sintomas
Considere o seguinte cenário para ambientes SQL Server:
Você configura o SQL Server para usar Habilitar conexões criptografadas com o Mecanismo de Banco de Dados para conexões.
Você configura seu SQL Server para usar uma opção de tamanho de pacote de rede maior que o valor padrão (4K).
Nesse cenário, você observará o seguinte:
Uma tentativa de salvar pacotes SSIS no repositório de pacotes MSDB falhará com a seguinte mensagem de erro:
O método SaveToSQLServer encontrou o código de erro OLE DB 0x80004005 (falha no link de comunicação). A instrução SQL emitida falhou.
Observação
Você também se depara com a mensagem de erro acima ao salvar planos de manutenção criados no SQL Server Management Studio como pacotes SSIS em bancos de dados MSDB, pois essa operação usa inerentemente a criptografia para conexões com o SQL Server.
O recurso de coletor de dados no SQL Server que usa SSIS é executado em vários problemas, conforme observado abaixo:
- Um trabalho do Conjunto de Coleta de Dados relata os seguintes erros no Histórico de Trabalhos:
dcexec: Erro: Erro interno em Main (Motivo: O sistema não consegue encontrar o arquivo especificado).
dcexec: Erro: Erro interno em Main (Motivo: O identificador é inválido).- Ao executar um Conjunto de Coleta de Dados diretamente dos Dados, você pode encontrar a seguinte mensagem de erro:
Falha no pacote "Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection".
Se você revisar os logs do Coletor de Dados, encontrará uma mensagem de erro semelhante à seguinte:
Erro SSIS. Nome do componente: TaskForCollectionItem_1, Código: -1073602332, Subcomponente: (nulo), Descrição: Erro 0xC0014062 ao preparar o carregamento do pacote. O método LoadFromSQLServer encontrou o código de erro OLE DB 0x80004005 (falha no link de comunicação). Houve falha na instrução SQL emitida.
O problema pode ocorrer com qualquer operação que use os métodos Application.LoadFromSqlServer(String, String, String, String, String, IDTSEvents) ou Application.SaveToSqlServer(Package, IDTSEvents, String, String, String) quando ambas as condições (criptografia e tamanho de pacote grande) discutidas nesta seção são verdadeiras.
Causa
O Secure Socket Layer (SSL) e seu substituto, Transport Layer Security (TLS), limitam os fragmentos de dados a 16k (16384) de tamanho. Isso está documentado no RFC 2246 público (seção 6.2.2) e a implementação atual de protocolos de rede e a camada de endpoints TDS adere a essa especificação. Portanto, ao usar um tamanho de pacote de rede maior que 16k em ambientes em que a criptografia está habilitada no SQL Server, você encontrará erros discutidos na seção Sintomas.
Solução
Para resolver esse problema, especifique um tamanho de pacote de rede menor ou igual a 16.384 bytes. Você pode usar o seguinte código para definir a network packet size
opção de configuração do procedimento armazenado do sp_configure
sistema:
Observação
Se o MARS estiver habilitado, o provedor SMUX adicionará um cabeçalho de 16 bytes ao pacote antes da criptografia SSL, reduzindo o tamanho máximo do pacote de rede para 16368 bytes.
EXEC sp_configure 'network packet size', 16368
RECONFIGURE WITH OVERRIDE
GO
O tamanho do pacote de rede também pode ser alterado por meio da página Propriedades do Servidor no Pesquisador de Objetos. Selecione a opção Avançado e digite o novo valor para Tamanho do pacote de rede e clique em OK.
Observação
Você não precisa reiniciar o SQL Server para que a alteração entre em vigor. Depois que essa configuração for alterada, todas as novas conexões receberão o novo valor.
Mais informações
Etapas para reproduzir
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
Certifique-se de que o coletor de dados esteja instalado.
Defina o Tamanho do pacote de rede para um valor maior que 16K.
Clique com o botão direito do mouse em Coleta de dados no Pesquisador de Objetos (OE) e desative a coleta de dados.
Clique com o botão direito do mouse em Coleta de dados no OE e selecione Ativar coleta de dados.
Clique com o botão direito do mouse em Atividade do Servidor nos conjuntos de coleta e selecione Iniciar Conjunto de Coleta de Dados.
Para obter o erro, clique com o botão direito do mouse em Atividade do servidor e selecione Coletar e carregar agora. (Os logs do DC mostram o erro em detalhes).