KB5016884 – Atualização cumulativa 31 para SQL Server 2017
Data de Lançamento:
20/09/2022
Versão:
14.0.3456.2
Importante: A Atualização Cumulativa 31 é a última atualização cumulativa do Microsoft SQL Server 2017. SQL Server 2017 é transição para suporte estendido após 11 de outubro de 2022.
Resumo
Este artigo descreve o pacote de Atualização Cumulativa 31 (CU31) para a Microsoft SQL Server 2017. Esta atualização contém 20 correções emitidas após o lançamento do SQL Server Atualização Cumulativa 30 de 2017 e atualiza os componentes para os seguintes builds:
-
SQL Server – Versão do produto: 14.0.3456.2, versão do arquivo: 2017.140.3456.2
-
Analysis Services – Versão do produto: 14.0.249.94, versão do arquivo: 2017.140.249.94
Problemas conhecidos nesta atualização
Suponha que uma tabela usada pela replicação use uma coluna que usa a função NEWSEQUENTIALID na chave primária. Um erro ocorre quando você tenta aplicar o instantâneo no assinante. Aqui estão as mensagens de erro e tentativas de comando:
-
Tentativa de comando:
create procedure [sp_MSupd_PersonAddress]
@c1 int = NULL,
@c2 nvarchar(60) = NULL,
@c3 nvarchar(60) = NULL,
@c4 nvarchar(30) = NULL,
@c5 int = NULL,
@c6 nvarchar(15) = NULL,
@c7 [geography] = NULL,
@c8 uniqueidentifier = NULL,
@c9 datetime = NULL,
@pkc1 uniqueidentifier = NULL,
@bitmap binary(2)
as
begin
declare @primarykey_text nvarchar(100) = ''
if (substring(@bitmap,1,1) & 128 = 128)
begin
if @pkc1 is null
set @pkc1 = (newsequentialid())
update [Person].[
(Transaction sequence number: 0x0000002400000F30005500000000, Command ID: 7)
-
Mensagens de erro:
A função interna newsequentialid() só pode ser usada em uma expressão DEFAULT para uma coluna do tipo "uniqueidentifier" em uma instrução CREATE TABLE ou ALTER TABLE. Ele não pode ser combinado com outros operadores para formar uma expressão escalar complexa. (Fonte: MSSQLServer, número do erro: 302)
Obter ajuda: http://help/302
Observação A única maneira de resolver esse problema é alterar a coluna de chave primária para a função NEWID enquanto você tira o instantâneo e, em seguida, defina-o de volta para a função NEWSEQUENTIALID após a aplicação do instantâneo. Você pode executar o seguinte comando:
ALTER TABLE [Person].[Address] DROP CONSTRAINT [PK_Address_rowguid]
GO
ALTER TABLE [Person].[Address] ADD CONSTRAINT [PK_Address_rowguid] DEFAULT (NEWID()) FOR [rowguid]
GO
ALTER TABLE [Person].[Address] DROP CONSTRAINT [PK_Address_rowguid]
GO
ALTER TABLE [Person].[Address] ADD CONSTRAINT [PK_Address_rowguid] DEFAULT (NEWSEQUENTIALID()) FOR [rowguid]
GO
Melhorias e correções incluídas nesta atualização cumulativa
Uma pasta de trabalho do Excel para download que contém uma lista de resumos de builds, juntamente com seu ciclo de vida de suporte atual, está disponível. O arquivo do Excel também contém listas de correção detalhadas para SQL Server 2019 e SQL Server 2017. Baixe este arquivo do Excel agora.
Observação: As entradas individuais na tabela a seguir podem ser referenciadas diretamente por meio de um indicador. Se você selecionar qualquer ID de referência de bug na tabela, perceberá que uma marca de indicador é adicionada à URL usando esse formato: #bkmk_NNNNNNNN. Em seguida, você pode compartilhar essa URL com outras pessoas para que elas possam saltar diretamente para a correção desejada na tabela.
Referência de bug |
Número do artigo KB |
Descrição |
Área fixa |
Platform |
||
---|---|---|---|---|---|---|
Resolve a vulnerabilidade do DoS (Negação de Serviço) para a biblioteca Newtonsoft no SQL Server 2017. |
Analysis Services |
Windows |
||||
A solicitação somente leitura ainda vai para o nó primário de leitura-gravação em um grupo de disponibilidade Always On quando o nó de lista de roteamento somente leitura cai. |
Alta disponibilidade |
Todos |
||||
Uma falha de declaração ocorre na réplica secundária quando você usa grupos de disponibilidade Always On em redes de alta latência no SQL Server 2017. Você pode ver essa falha de declaração no log de erros: Declaração: Arquivo: <"e:\b\s3\\sources\\sql\\ntdbms\\storeng\\dfs\\trans\\lsnlocmap.cpp">, line=358 Failed Assertion = 'pos - pndx < map->EntryCount' |
Alta disponibilidade |
Todos |
||||
Os metadados tempdb com otimização de memória (HkTempDB) continuam consumindo memória em VARHEAP: Alocador de Página lob. |
OLTP in-memory |
Windows |
||||
Um vazamento de memória ocorre no índice de intervalo de tabelas na memória após a verificação de índice paralelo. |
OLTP in-memory |
Todas |
||||
Um vazamento de memória ocorre em "Range Index Heap" na tabela na memória que tem índices não clusterizados, sempre que houver inserções simultâneas. |
OLTP in-memory |
Todas |
||||
Problemas de desempenho e impasses ocorrem em SQL Server Agent no banco de dados msdb que tem backups automatizados. Além disso, você verá as seguintes mensagens de erro no log de SQL Server Agent: <DateTime> SqLServer Error: 1205, Transaction (ID do processo) foi bloqueado em recursos de bloqueio com outro processo e foi escolhido como a vítima do impasse. Execute novamente a transação. <DateTime> Falha ao recuperar> job <JobID do servidor. |
Ferramentas de gerenciamento |
Windows |
||||
5017551 |
CORREÇÃO: a instalação de CUs SQL Server pode disparar IndexOutOfRangeException |
Instalação & Instalar |
Windows |
|||
5017788 |
Desempenho do SQL |
Todas |
||||
Um despejo de agendador não produtivo ocorre no sqldk! SOS_MemoryWorkSpace::Pesquisa. |
Desempenho do SQL |
Todas |
||||
Despejos não produtivos ocorrem com frequência em ColumnStoreAttributeCache::ColumnStoreColumnAttributeNode::GetSegmentById. |
Desempenho do SQL |
Windows |
||||
5018050 |
mecanismo SQL Server |
Windows |
||||
5018231 |
mecanismo SQL Server |
Windows |
||||
5008184 |
mecanismo SQL Server |
Todos |
||||
O erro 9003 ocorre com o número de sequência de log incorreto (LSN) quando você faz uma restauração subsequente depois de especificar o LSN no limite do arquivo de log virtual (VLF) usando a instrução RESTORE WITH STANDBY. Aqui está a mensagem de erro: Msg 3013, Nível 16, Estado 1, Linha <LineNumber> RESTORE DATABASE está terminando de forma anormal. Msg 9003, Nível 17, Estado 11, Linha <LineNumber> O número de verificação de log (<LogScanNumber>) passado para verificação de log no banco de dados '<DatabaseName>' não é válido. Esse erro pode indicar corrupção de dados ou que o arquivo de log (.ldf) não corresponde ao arquivo de dados (.mdf). Se esse erro ocorreu durante a replicação, crie novamente a publicação. Caso contrário, restaure do backup se o problema resultar em uma falha durante a inicialização. |
mecanismo SQL Server |
Windows |
||||
O erro 208 ocorre quando você usa o procedimento armazenado sp_changereplicationserverpasswords para alterar senhas armazenadas para o logon do Microsoft SQL Server usado por agentes de replicação. Aqui está a mensagem de erro: Msg 208, Nível 16, Estado 1, Procedimento master.sys.sp_MSchangerepltablepasswords, Line <LineNumber> [Linha de Início do Lote 0] Nome do objeto inválido 'MSreplservers'. |
mecanismo SQL Server |
Windows |
||||
O alto uso da CPU ocorre quando você habilita o controle de alterações em um grande número de tabelas e faz a limpeza automática ou manual das tabelas de controle de alterações. |
mecanismo SQL Server |
Windows |
||||
O recurso FILESTREAM não está habilitado depois que você reinicia o sistema operacional devido às condições de corrida de várias instâncias de SQL Server. No log de erros, você pode ver a seguinte mensagem de erro: Erro: 5591, Gravidade: 16, Estado: 5. O recurso FILESTREAM está desabilitado. |
mecanismo SQL Server |
Windows |
||||
As IDs do grupo de arquivos que pertencem ao banco de dados clone podem estar incorretas se o banco de dados de origem tiver lacunas nas IDs do grupo de arquivos devido à remoção de arquivos ou grupos de arquivos. Quando você tenta inserir dados na tabela que pertence ao banco de dados clone gerado incorretamente, você recebe uma mensagem de erro que se assemelha à seguinte mensagem: Msg 622, Nível 16, Estado 3, Linha <LineNumber> O grupo de arquivos "<FileGroupName>" não tem arquivos atribuídos a ele. Tabelas, índices, colunas de texto, colunas ntext e colunas de imagem não podem ser preenchidas neste grupo de arquivos até que um arquivo seja adicionado. |
mecanismo SQL Server |
Windows |
||||
Uma violação de acesso pode ocorrer depois que você aplicar SQL Server CU30 (Atualização Cumulativa 30) de 2017. Esse problema pode ocorrer quando você executa uma operação de inserção em massa seguida por uma instrução SELECT na mesma transação e o modelo de recuperação do banco de dados é simples ou registrado em massa. |
mecanismo SQL Server |
Todos |
Como obter ou baixar este ou o pacote de atualização cumulativo mais recente
A atualização a seguir está disponível no Centro de Download da Microsoft:
Baixar o pacote de atualização cumulativo mais recente para SQL Server 2017 agora
Se a página de download não aparecer, contate o Serviço de Suporte e Atendimento ao Cliente Microsoft para obter o pacote de atualizações cumulativas.
Observação: Depois que as atualizações cumulativas futuras forem lançadas para SQL Server 2017, esta e todas as CUs anteriores podem ser baixadas no Catálogo de Atualizações da Microsoft. No entanto, recomendamos que você sempre instale a atualização cumulativa mais recente disponível.
A atualização a seguir está disponível no Catálogo de Atualizações da Microsoft:
Baixar o pacote de atualização cumulativo para SQL Server CU 31 2017 agora
Para atualizar o Linux para a CU mais recente, primeiro você deve ter o repositório De Atualização Cumulativa configurado. Em seguida, atualize seus pacotes de SQL Server usando o comando de atualização específico da plataforma apropriado.
Para obter instruções de instalação e links diretos para os downloads do pacote cu, confira as notas de versão.
Informações do arquivo
Você pode verificar o download computando o hash do arquivo SQLServer2017-KB5016884-x64.exe executando o seguinte comando:
certutil -hashfile SQLServer2017-KB5016884-x64.exe SHA256
File name |
Hash SHA256 |
---|---|
SQLServer2017-KB5016884-x64.exe |
AE3554BA0A474B4D1A6B2D3BB7F00A4F6308DBE50178FFF67BAA8B21CC74DBC2 |
A versão em inglês deste pacote apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horários destes arquivos estão listados em formato UTC (Tempo Universal Coordenado). Quando você exibe as informações sobre os arquivos, elas são convertidas no horário local. Para saber a diferença entre a hora UTC e a hora local, use a guia Fuso Horário no item Data e Hora do Painel de Controle.
versões com base em x64 SQL Server 2017 Analysis Services
SQL Server 2017 Database Services Common Core
Data Quality Client SQL Server 2017
qualidade de dados SQL Server 2017
SQL Server 2017 sql_dreplay_client
SQL Server 2017 sql_dreplay_controller
SQL Server 2017 Database Services Core Instance
SQL Server 2017 Database Services Core Shared
SQL Server 2017 sql_extensibility
SQL Server 2017 Full-Text Engine
SQL Server 2017 sql_inst_mr
SQL Server 2017 Integration Services
SQL Server 2017 sql_polybase_core_inst
SQL Server 2017 sql_shared_mr
SQL Server 2017 sql_tools_extensions
|
Observações para esta atualização
Para aplicar esse pacote de Atualização Cumulativa, você deve estar executando SQL Server 2017.
Talvez você precise reiniciar o computador depois de aplicar esse pacote de Atualização Cumulativa.
Para usar um dos hotfixes no pacote, não é necessário fazer nenhuma alteração no Registro.
Este artigo também fornece informações importantes sobre as seguintes situações:
-
Pacemaker : uma alteração comportamental é feita em distribuições que usam a versão mais recente disponível do Pacemaker. Métodos de mitigação são fornecidos.
-
Repositório de Consultas : você deve executar esse script se usar o Repositório de Consultas e tiver instalado anteriormente o Microsoft SQL Server 2017 Cumulativo Atualização 2 (CU2).
Versão de build do Analysis Services CU
A partir de SQL Server 2017, o número da versão de compilação do Analysis Services e SQL Server número da versão de build do Mecanismo de Banco de Dados não correspondem. Para obter mais informações, consulte Verificar a versão cumulativa de compilação de atualização do Analysis Services.
Atualizações cumulativas (CU)
Atualizações cumulativas (CUs) agora estão disponíveis no Centro de Download da Microsoft.
Apenas a CU mais recente lançada para SQL Server 2017 está disponível no Centro de Download.
Os pacotes de CU para Linux estão disponíveis em https://packages.microsoft.com/.
Observações
-
Cada nova CU contém todas as correções que foram incluídas com a CU anterior para a versão instalada do SQL Server.
-
As CUs do SQL Server são certificadas nos mesmos níveis que os Pacotes de Serviço e devem ser instaladas com o mesmo nível de confiança.
-
Recomendamos a instalação contínua e proativa de CUs à medida que elas se tornam disponíveis de acordo com estas diretrizes:
-
Dados históricos mostram que um número significativo de casos de suporte envolvem um problema que já foi abordado em uma CU lançada.
-
CUs podem conter valor agregado além de hotfixes. Isso inclui atualizações na capacidade de suporte, gerenciamento e confiabilidade.
-
-
É recomendável que você teste as CUs antes de implantá-las em ambientes de produção.
IMPORTANTE
Todas as distribuições (incluindo RHEL 7.3 e 7.4) que usam o pacote pacemaker disponível mais recente 1.1.18-11.el7 introduzem uma alteração de comportamento para a configuração de cluster start-failure-is-fatal se seu valor for falso. Essa alteração afeta o fluxo de trabalho de failover. Se uma réplica primária sofrer uma interrupção, espera-se que o cluster faça failover em uma das réplicas secundárias disponíveis. Em vez disso, os usuários notarão que o cluster continua tentando iniciar a réplica primária com falha. Se essa primária nunca estiver online (devido a uma interrupção permanente), o cluster nunca falhará em outra réplica secundária disponível.
Esse problema afeta todas as versões SQL Server, independentemente da versão cumulativa de atualização em que elas estão.
Para atenuar o problema, use um dos métodos a seguir.
Método 1
Execute as seguintes etapas:
-
Remova a substituição start-failure-is-fatal do cluster existente.
# RHEL, propriedade Ubuntu pcs unset start-failure-is-fatal # ou pcs property set start-failure-is-fatal=true # SLES crm configure property start-failure-is-fatal=true -
Diminua o valor cluster-recheck-interval.
# RHEL, Ubuntu pcs property set cluster-recheck-interval=<Xmin> # SLES crm configure propriedade cluster-recheck-interval=<Xmin> -
Adicione a propriedade meta de tempo limite de falha a cada recurso ag.
# RHEL, Ubuntu pcs resource update ag1 meta failure-timeout=60s # SLES crm configure edit ag1 # No editor de texto, adicione 'meta failure-timeout=60s' após qualquer 'param's e antes de qualquer 'op'sObservação Neste código, substitua o valor por <> Xmin conforme apropriado. Se uma réplica for para baixo, o cluster tentará reiniciar a réplica em um intervalo associado pelo valor de tempo limite de falha e pelo valor cluster-recheck-interval . Por exemplo, se o tempo limite de falha for definido como 60 segundos e cluster-recheck-interval for definido como 120 segundos, a reinicialização será tentada em um intervalo maior que 60 segundos, mas menor que 120 segundos. Recomendamos que você defina o tempo limite de falha como 60s e cluster-recheck-interval como um valor maior que 60 segundos. Recomendamos que você não defina cluster-recheck-interval como um valor pequeno. Para obter mais informações, consulte a documentação do Pacemaker ou consulte o provedor do sistema.
Método 2
Reverta para Pacemaker versão 1.1.16.
IMPORTANTE
Você deve executar esse script se usar Repositório de Consultas e estiver atualizando de SQL Server CU2 (Atualização Cumulativa 2) de 2017 diretamente para SQL Server CU3 (Atualização Cumulativa 3) de 2017 ou qualquer atualização cumulativa posterior. Você não precisará executar esse script se tiver instalado anteriormente SQL Server CU3 (Atualização Cumulativa 3) de 2017 ou qualquer atualização cumulativa posterior SQL Server 2017.
SET NOCOUNT ON;
DROP TABLE IF EXISTS #tmpUserDBs;
SELECT [database_id], 0 AS [IsDone]
INTO #tmpUserDBs
FROM master.sys.databases
WHERE [database_id] > 4
AND [state] = 0 -- must be ONLINE
AND is_read_only = 0 -- cannot be READ_ONLY
AND [database_id] NOT IN (SELECT dr.database_id FROM sys.dm_hadr_database_replica_states dr -- Except all local Always On secondary replicas
INNER JOIN sys.dm_hadr_availability_replica_states rs ON dr.group_id = rs.group_id
INNER JOIN sys.databases d ON dr.database_id = d.database_id
WHERE rs.role = 2 -- Is Secondary
AND dr.is_local = 1
AND rs.is_local = 1)
DECLARE @userDB sysname;
WHILE (SELECT COUNT([database_id]) FROM #tmpUserDBs WHERE [IsDone] = 0) > 0
BEGIN
SELECT TOP 1 @userDB = DB_NAME([database_id]) FROM #tmpUserDBs WHERE [IsDone] = 0
-- PRINT 'Working on database ' + @userDB
EXEC ('USE [' + @userDB + '];
DECLARE @clearPlan bigint, @clearQry bigint;
IF EXISTS (SELECT [actual_state] FROM sys.database_query_store_options WHERE [actual_state] IN (1,2))
BEGIN
IF EXISTS (SELECT plan_id FROM sys.query_store_plan WHERE engine_version = ''14.0.3008.27'')
BEGIN
DROP TABLE IF EXISTS #tmpclearPlans;
SELECT plan_id, query_id, 0 AS [IsDone]
INTO #tmpclearPlans
FROM sys.query_store_plan WHERE engine_version = ''14.0.3008.27''
WHILE (SELECT COUNT(plan_id) FROM #tmpclearPlans WHERE [IsDone] = 0) > 0
BEGIN
SELECT TOP 1 @clearPlan = plan_id, @clearQry = query_id FROM #tmpclearPlans WHERE [IsDone] = 0
EXECUTE sys.sp_query_store_unforce_plan @clearQry, @clearPlan;
EXECUTE sys.sp_query_store_remove_plan @clearPlan;
UPDATE #tmpclearPlans
SET [IsDone] = 1
WHERE plan_id = @clearPlan AND query_id = @clearQry
END;
PRINT ''- Cleared possibly affected plans in database [' + @userDB + ']''
END
ELSE
BEGIN
PRINT ''- No affected plans in database [' + @userDB + ']''
END
END
ELSE
BEGIN
PRINT ''- Query Store not enabled in database [' + @userDB + ']''
END')
UPDATE #tmpUserDBs
SET [IsDone] = 1
WHERE [database_id] = DB_ID(@userDB)
END
Quando você implanta uma atualização em um ambiente híbrido (como AlwaysOn, replicação, cluster e espelhamento), recomendamos que você se refira aos seguintes artigos antes de implantar a atualização:
-
SQL Server processo
de atualização do cluster de failover e do service packNota Se você não quiser usar o processo de atualização em andamento, siga estas etapas para aplicar uma atualização:-
Instale a atualização no nó passivo.
-
Instale a atualização no nó ativo (requer uma reinicialização do serviço).
-
-
Atualizar e atualizar servidores de grupo de disponibilidade que usam tempo de inatividade mínimo e perda de
dados Nota Se você habilitou o AlwaysOn com o catálogo do SSISDB, confira as informações sobre o SSIS com AlwaysOn para obter mais informações sobre como aplicar uma atualização nesses ambientes. -
Como aplicar um hotfix para o SQL Server em uma topologia de replicação
As Atualizações Cumulativas do SQL Server são atualmente multilíngues. Portanto, esse pacote de atualizações cumulativas não é específico para um idioma. Ele se aplica a todos os idiomas com suporte.
Um pacote de Atualização Cumulativa inclui todas as atualizações disponíveis para todos SQL Server componentes de 2017 (recursos). No entanto, o pacote de atualização cumulativa atualiza apenas os componentes que estão atualmente instalados na instância SQL Server que você seleciona para ser atendido. Se um recurso SQL Server (por exemplo, Analysis Services) for adicionado à instância depois que essa CU for aplicada, você deverá aplicar novamente essa CU para atualizar o novo recurso para essa CU.
Se ocorrerem problemas adicionais ou se alguma solução de problemas for necessária, talvez seja necessário criar uma solicitação de serviço. Os custos de suporte usuais se aplicarão a perguntas de suporte adicionais e a problemas que não se qualificam para este pacote de atualização cumulativo específico. Para obter uma lista completa de números de telefone do Serviço de Cliente e suporte da Microsoft ou para criar uma solicitação de serviço separada, acesse o site Suporte da Microsoft.
Como desinstalar esta atualização
-
Em Painel de Controle, abra o item Programas e Recursos e selecione Exibir atualizações instaladas.
-
Localize a entrada que corresponde a esse pacote de atualização cumulativo em SQL Server 2017.
-
Pressione e segure a entrada (ou clique nela com o botão direito do mouse) e selecione Desinstalar.
Para desinstalar essa CU no Linux, você deve reverter o pacote para a versão anterior.
Para obter mais informações sobre como reverter a instalação, consulte Reversão SQL Server.
Isenção de responsabilidade de informações de terceiros
Os produtos de terceiros descritos neste artigo são fabricados por empresas independentes da Microsoft. A Microsoft não fornece garantias, implícitas ou de outro tipo, em relação ao desempenho ou à confiabilidade desses produtos.
Referências
-
Anunciando atualizações no Incremental Servicing Model (ISM) do SQL Server
-
Service Packs do SQL Server serão interrompidos a partir do SQL Server 2017
-
Esquema de nomeação para pacotes de atualização de software do Microsoft SQL Server
-
Descrição da terminologia padrão utilizada para descrever as atualizações de software da Microsoft