Applies ToSQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Enterprise Core - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2014 Service Pack 2 - duplicate (do not use) SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use) SQL Server 2016 Service Pack 1 SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Enterprise Core SQL Server 2012 Standard

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

Mise à jour cumulative 4 pour SQL Server 2016 SP1

Mise à jour cumulative 5 pour SQL Server 2014 SP2

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 :

Dernière mise à jour cumulative pour SQL Server 2016

Dernière mise à jour cumulative pour SQL Server 2014

 

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 à ».

Besoin d’aide ?

Vous voulez plus d’options ?

Explorez les avantages de l’abonnement, parcourez les cours de formation, découvrez comment sécuriser votre appareil, etc.

Les communautés vous permettent de poser des questions et d'y répondre, de donner vos commentaires et de bénéficier de l'avis d'experts aux connaissances approfondies.