Symptômes
Supposez que vous utilisez Microsoft SQL Server 2012, 2014 ou 2016. Lorsque vous sauvegardez une base de données dans l’URL du service de stockage d’objets BLOB Microsoft Azure, l’opération peut échouer et les messages d’erreur suivants s’affichent à la fois sur le côté client et dans le journal des erreurs SQL Server.
Erreur client SQL Server
MSG 3271, niveau 16, état 1, ligne LineNumber Une erreur d’e/s non récupérable s’est produite sur le fichier "https://<BlobStorageServerName>. blob.core.windows.net/sqlbackup/<DB_Backup_Name. bak> «sauvegarde sur l’URL a reçu une exception du point de terminaison distant. Message d’exception : la connexion sous-jacente a été fermée : une erreur inattendue s’est produite sur une réception. MSG 3013, niveau 16, état 1, ligne LineNumber La base de données de sauvegarde s’arrête anormalement.
Journal des erreurs SQL Server
<DateTime> ======== BackupToUrl Initiated =========
<DateTime> Inputs: Backup = True, PageBlob= True, URI = https://<BlobStorageServerName>.blob.core.windows.net/sqlbackup/<DB_Backup_Name.bak>, Acct= lbtesting2096, Key= KeyValue, FORMAT= False, Instance Name = MSSQLSERVER, DBName = <DB_Name> LogPath = C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Log
<DateTime> Process Id: 3668
<DateTime> Time for Initialization = 202.7451 ms
<DateTime> BackupToUrl Client is getting configuration from SqlServr
<DateTime> Time for Handshake and VDI config = 31.2507 ms
<DateTime> Time for Get BlobRef = 15.6263 ms
<DateTime> Time for - EXCEPTION Get Fetchattributes = 45364.4979 ms
<DateTime> An exception occurred during communication with Azure Storage, exception information follows
<DateTime> Exception Info: The underlying connection was closed: An unexpected error occurred on a receive.
<DateTime> Stack: at Microsoft.WindowsAzure.Storage.Core.Executor.Executor.ExecuteSync[T](StorageCommandBase`1 cmd, IRetryPolicy policy, OperationContext operationContext)
at BackupToUrl.Program.MainInternal(String[] args)
<DateTime> The Active queue had 1 requests until we got a clear error.
Cette erreur se produit si votre serveur client a activé la version 1,2 du protocole TLS (Transport Layer Security) avec le Registre suivantTransport Layer Security.
Nom de la clé de Registre :
HKEY_LOCAL_MACHINE \SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.2 \ client Valeur 0 Nom : activé Type : REG_DWORD Données : 0x1
Résolution
Ce problème a été résolu dans les mises à jour cumulatives suivantes pour SQL Server 2014 et 2016 :
Mise à jour cumulative 7 pour SQL Server 2016 RTM
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Solution de contournement pour SQL Server 2012
Ce problème se produit si l’infrastructure .NET installée possède une préférence pour TLS 1,0, même si elle prend en charge TLS 1,2.
Aucun correctif n’est disponible pour SQL Server 2012. Pour contourner ce problème pour SQL Server 2012 afin d’activer le chiffrement renforcé, vous pouvez procéder comme suit :
-
Sauvegarder le registre
-
Ouvrez l’éditeur du Registre et recherchez les sous-clés de Registre suivantes : HKLM\software\Wow6432Node\Microsoft.NETFramework\ et HKLM\software\microsoft.NETFramework\
-
Sous chacune de ces clés, des sous-clés les numéros de version (par exemple, version 4.5, version 4.5.1) existent. Ajoutez une valeur DWORD nommée SchUseStrongCrypto avec la valeur 1 pour chaque version.
-
Sous HKLM\Software\Microsoft.NetFramework, il n’est pas nécessaire que les noms de clés soient exactement 4,5 ou 4.5.1. Le plus souvent, il démarre à partir de la version v 2.0, version 3.0, xxx et version 4.0. La valeur DWORD nommée « SchUseStrongCrypto » avec la valeur 1 doit être ajoutée pour toutes les versions disponibles.
-
Redémarrez l’ordinateur SQL Server.
Remarque :Vous pouvez également essayer d’installer .NET Framework 4,8. Par défaut, .NET Framework 4,7 et les versions ultérieures sont configurés pour utiliser TLS 1,2 et autoriser les connexions utilisant TLS 1,1 ou TLS 1,0.
Références
Apprenez-en davantage sur la terminologieutilisée par Microsoft pour décrire les mises à jour logicielles.
Statut
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».