KB5016884 - Mise à jour cumulative 31 pour SQL Server 2017
Date de publication:
20/09/2022
Version:
14.0.3456.2
Important : La mise à jour cumulative 31 est la dernière mise à jour cumulative de Microsoft SQL Server 2017. SQL Server 2017 est passé au support étendu après le 11 octobre 2022.
Résumé
Cet article décrit le package de mise à jour cumulative 31 (CU31) pour Microsoft SQL Server 2017. Cette mise à jour contient 20 correctifs qui sont émis après la publication de SQL Server mise à jour cumulative 30 2017, et met à jour les composants vers les builds suivantes :
-
SQL Server - Version du produit : 14.0.3456.2, version du fichier : 2017.140.3456.2
-
Analysis Services - Version du produit : 14.0.249.94, version du fichier : 2017.140.249.94
Problèmes connus dans cette mise à jour
Supposons qu’une table utilisée par la réplication utilise une colonne qui utilise la fonction NEWSEQUENTIALID dans la clé primaire. Une erreur se produit lorsque vous tentez d’appliquer l’instantané à l’abonné. Voici les messages d’erreur et les tentatives de commande :
-
Tentative de commande :
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)
-
Messages d’erreur :
La fonction intégrée newsequentialid() ne peut être utilisée que dans une expression DEFAULT pour une colonne de type « uniqueidentifier » dans une instruction CREATE TABLE ou ALTER TABLE. Il ne peut pas être combiné avec d’autres opérateurs pour former une expression scalaire complexe. (Source : MSSQLServer, Numéro d’erreur : 302)
Obtenir de l’aide : http://help/302
Remarque La seule façon de résoudre ce problème consiste à remplacer la colonne de clé primaire par la fonction NEWID pendant que vous prenez l’instantané, puis à la définir à nouveau sur la fonction NEWSEQUENTIALID après l’application de l’instantané. Vous pouvez exécuter la commande suivante :
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
Améliorations et correctifs inclus dans cette mise à jour cumulative
Un classeur Excel téléchargeable qui contient une liste récapitulative des builds, ainsi que leur cycle de vie de support actuel, est disponible. Le fichier Excel contient également des listes de correctifs détaillées pour SQL Server 2019 et SQL Server 2017. Téléchargez ce fichier Excel maintenant.
Remarque : Les entrées individuelles du tableau suivant peuvent être référencées directement par le biais d’un signet. Si vous sélectionnez un ID de référence de bogue dans le tableau, vous remarquerez qu’une balise de signet est ajoutée à l’URL en utilisant le format suivant : #bkmk_NNNNNNNN. Vous pouvez ensuite partager cette URL avec d’autres personnes afin qu’elles puissent accéder directement au correctif souhaité dans la table.
Informations de référence sur les bogues |
Numéro d’article de la Base de connaissances |
Description |
Domaine du correctif |
Platform |
||
---|---|---|---|---|---|---|
Résout la vulnérabilité de déni de service (DoS) pour la bibliothèque Newtonsoft dans SQL Server 2017. |
Analysis Services |
Windows |
||||
La requête en lecture seule est toujours envoyée au nœud principal en lecture-écriture dans un groupe de disponibilité Always On lorsque le nœud de liste de routage en lecture seule tombe en panne. |
Disponibilité élevée |
Tous |
||||
Un échec d’assertion se produit sur le réplica secondaire lorsque vous utilisez des groupes de disponibilité Always On dans des réseaux à latence élevée dans SQL Server 2017. Vous pouvez voir cet échec d’assertion dans le journal des erreurs : Assertion : Fichier : <"e:\\b\\s3\\sources\\sql\\ntdbms\\storeng\\dfs\\trans\\lsnlocmap.cpp">, line=358 Failed Assertion = 'pos - pndx < map->EntryCount' |
Disponibilité élevée |
Tous |
||||
Les métadonnées tempdb optimisées en mémoire (HkTempDB) continuent à consommer de la mémoire sous VARHEAP : Allocateur de page LOB. |
OLTP en mémoire |
Windows |
||||
Une fuite de mémoire se produit dans l’index de plage des tables en mémoire après l’analyse d’index parallèle. |
OLTP en mémoire |
Toutes |
||||
Une fuite de mémoire se produit sous « Segment d’index de plage » sur la table en mémoire qui a des index non cluster, chaque fois qu’il y a des insertions simultanées. |
OLTP en mémoire |
Toutes |
||||
Des problèmes de performances et des interblocages se produisent sur SQL Server Agent dans la base de données msdb qui a des sauvegardes automatisées. En outre, les messages d’erreur suivants s’affichent dans le journal SQL Server Agent : <DateTime> ERREUR SQLServer : 1205, La transaction (ID de processus) a été bloquée sur les ressources de verrouillage avec un autre processus et a été choisie comme victime de l’interblocage. Réexécutez la transaction. <DateTime> Impossible de récupérer le travail <> JobID à partir du serveur. |
Outils de gestion |
Windows |
||||
5017551 |
Installation & installer |
Windows |
||||
5017788 |
Performances SQL |
Toutes |
||||
Un vidage du planificateur sans rendement se produit dans sqldk ! SOS_MemoryWorkSpace::Lookup. |
Performances SQL |
Toutes |
||||
Les vidages sans rendement se produisent fréquemment sur ColumnStoreAttributeCache::ColumnStoreColumnAttributeNode::GetSegmentById. |
Performances SQL |
Windows |
||||
5018050 |
moteur SQL Server |
Windows |
||||
5018231 |
moteur SQL Server |
Windows |
||||
5008184 |
moteur SQL Server |
Tous |
||||
L’erreur 9003 se produit avec le numéro de séquence de journal (LSN) incorrect lorsque vous effectuez une restauration ultérieure après avoir spécifié le LSN à la limite du fichier journal virtuel (VLF) à l’aide de l’instruction RESTORE WITH STANDBY. Voici le message d’erreur : Msg 3013, Niveau 16, État 1, Line <LineNumber> RESTORE DATABASE se termine anormalement. Msg 9003, Niveau 17, État 11, Line <LineNumber> Le numéro d’analyse du journal (<LogScanNumber>) passé à l’analyse du journal dans la base de données « <DatabaseName> » n’est pas valide. Cette erreur peut indiquer une altération des données ou que le fichier journal (.ldf) ne correspond pas au fichier de données (.mdf). Si cette erreur s’est produite pendant la réplication, recréez la publication. Sinon, restaurez à partir de la sauvegarde si le problème entraîne un échec au démarrage. |
moteur SQL Server |
Windows |
||||
L’erreur 208 se produit lorsque vous utilisez la procédure stockée sp_changereplicationserverpasswords pour modifier les mots de passe stockés pour la connexion Microsoft SQL Server utilisée par les agents de réplication. Voici le message d’erreur : Msg 208, Level 16, State 1, Procedure master.sys.sp_MSchangerepltablepasswords, Line <LineNumber> [Batch Start Line 0] Nom d’objet « MSreplservers » non valide. |
moteur SQL Server |
Windows |
||||
Une utilisation élevée du processeur se produit lorsque vous activez le suivi des modifications sur un grand nombre de tables et effectuez un nettoyage automatique ou manuel des tables de suivi des modifications. |
moteur SQL Server |
Windows |
||||
La fonctionnalité FILESTREAM n’est pas activée après le redémarrage du système d’exploitation en raison de conditions de concurrence de plusieurs instances de SQL Server. Dans le journal des erreurs, vous pouvez voir le message d’erreur suivant : Erreur : 5591, Gravité : 16, État : 5. La fonctionnalité FILESTREAM est désactivée. |
moteur SQL Server |
Windows |
||||
Les ID de groupe de fichiers des fichiers qui appartiennent à la base de données clone peuvent être incorrects si la base de données source présente des lacunes dans les ID de groupe de fichiers en raison de la suppression de fichiers ou de groupes de fichiers. Lorsque vous essayez d’insérer dans la table des données qui appartiennent à la base de données clone générée de manière incorrecte, vous recevez un message d’erreur semblable au message suivant : Msg 622, Niveau 16, État 3, Line <LineNumber> Aucun fichier n’est affecté au groupe de fichiers « <FileGroupName> ». Les tables, les index, les colonnes texte, les colonnes ntext et les colonnes image ne peuvent pas être renseignées sur ce groupe de fichiers tant qu’un fichier n’est pas ajouté. |
moteur SQL Server |
Windows |
||||
Une violation d’accès peut se produire après l’application SQL Server mise à jour cumulative 30 (CU30) 2017. Ce problème peut se produire lorsque vous effectuez une opération d’insertion en bloc suivie d’une instruction SELECT dans la même transaction, et que le mode de récupération de la base de données est simple ou journalisé en bloc. |
moteur SQL Server |
Tous |
Comment obtenir ou télécharger ce ou le dernier package de mise à jour cumulative
La mise à jour suivante est disponible à partir du Centre de téléchargement Microsoft :
Télécharger le dernier package de mise à jour cumulative pour SQL Server 2017 maintenant
Si la page de téléchargement ne s’affiche pas, procurez-vous le package de mise à jour cumulative auprès du Support technique et du Service clientèle Microsoft.
Remarque : Une fois les mises à jour cumulatives ultérieures publiées pour SQL Server 2017, cette version et toutes les unités de certification précédentes peuvent être téléchargées à partir du catalogue Microsoft Update. Toutefois, nous vous recommandons de toujours installer la dernière mise à jour cumulative disponible.
La mise à jour suivante est disponible à partir du catalogue Microsoft Update :
Télécharger le package de mise à jour cumulative pour SQL Server 2017 CU 31 maintenant
Pour mettre à jour Linux vers la dernière mise à jour cumulative, vous devez d’abord disposer du référentiel de mise à jour cumulative configuré. Ensuite, mettez à jour vos packages SQL Server à l’aide de la commande de mise à jour appropriée spécifique à la plateforme.
Pour obtenir des instructions d’installation et des liens directs vers les téléchargements de package CU, consultez les notes de publication.
Informations sur les fichiers
Vous pouvez vérifier le téléchargement en calculant le hachage du fichier SQLServer2017-KB5016884-x64.exe en exécutant la commande suivante :
certutil -hashfile SQLServer2017-KB5016884-x64.exe SHA256
Nom du fichier |
Hachage SHA-256 |
---|---|
SQLServer2017-KB5016884-x64.exe |
AE3554BA0A474B4D1A6B2D3BB7F00A4F6308DBE50178FFF67BAA8B21CC74DBC2 |
La version anglaise de ce package dispose des attributs de fichier répertoriés dans le tableau suivant ou ceux d’une version ultérieure. Les date et heure de création de ces fichiers sont exprimées en temps universel coordonné (UTC). Lorsque vous affichez les informations des fichiers, les données sont converties en heure locale. Pour connaître le décalage entre l’heure UTC et l’heure locale, utilisez l’onglet Fuseau horaire dans l’élément Date et heure du Panneau de configuration.
Versions x64 SQL Server 2017 Analysis Services
SQL Server 2017 Database Services Common Core
SQL Server Data Quality Client 2017
qualité des données 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
Moteur d’indexation et de recherche en texte intégral SQL Server 2017
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
|
Remarques concernant cette mise à jour
Pour appliquer ce package de mise à jour cumulative, vous devez exécuter SQL Server 2017.
Vous devrez peut-être redémarrer l’ordinateur après avoir appliqué ce package de mise à jour cumulative.
Pour utiliser l’un des correctifs logiciels contenus dans ce package, il n’est pas nécessaire de modifier le Registre.
Cet article fournit également des informations importantes sur les situations suivantes :
-
Pacemaker : un changement de comportement est apporté dans les distributions qui utilisent la dernière version disponible de Pacemaker. Des méthodes d’atténuation sont fournies.
-
Magasin des requêtes : vous devez exécuter ce script si vous utilisez le Magasin des requêtes et que vous avez déjà installé Microsoft SQL Server 2017 Cumulative Update 2 (CU2).
Version de build de cu Analysis Services
À compter de SQL Server 2017, le numéro de version de build Analysis Services et le numéro de version de build du Moteur de base de données SQL Server ne correspondent pas. Pour plus d’informations, consultez Vérifier la version de build de mise à jour cumulative Analysis Services.
Mises à jour cumulatives (CU)
Les mises à jour cumulatives (CU) sont à présent disponibles sur le Centre de téléchargement Microsoft.
Seule la mise à jour cumulative la plus récente publiée pour SQL Server 2017 est disponible dans le Centre de téléchargement.
Les packages CU pour Linux sont disponibles sur https://packages.microsoft.com/.
Remarques
-
Chaque nouvelle mise à jour cumulative contient tous les correctifs inclus dans la mise à jour cumulative précédente pour la version installée de SQL Server.
-
Les mises à jour cumulatives SQL Server sont certifiées pour les mêmes niveaux que les Service Packs et doivent être installées au même niveau de confiance.
-
Nous recommandons une installation continue et proactive des unités de certification à mesure qu’elles deviennent disponibles conformément aux recommandations suivantes :
-
Les données historiques indiquent qu’un nombre important d’incidents de support concerne un problème déjà résolu dans une mise à jour cumulative publiée.
-
Les unités de configuration peuvent contenir une valeur ajoutée en plus des correctifs logiciels. Cela inclut la prise en charge, la facilité de gestion et les mises à jour de fiabilité.
-
-
Nous vous recommandons de tester les mises à jour cumulatives avant de les déployer dans un environnement de production.
IMPORTANT
Toutes les distributions (y compris RHEL 7.3 et 7.4) qui utilisent le dernier package Pacemaker disponible 1.1.18-11.el7 introduisent un changement de comportement pour le paramètre de cluster start-failure-is-fatal si sa valeur est false. Cette modification affecte le flux de travail de basculement. Si un réplica principal subit une panne, le cluster est censé basculer vers l’un des réplicas secondaires disponibles. Au lieu de cela, les utilisateurs remarqueront que le cluster continue d’essayer de démarrer le réplica principal défaillant. Si ce réplica principal n’est jamais mis en ligne (en raison d’une panne permanente), le cluster ne bascule jamais vers un autre réplica secondaire disponible.
Ce problème affecte toutes les versions SQL Server, quelle que soit la version de mise à jour cumulative sur laquelle elles se trouvent.
Pour atténuer le problème, utilisez l’une des méthodes suivantes.
Méthode 1
Procédez comme suit :
-
Supprimez le remplacement start-failure-is-fatal du cluster existant.
# RHEL, ubuntu pcs property unset start-failure-is-fatal # ou pcs property set start-failure-is-fatal=true # SLES crm configure property start-failure-is-fatal=true -
Réduisez la valeur de l’intervalle de revérification du cluster .
# RHEL, Ubuntu pcs property set cluster-recheck-interval=<Xmin> # SLES crm configure property cluster-recheck-interval=<Xmin> -
Ajoutez la propriété meta failure-timeout à chaque ressource du groupe de disponibilité.
# RHEL, Ubuntu pcs resource update ag1 meta failure-timeout=60s # SLES crm configure edit ag1 # Dans l’éditeur de texte, ajoutez 'meta failure-timeout=60s' après tout 'param’s et avant tout 'op’sRemarque Dans ce code, remplacez la valeur par <> Xmin , le cas échéant. Si un réplica tombe en panne, le cluster tente de redémarrer le réplica à un intervalle qui est lié par la valeur de délai d’expiration d’échec et la valeur de l’intervalle de revérification du cluster . Par exemple, si le délai d’expiration d’échec est défini sur 60 secondes et que cluster-recheck-interval est défini sur 120 secondes, le redémarrage est tenté à un intervalle supérieur à 60 secondes mais inférieur à 120 secondes. Nous vous recommandons de définir failure-timeout sur 60s et cluster-recheck-interval sur une valeur supérieure à 60 secondes. Nous vous recommandons de ne pas définir cluster-recheck-interval sur une petite valeur. Pour plus d’informations, reportez-vous à la documentation Pacemaker ou consultez le fournisseur de système.
Méthode 2
Revenez à Pacemaker version 1.1.16.
IMPORTANT
Vous devez exécuter ce script si vous utilisez Magasin des requêtes et que vous effectuez une mise à jour à partir de SQL Server mise à jour cumulative 2017 (CU2) directement vers SQL Server mise à jour cumulative 3 (CU3) ou toute mise à jour cumulative ultérieure. Vous n’avez pas besoin d’exécuter ce script si vous avez déjà installé SQL Server mise à jour cumulative 3 (CU3) 2017 ou toute mise à jour cumulative ultérieure 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
Lorsque vous déployez une mise à jour dans un environnement hybride (comme AlwaysOn, la réplication, le cluster et la mise en miroir), nous vous recommandons de vous reporter aux articles suivants avant de déployer la mise à jour :
-
SQL Server processus
de mise à jour propagée et de Service Pack du cluster de basculementNote Si vous ne souhaitez pas utiliser le processus de mise à jour propagée, procédez comme suit pour appliquer une mise à jour :-
Installez la mise à jour sur le nœud passif.
-
Installez la mise à jour sur le nœud actif (nécessite un redémarrage du service).
-
-
Mise à niveau et mise à jour des serveurs de groupe de disponibilité qui utilisent un temps d’arrêt minimal et une perte de
données Note Si vous avez activé AlwaysOn avec le catalogue SSISDB, consultez les informations sur SSIS avec AlwaysOn pour plus d’informations sur l’application d’une mise à jour dans ces environnements. -
Comment appliquer un correctif logiciel pour SQL Server dans une topologie de réplication
SQL Server les Mises à jour cumulatives sont actuellement multilingues. Par conséquent, ce package de mise à jour cumulative n’est pas spécifique à une langue. Elle s’applique à toutes les langues prises en charge.
Un package de mise à jour cumulative inclut toutes les mises à jour disponibles pour tous les composants (fonctionnalités) SQL Server 2017. Toutefois, le package de mise à jour cumulative met à jour uniquement les composants actuellement installés sur l’instance SQL Server que vous choisissez de traiter. Si une fonctionnalité SQL Server (par exemple, Analysis Services) est ajoutée à l’instance après l’application de cette cu, vous devez réappliquer cette cu pour mettre à jour la nouvelle fonctionnalité vers cette cu.
Si d’autres problèmes se produisent ou si une résolution des problèmes est nécessaire, vous devrez peut-être créer une demande de service. Les coûts de support habituels s’appliquent aux questions de support supplémentaires et aux problèmes qui ne sont pas éligibles pour ce package de mise à jour cumulative spécifique. Pour obtenir la liste complète des numéros de téléphone du service clientèle et du support microsoft, ou pour créer une demande de service distincte, accédez au site web Support Microsoft.
Comment désinstaller cette mise à jour
-
Dans Panneau de configuration, ouvrez l’élément Programmes et fonctionnalités, puis sélectionnez Afficher les mises à jour installées.
-
Recherchez l’entrée qui correspond à ce package de mise à jour cumulative sous SQL Server 2017.
-
Appuyez longuement (ou cliquez avec le bouton droit) sur l’entrée, puis sélectionnez Désinstaller.
Pour désinstaller cette cu sur Linux, vous devez restaurer le package à la version précédente.
Pour plus d’informations sur la restauration de l’installation, consultez Restauration SQL Server.
Exclusion de responsabilité des informations tierces
Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.
Références
-
Annonce de mises à jour du modèle de maintenance incrémentielle (ISM) SQL Server
-
Les Service Packs SQL Server sont interrompus à partir de SQL Server 2017
-
Script qui détermine la version et l’édition du moteur de base de données SQL Server exécuté
-
Schéma d’appellation des packages de mise à jour logicielle de Microsoft SQL Server
-
Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft