Académique Documents
Professionnel Documents
Culture Documents
Bienvenue
Analysis Services
Calculer la croissance de la période précédente
Ne peut pas se connecter à une instance nommée
Configurer le fournisseur de données MSOLAP pour Excel
Configurer SSAS pour générer des fichiers de vidage mémoire
Déterminer le premier ou le dernier membre avec des données
L’espace disque est épuisé et SSAS se crashe
Activer le niveau d’isolation des transactions de capture instantanée
Erreur 1032 dans le journal des applications
Erreur et échec de la requête MDX dans une instance multidimensionnelle SSAS
Erreur lors de la connexion à une instance nommée
Erreur lors du traitement d’une base de données ou d’un cube
Erreur lors du traitement d’une dimension
Erreur lors de l’utilisation de PowerPivot pour Excel
La requête MDX contient l’erreur De retours agrégés
La requête MDX avec mesure calculée s’exécute lentement
Aucune propriété et aucun membre de la hiérarchie de dimension
Effectuer une requête distribuée avec OLAP Server
Résultat inattendu d’Analysis Services
Problème de performances d’écriture
NA renvoie lorsque vous exécutez une requête multi-sous-sélectionné
Erreur et code de 0x80004005 fournisseur WMI
Machine virtuelle Azure SQL
Échec de l’installation FCI avec erreur sur azure VM
Services de qualité des données
Échec de l’exportation DQS vers un fichier Excel 64 bits avec erreur
DQSInstaller peut ne pas accéder au dossier temp
Erreur lors de l’exécutement de la transformation nettoyage DQS
Moteur de base de données
Administration et gestion
SQL Server de démarrage
SQL Server de démarrage
Erreur de refus d’accès SQL Server’accès ne démarre pas
Erreur 17113 lorsque vous démarrez SQL Server service
Erreur 17182 lorsque vous démarrez SQL Server service
Erreur 1068 lors du démarrage SQL Server
Erreur 1069 lors du démarrage SQL Server
L’ID d’événement 17058 et SQL Server ne démarre pas
L’ID d’événement 1814 et SQL Server ne démarre pas
L’ID d’événement 33565 et SQL Server ne démarre pas
L’ID d’événement 33566 et SQL Server ne démarre pas
L’ID d’événement 7000 et SQL Server ne démarre pas
Erreurs 1450 et 665 lors de l’exécution du DBCC
Erreurs 17053 et 926 lors de l’exécution du DBCC
Erreurs 8967 et 8921 lors de l’exécution du DBCC
Une erreur d’O/S non récoverable lorsque vous utilisez la sauvegarde vers l’URL
Une base de données TDE peut ne pas récupérer
Violations d’accès et fichiers de vidage mémoire
Les tâches d’activation s’exécutent au-dessus de la limite
Le travail de l’agent peut échouer avec l’erreur 65535
Impossible de migrer l’assembly vers SQL Server erreur 2017
Assertion lorsque vous exécutez l’insertion en bloc ou bcp
Échec de l’agent ASR ou de la sauvegarde VSS non-composant
Échec des travaux Azure Site Recovery sur les serveurs hébergeant SQL serveurs
Sauvegarder une base de données à l’aide d’une application de sauvegarde VSS
Résolution des problèmes de sauvegarde et de restauration
Opération de sauvegarde dans la table historique du jeu de sauvegarde
Comportement des sauvegardes compressées
Configuration des autorisations pour accéder aux données distantes
Considérations sur larow automatique et l’autoshrink
Considérations lors de l’utilisation de la Full-Text pour la recherche
Se crashe lorsque vous exécutez une requête de serveur lié Oracle
L’autorisation Créer une base de données est enregistrée
Moteur de base de données Exigences en matière d’entrée/sortie
Tirets ignorés dans la recherche avec SQL Full-Text
Défragmentation des lecteurs de disque de base de données
Erreur 0x80040e97 lors de l’utilisation de la recherche en texte intégral
Erreur 3156 lors de la restauration d’une base de données
Erreur après avoir effectué une rotation de clé ou de certificat TDE
Erreur lors de la backing up in-memory database
Erreur lors de la création d’une capture instantanée
Erreur lorsque vous exécutez un objet CLR ou créez un assembly
L’index de texte intégral n’indexe pas les valeurs d’attribut
Les index de texte intégral cessent de se remplir
Conditions requises pour le sous-système d’I/S pour tempdb
Améliorer les performances des requêtes en texte intégral
Délai d’verrouillage lors de l’exécution du DBCC
Algorithmes de journalisation et de stockage des données
Gérer le journal des erreurs
Transmettre une variable à une requête de serveur lié
Problèmes de performances lors de l’utilisation d’index Columstore avec des pages
de grande taille
La gestion basée sur la stratégie génère des alertes
La restauration ou la récupération peut échouer
Exécuter un objet COM basé sur une DLL
Planifier et automatiser les sauvegardes de bases de données
Configurer et dépanner un serveur lié à une base de données Oracle
L’espace utilisé par un tableau n’est pas libéré
Prise en charge des bases de données sur des volumes compressés
Prise en charge des fichiers de base de données réseau
Prise en charge des composants de technologie iSCSI
La transaction n’est plus valide lors de l’utilisation de la messagerie de base de
données
Le fichier journal des transactions n’augmente pas
Résoudre les erreurs DBCC
Impossible de commencer une transaction distribuée
Les pilotes d’hôte virtuel entraînent des problèmes de cohérence des données
Les mots ne sont pas renvoyés par un décomposeur de mots anglais
Développement d’applications clientes
Ne peut pas désinstaller complètement le pilote ODBC
Problèmes de connexion
Ne peut pas se connecter à distance à l’aide de TCP/IP
Kerberos Configuration Manager est disponible
Résolution des erreurs de connectivité
Erreur d’autorité de certification non valide
Conception et développement de base de données
Can’t make a remote connection from a CLR trigger
Erreur 556 : échec d’insertion exec
L’exécution du CLR échoue avec TypeInitializationException
Index filtré non utilisé dans les requêtes
Améliorations de la gestion de certains types de données et opérations peu
courantes
Itérer dans le jeu de résultats à l’aide de T-SQL
Stratégie pour les assemblys .NET Framework non testés
La requête renvoie des résultats incorrects
Supprimer les lignes en double du tableau
Faire pivoter un tableau
Problèmes de délai d’SQL des objets CLR
Utiliser une procédure stockée étendue ou SP_OA pour charger le CLR
Fonctionnalités de haute disponibilité et de récupération d’urgence
Groupes de disponibilité
Erreur 9002 sur le réplica principal
DB AlwaysOn en attente de récupération ou état suspect
Le temps d’attente de la connexion de l’écoute dans plusieurs sous-réseaux
Dégradation des performances des requêtes sur les réplicas secondaires
Résolution des problèmes deover automatique
Résolution des problèmes AlwaysOn
Mise en miroir de bases de données
Les bases de données en miroir sont déconnectées
Failover Clusters
Ressource de cluster en état d’échec
Échec de la règle de validation de cluster
Créer des bases de données ou modifier des emplacements de fichiers disque
Échec de l’installation SQL Server sur un disque CSV
Re-créer manuellement des clés de Registre pour les ressources de cluster
Stratégie de prise en charge des configurations en cluster
Windows Dépendances de ressources de cluster de failover
Copie des journaux de transaction
Configurer la sécurité pour la livraison des journaux de bord
Le moniteur de connexion lève une erreur 14420
Installation, correction et mise à niveau
Conditions requises de .Net Framework pour SQL Server
Tentative d’effectuer une erreur d’opération non autorisée
Description du dossier Cache de mise à jour
Erreurs différentes lors de l’installation SQL Server 2008 R2
Code d’erreur 1642 si la mise à jour est appliquée
Erreur si vous modifiez le répertoire des composants partagés
La période d’évaluation a expiré lorsque vous utilisez SSMS
Échec de la vérification des règles Fusion ATL
CUS inapplicables répertoriés dans WSUS, MU ou SCM
Échec de l’installation lorsque vous supprimez des droits d’utilisateur
Message d’annuaire d’utilisateurs non valide lors de l’installation de CU ou SP
Nommer des zones de schéma et de correction pour SQL mises à jour
Nouveau modèle de maintenance de mu
Erreur d’autorisation lorsque vous utilisez un point de montage de volume
Supprimer une installation partielle d’SQL serveur
Restaurer les fichiers cache du programme d Windows installer manquants
Le service peut ne pas démarrer après l’installation du correctif
Le programme d’installation cesse de répondre lors de la mise à niveau
SQL sur Windows 7 ou Windows Server 2008 R2
SQL Server 2008 R2 et SQL Server 2008
SQL Server 2012
Installation SxS des versions X64 et X86 de SSRS 2008
Échec de la mise à jour Cluster_IsOnlineIfClustered règle
Mise à jour ou installation slipstream pour SQL Server 2008
Échecs de mise à niveau sur Windows Server 2012
Avertissement concernant l’ordre de liaison réseau
Machine Learning Services (dans la base de données)
Résultats incohérents dans les calculs MKL
Performances
La colonne bloquée est remplie pour les attentes de verrou
L’analyse du pool de mémoire tampon s’exécute lentement sur des ordinateurs
mémoire de grande taille
Diminution des performances lors de l’utilisation de TOP, MAX ou MIN
Les modules externes peuvent entraîner des problèmes de performances
Les pilotes de filtre provoquent des problèmes de performances et de cohérence
Une utilisation élevée de l’UC se produit dans vos requêtes
Moniteur de ressources non rapportant
Dégradation des performances avec le nouveau CE
Réduction de la contention d’allocation dans tempdb
Résoudre les problèmes de blocage causés par l’escalade de verrouillage
Résoudre l’insertion de la dernière page PAGELATCH_EX contention
Les entrées du magasin SchemaMgr dégradent les performances
Résoudre les problèmes de blocage causés par les verrous de compilation
Résoudre les problèmes de requêtes lentes
Comprendre et résoudre les problèmes de blocage
Mises à jour et options de configuration pour les charges de travail hautes
performances (SQL Server 2014 et 2012)
Mises à jour et options de configuration pour les charges de travail hautes
performances (SQL Server 2017 et 2016)
La mise à niveau du niveau de compatibilité dégrade les performances des requêtes
spatiales
Utiliser DBCC MEMORYSTATUS pour surveiller l’utilisation de la mémoire
Winsock LSP entraîne des problèmes de réseau ou de stabilité
Réplication, suivi des changements, capture des données de modification
Erreur de syntaxe 102 et incorrecte avec la réplication d’égal à égal
Erreur 1205 lors de la configuration de la réplication transactionnelle
Erreur 20011 : le processus n’a pas pu s’sp_replcmds
Erreur 20598 : la ligne n’a pas été trouvée dans l’abonné lors de l’application de la
commande répliquée
Erreur 213 lors de l’attachement d’une base de données ACTIVÉE
Une erreur s’est produite lors de la récupération des données de composition
Appliquer SQL correctifs dans une topologie de réplication
Impossible d’utiliser rowguidcol dans la définition de filtre dans la réplication de
fusion
Échec du travail de capture DE LAS lors du traitement des modifications
LASO pour Oracle se traduit par une croissance du journal des transactions
Lignes de touches en double à partir sys.systableau de validation
Message d’erreur lorsque vous exécutez l’agent de distribution
Échec de l’éumation des propriétés d’abonnement
Installer des Service Packs et des correctifs logiciels
Problème avec le handler de logique métier personnalisé
Supprimer manuellement la réplication
La réplication de fusion ne prend pas en charge les topologies d’abonné centralisées
Non-convergence lors du traitement SQL Server générations enfants
ORACDC517E - Échec de la méthode OCI (Oracle Call Interface)
Les déclencheurs de composition Oracle envoient des données pour les colonnes
non publiées
Statistiques de performances pour le lecteur de journaux et les agents de
distribution
Les abonnements Pull ne s’affichent pas dans Windows Synchronization Manager
Les agents de réplication ne peuvent pas s’exécuter
Erreur de script échoué lors de la création d’un instantané de composition de fusion
Paramètre SkipErrors dans l’agent de distribution
Échec des agents Snapshot ou Logreader
Échec de la synchronisation pour la réplication de fusion
L’abonnement n’existe pas
Comprendre l’ordre de traitement de l’article de réplication de fusion
La mise à jour est répliquée en tant que paires DELETE/INSERT
Aspects liés à la sécurité
Bloquer l’utilisation à distance de comptes locaux dans Windows
Erreur d’échec de déchiffrement avec la base de données toujours chiffrée
Erreurs lorsque vous désactivez l’utilisateur invité
Résoudre le problème d’autorisation lorsque vous déplacez la base de données
MSDB
Échec de démarrage avec l’erreur 17182
SQL Le service ne peut pas démarrer après la configuration du certificat SSL
Transférer des connexions et des mots de passe entre instances
Utiliser des certificats au format PFX
Utilisation SQL Server 2014 en mode conforme FIPS 140-2
Utilisation SQL Server 2016 en mode conforme FIPS 140-2
Utilisation SQL Server 2008 en mode conforme FIPS 140-2
Informations générales sur la résolution des problèmes
Réponses aux questions sur le MSDT
Collecteur de diagnostics de connectivité
Déterminer la version, l’édition et le niveau de mise à jour
Les déviations ou des techniques similaires provoquent des problèmes
Fin de la prise en charge SQL Server 2008
Informations sur MATS et SDP
RS Diagnostics Collector collecte des informations
Outil de diagnostic de collecte de données d’installation
SQL Collecteur de diagnostics de base
SQL Server dans Windows d’exploitation
Stratégie de prise en charge du produit de virtualisation du matériel
Stratégie de prise en charge SQL Server
Integration Services
Ag ag reste dans l’état de résolution
Créer un objet dynamique pour la tâche Envoyer un message
Une erreur 0xC0202009 se produit lorsque SSIS convertit le paramètre
Erreur lors du chargement du package
Erreur dans le package SSIS lorsque le UAC est activé
Erreur lors de l’utilisation du gestionnaire de connexion Oracle
Erreur lors de la virtualisation de BIDS ou SSDT
Points de contrôle SSIS non honorés pour les conteneurs de boucle For et Foreach
Le package SSIS ne s’exécute pas lorsqu’il est appelé à partir d’une étape de travail
L’exécution d’un package SSIS cesse de répondre
La Base de connaissances n’existe pas
Utiliser le chiffrement et la taille des paquets réseau
Master Data Services
MDS intermédiaire basé sur une entité peut échouer
MDS Échec de la commande Valider la version
MDAC et ADO
80020009 d’erreur lors de la récupération des données
Ne peut pas traduire correctement les données de caractères
Vérifier la version de MDAC
Erreur lorsque vous utilisez le curseur client pour ajouter un enregistrement
Échec de l’utilisation d’un lot important d’instructions SQL’instructions
L’administrateur ODBC affiche les DSN utilisateur 32 bits et 64 bits
Ouvrir une connexion ADO et des objets Recordset
Récupérer des valeurs dans les procédures stockées avec ADO
SQL Server clients peuvent modifier les protocoles
SQLDescribeCol renvoie une longueur de colonne erronée
Utiliser le paramètre de nom de serveur dans une chaîne de connexion
Parallel Data Warehouse (APS)
Détecter une inclinaison des valeurs des clés de distribution
Erreur 105005 lorsque vous faites ceTAS sur le stockage d’objets blob
Évaluer la précision des statistiques PDW
Msg 104381 lorsque vous exécutez une instruction avec une clause ORDER BY
Operations Manager ne peut pas surveiller APS appliance
Reporting Services
Un appel à AuthzInitializeContextFromSid échoue
Meilleures pratiques pour modifier le compte de service
Ne peut pas démarrer SSRS
Des blocages se produisent lorsque vous affichez un rapport SSRS
Erreur lors du chargement d’extensions personnalisées dans les outils de données
Le rapport exporté contient des lignes et des colonnes masquées
Clé non valide pour une utilisation dans l’état spécifié
Volet de paramètres non visible en mode SharePoint’intégration
Problèmes de rendu dans Internet Explorer
Erreur de récupération des fichiers d’application impossible
Message d’avertissement lors de l’ajout d’un assembly RS
SQL Server sur Linux
Choix d’un modèle de licence à l’aide de mssql-conf
Vidage principal sur RHEL 7.4 lorsque vous exécutez mssql-conf
Échec de l’opération de restauration sur les serveurs Linux
Outils
Management Studio
Impossible de faire basculer le volet de résultats
Erreur lors de la lecture du journal des erreurs
Échec de la récupération des données pour cette demande
L’Explorateur d’objets se crashe par intermittence
OutofMemoryException lors de l’exécution d’une requête
Message d’erreur non autorisé lors de l’enregistrement des modifications
Impossible de mody table - Expiration du délai d’expiration
Désinstaller SQL Server Management Studio
Diverses erreurs lors de la mise à jour de lignes dans un tableau
Autres outils
Impossible de se connecter à une erreur de fournisseur WMI dans configuration
manager
La base de données MSDB augmente
Les nouvelles données ne sont pas téléchargées dans la base de données MDW
après la configuration de l’ensemble de collections
Problème PowerShell lorsque RemoteSigned n’est pas définie
Utilitaires de langage de marques de relecture
La demande a échoué ou le service n’a pas répondu en temps voulu lorsque vous
démarrez SQL Agent
Échec de l’initialisation de l’objet Application SQLDMO lors de l’utilisation de
Sqlmaint
Utiliser Sqldumper pour générer des fichiers de vidage
Utilisation de l’utilitaire SQLIOSim pour simuler l’SQL Server disque
Visual Studio 2010 Shell est installé avec SQL Server 2014 et 2012
SQL Server résolution des problèmes
12/08/2021 • 2 minutes to read
Bienvenue dans SQL Server résolution des problèmes. Ces articles expliquent comment déterminer,
diagnostiquer et résoudre les problèmes que vous pouvez rencontrer lorsque vous utilisez SQL Server.
Pour plus d’informations sur les builds les plus récentes et les mises à jour cumulatives disponibles pour
une version SQL Server spécifique, voir Déterminer la version, l’édition et le niveau de mise à jour de SQL
Server et de ses composants.
Pour plus d’informations sur la façon dont vous pouvez contribuer à SQL Server documentation de
résolution des problèmes, voir Comment contribuer à SQL Server documentation .
Calculer la croissance de la période précédente
dans SQL Server Analysis Services
13/08/2021 • 2 minutes to read
Cet article explique comment calculer la croissance de la période précédente dans SQL Server Analysis Services.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2406745
Résumé
Cet article décrit la procédure que vous pouvez suivre pour calculer la valeur correcte pour la croissance de la
période précédente lorsque vous avez des cubes Analysis Services qui contiennent des résultats négatifs.
NOTE
La formule ci-dessus utilise un membre calculé créé sur une hiérarchie PreviousPeriodCurrentBalance de dates avec la
formule suivante :
Pour plus d’informations, reportez-vous à la rubrique IIf SQL Server Books Online : IIf (MDX)
Impossible de se connecter à une instance nommée
d’un service d’analyse en cluster
15/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où vous ne pouvez pas vous connecter à une instance nommée
d’Analysis Services installée sur un cluster deover.
Version du produit d’origine : SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise, Microsoft SQL
Server 2005 Êdition Entreprise
Numéro de la ko d’origine : 2429685
Symptômes
Il se peut que vous ne parveniez pas à vous connecter à une instance nommée d’Analysis Services installée sur
un cluster deover. Vous pouvez recevoir un message d’erreur semblable au suivant :
Cause
Le problème se produit lorsque vous démarrez l’instance nommée de SQL Server Analysis Services (SSAS) à
l’aide de Gestionnaire de configuration SQL Server ou de l’applet Services dans le panneau de contrôle. Lorsque
vous démarrez une instance SSAS sur un cluster deover à l’aide d’un outil autre que gestion du cluster de
failover (administrateur de cluster sur des systèmes d’exploitation plus anciens), cette instance SSAS s’exécute en
tant qu’instance autonome et écoute sur un port autre que celui par défaut, ce qui entraîne des échecs de
connexion de différentes applications.
Résolution
Arrêtez et redémarrez les services SQL Server Analysis à l’aide de l’outil Gestion du cluster de failover.
Plus d’informations
Une instance SSAS démarrée sur un cluster (instance par défaut ou nommée) commence à écouter toutes les
adresses IP du groupe de clusters à l’aide du port par défaut 2383. La propriété de <Port> paramètre du
serveur ne modifie pas le numéro de port du service SSAS sur un cluster.
Pour plus d’informations, voir l’article de la KB : Comment déterminer et modifier le port d’une instance SSAS
Configurer le fournisseur de données MSOLAP
pour Excel connexion à Analysis Services
14/08/2021 • 2 minutes to read
Cet article explique comment configurer le fournisseur de données MSOLAP correct pour que Excel se connecte
à Analysis Services.
Version du produit d’origine : SQL Server 2017 Enterprise, SQL Server 2016 Enterprise, SQL Server 2014
Enterprise, SQL Server 2012 Enterprise, SQL Server 2008 Enterprise
Numéro de la ko d’origine : 4488253
Résumé
Pour créer une connexion de données à une source de données Analysis Services, Microsoft Excel utilise le
fournisseur OLE DB Microsoft Analysis Services pour Microsoft SQL Server (MSOLAP). Chaque version
d’Analysis Services possède sa propre version de fournisseur MSOLAP. Le tableau suivant répertorie les versions
analysis service et leur version de fournisseur MSOLAP correspondante.
Pour plus d’informations sur MSOLAP et d’autres bibliothèques clientes pour Analysis Services, examinez les
bibliothèques clientes Analysis Services.
Pour plus d’informations sur l’utilisation de la version correcte de MSOLAP, voirPropriétés de chaîne de
connexion. Pour les versions MSOLAP héritées, reportez-vous à La manière d’obtenir les dernières versions de
MSOLAP. Pour la dernière version MSOLAP, reportez-vous aux bibliothèques clientes Analysis Services.
Excel utilise la version du fournisseur MSOLAP installée sur l’appareil client. Dans l’exemple suivant, Excel a
configuré MSOLAP.5 comme fournisseur de données dans la chaîne de connexion de données.
Sur un appareil client où plusieurs versions du fournisseur MSOLAP sont installées, Excel utilise la version
configurée dans le Registre.
Par exemple, dans le scénario suivant :
MSOLAP.5 est installé et configuré dans le Registre.
Vous avez installé MSOLAP.6 sur votre appareil pour vous connecter à Analysis Services 2014, mais vous
n’avez pas mis à jour le Registre pour référencer MSOLAP.6.
Excel configurer la connexion pour utiliser MSOLAP.5 dans la chaîne de connexion. Cela provoque des
problèmes, car vous ne pouvez pas utiliser les versions MSOLAP antérieures à la version de la source de
données.
Plus d’informations
Pour spécifier la version de MSOLAP Excel, mettez à jour la version dans les clés de Registre. Les clés suivantes
définissent la version MSOLAP Excel pour se connecter à Analysis Services. L’emplacement de la clé de Registre
varie selon que Microsoft Office est une installation MSI ou « Click-to-Run » (C2R) et qu’il s’agit d’une
installation 32 bits ou 64 bits.
Office MSI 32 bits
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\{308FF259-8671-4df4-B66C-9851BFACF446}\ProgID\
(Default)
ou
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Classes\Wow6432Node\CLSID\
{DBC724B0-DD86-4772-BB5A-FCC6CAB2FC1A}\ProgID
ou
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Classes\CLSID\
{DBC724B0-DD86-4772-BB5A-FCC6CAB2FC1A}\ProgID\(Default)
Pour déterminer si votre installation est MSI ou C2R, dans Excel allez à Compte > de fichier . Si vous voyez une
section Office updates, l’installation est C2R :
S’il n’existe Office section Mises à jour, il s’agit d’une installation MSI :
Pour déterminer si Excel est 32 bits ou 64 bits, cliquez sur À propos de Excel dans le même écran Comptes et
vous affichera dans la boîte de dialogue en haut :
Configurer SQL Server Analysis Services pour
générer des fichiers de vidage mémoire
13/08/2021 • 9 minutes to read
Cet article explique comment configurer SQL Server Analysis Services pour générer automatiquement des
fichiers de vidage mémoire.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 919711
Introduction
Cet article explique comment configurer Microsoft SQL Server Analysis Services (SSAS) 2012 ou des builds
supérieures pour générer automatiquement différents types de fichiers de vidage de mémoire lorsqu’il
rencontre des exceptions. L’article explique également comment utiliser l’utilitaire Sqldumper.exe pour obtenir
manuellement un fichier de vidage mémoire pour le processus SQL Server Analysis Services.
Plus d’informations
Par défaut, SQL Server Analysis Services génère automatiquement des fichiers minidump lorsqu’une exception
se produit. Pour l’installation par défaut, les fichiers minidump sont écrits à l’emplacement par défaut :
NOTE
InstanceName est un espace réservé pour la valeur correspondante pour SQL Server version Analysis Services.
L’emplacement du journal de l’instance analysis services SQL Server peut être modifié après l’installation, afin
que vous pouvez vérifier l’emplacement du journal en vérifiant le fichier msmdsrv.ini pour le fichier SQL Server
Analysis Services installé.
Pour déterminer la valeur correspondante pour le système, déterminez la valeur de la clé d’inscription
ImagePath, elle doit contenir le chemin d’accès au chemin d’accès de la msmdsrv.ini.
<Exception>
<CreateAndSendCrashReports>1</CreateAndSendCrashReports>
<CrashReportsFolder/>
<SQLDumperFlagsOn>0x0</SQLDumperFlagsOn>
<SQLDumperFlagsOff>0x0</SQLDumperFlagsOff>
<MiniDumpFlagsOn>0x0</MiniDumpFlagsOn>
<MiniDumpFlagsOff>0x0</MiniDumpFlagsOff>
<MinidumpErrorList>0xC1000000, 0xC1000001, 0xC1000016, 0xC11D0005, 0xC102003F</MinidumpErrorList>
<ExceptionHandlingMode>0</ExceptionHandlingMode>
<CriticalErrorHandling>1</CriticalErrorHandling>
</Exception>
Vous pouvez contrôler le comportement de génération du fichier de vidage mémoire en modifiant les
paramètres de cette section. Vous pouvez également modifier ces paramètres dans SQL Server Management
Studio. Pour plus d’informations sur ces paramètres, visitez le SQL Server Management Studio web de
téléchargement : Propriétés du journal.
NOTE
PiD représente l’ID de processus du processus SQL Server Analysis Services. PathToDumpFile représente le dossier dans
lequel le fichier de vidage est écrit.
Vous devez exécuter cette commande à partir du répertoire partagé où vous avez installé l’instance, ou vous
devez spécifier le chemin d’accès complet du fichier Sqldumper.exe dans la commande.
Par exemple, le répertoire par défaut à exécuter sqldumper.exe pour SQL Server Analysis Services 2019 est
C:\Program Files\Microsoft SQL Server\1590\Shared .
Informations supplémentaires
Vous pouvez utiliser le paramètre SQLDumperFlagsOn pour spécifier les différents indicateurs SQLDumper. Le
tableau suivant répertorie les valeurs de masque de bits que vous pouvez utiliser comme valeur pour le
paramètre d’indicateur.
Vous pouvez utiliser le paramètre MiniDumpFlagsOn pour fournir des indicateurs minidump. Le tableau suivant
répertorie les indicateurs minidump disponibles :
Références
Utilisation de l’utilitaire Sqldumper.exe pour générer un fichier de vidage dans SQL Server
Déterminer le premier ou le dernier membre avec
des données
13/08/2021 • 2 minutes to read
Résumé
Dans certaines applications, il est utile de rechercher le premier ou la dernière dimension membre qui a des
données associées à celui-ci. Cet article montre comment utiliser les fonctions et les fonctions pour renvoyer les
premier et dernier membres d’une HEAD() dimension qui ont des TAIL() UNION() données. L’article illustre
également l’utilisation de la NonEmptyCrossJoin() fonction.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 301934
Plus d’informations
Supposons que votre tâche consiste à rechercher les premiers et derniers membres de la dimension de temps
avec les données de l’exemple FoodMart 2000. Pour de nombreux utilisateurs, la première idée de trouver le
premier membre avec des données serait d’utiliser la FirstChild() fonction comme suit :
De même, la première idée de trouver le dernier membre de la dimension de temps avec des données serait
d’utiliser la LastChild() fonction comme suit :
Toutefois, la première requête MDX renvoie la valeur associée à [1997]. [Q1] et non la valeur associée à [1997],
qui est le premier membre avec des données. La deuxième requête MDX renvoie la valeur associée à [1997].
[Q4]. [12], qui est le dernier membre de la dimension, mais pas le dernier membre avec des données.
En alternative, la fonction renvoie le premier nombre spécifié d’éléments dans un ensemble et peut être utilisée
pour renvoyer le HEAD() premier membre de la dimension. De même, la fonction renvoie un sous-ensemble à
partir de la fin d’un ensemble et peut être utilisée pour renvoyer le TAIL() dernier membre de la dimension. La
requête MDX pour renvoyer le premier membre de la dimension de temps aurait la forme suivante :
Cette requête retourne 1997 en tant que premier membre de la dimension avec des données.
La requête MDX pour renvoyer le dernier membre de la dimension doit prendre la forme suivante :
La requête MDX pour rechercher le premier membre avec des données prend ensuite la forme
et la requête MDX pour rechercher le dernier membre avec des données prend ensuite la forme :
La fonction peut ensuite être utilisée pour combiner les deux requêtes UNION() MDX en une seule requête :
SELECT
UNION(HEAD(NonEmptyCrossJoin([Time].Members,1),1), TAIL(NonEmptyCrossJoin([Time].Members,1),1)) ON COLUMNS
FROM SALES
La panne de l’espace disque pendant la
récupération d’un travail de traitement en échec
entraîne l’incident de SSAS
13/08/2021 • 2 minutes to read
Cet article décrit une erreur de Microsoft SQL Server Analysis Services (SSAS) qui se produit lorsque l’espace
disque est épuisé sur le système hébergeant l’instance SSAS.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 4088924
Symptômes
Toute version de SSAS se crashe lorsqu’elle subit une erreur d’I/S pendant la récupération d’un travail de
traitement qui a échoué. Lorsque ce problème se produit, le message d’erreur suivant peut être consigné dans le
journal des applications :
Erreur du système de fichiers : l’erreur suivante s’est produite lors de l’écriture dans le fichier « LazyWriter
Stream » : il n’y a pas suffisamment d’espace sur le disque. .
Erreur du système de fichiers : le thread d’arrière-plan exécutant le rédacteur différé a rencontré une erreur
d’E/S.
Plus d’informations
Ce problème peut se produire si l’espace disque disponible est épuisé. Ce problème peut entraîner un arrêt
d’urgence du service. L’arrêt ressemble à un blocage, bien qu’il soit initié en interne.
Pendant l’opération de rollback, certaines opérations d’opération d’ouverture de projet sont nécessaires pour
terminer la transaction. L’épuisement du disque peut provoquer une défaillance des E/S. Ainsi, il est impossible
de revenir à un état cohérent pour la transaction de manière déterministe. Le serveur ne doit pas continuer à
servir des données alors qu’il est dans un état incohérent. Dans ce cas, la seule façon de récupérer est d’arrêter
le serveur, puis de le forcer à redémarrer.
Lorsque le serveur redémarre, une opération de nettoyage se produit avant que des données ne sont
disponibles pour l’interrogation. Cette opération peut émaner en toute sécurité tous les fichiers du répertoire de
données. Le nettoyage supprime tous les fichiers qui ne sont pas confirmés comme valides et font partie des
données attendues.
S’applique à
SQL Server 2017 sur Windows (toutes les éditions)
SQL Server 2017 sur Linux (toutes éditions)
SQL Server 2016 Enterprise
SQL Server 2014 Enterprise
SQL Server 2012 Enterprise
Activer le niveau d’isolation des transactions
instantanées dans SQL Server 2005 Analysis
Services
13/08/2021 • 3 minutes to read
Cet article décrit les étapes à suivre pour activer le niveau d’isolation des transactions instantanées dans
Analysis Services.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 919160
Introduction
Cet article explique comment activer le niveau d’isolation des transactions instantanées dans Microsoft SQL
Server Analysis Services. En outre, cet article explique comment tester si le niveau d’isolation des transactions
instantanées est activé.
NOTE
Dans ces instructions, il s’agit d’un espace réservé pour une base de données dans la source de données que vous
souhaitez <DatabaseName> utiliser dans Analysis Services.
NOTE
Pour afficher la colonne TransactionID, cochez la case Afficher toutes les colonnes.
NOTE
Dans cette instruction, <SPID> il s’agit d’un espace réservé pour l’ID de session que vous avez obtenu à l’étape
7.
10. Sous l’onglet Résultats, notez la valeur dans la Transaction_Isolation_Level colonne. Cette valeur
indique le niveau d’isolation des transactions que vous utilisez dans le projet Analysis Services. Lorsque
le niveau d’isolation de transaction de capture instantanée est activé, la valeur dans la colonne
Transaction_Isolation_Level est 5 . Le tableau suivant indique les valeurs de la colonne
Transaction_Isolation_Level et les niveaux d’isolation des transactions correspondants.
0 Non spécifié.
1 ReadUncommitted
2 ReadCommitted
3 Répétable
4 Sérialisable
5 Capture instantanée
Références
Pour plus d’informations sur le niveau d’isolation des transactions instantanées, consultez les rubriques
suivantes dans SQL Server 2005 Books Online :
DÉFINIR LE NIVEAU D’ISOLATION DES TRANSACTIONS (Transact-SQL)
Activation des niveaux d’isolation basés sur le système de version de ligne
Niveaux d’isolation dans le Moteur de base de données
Erreur 1032 messages dans le journal d’application
Windows Server 2012
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’exécuter des instances de
SQL Server ou SQL Server Analysis Services sur un ordinateur qui exécute Windows Server 2012.
Version du produit d’origine : SQL Server Analysis Services, SQL Server
Numéro de la ko d’origine : 2811566
Symptômes
Prenons l’exemple du scénario suivant :
Vous installez Microsoft SQL Server ou SQL Server Analysis Services sur un ordinateur qui s’exécute
Windows Server 2012.
Vous utilisez le compte par défaut comme compte de service pour ces applications pendant l’installation.
L’installation a réussi.
Après l’installation, les services de ces programmes démarrent correctement.
Dans ce scénario, vous pouvez trouver dans le journal des applications des messages d’erreur semblables à ce
qui suit :
Pour les instances de SQL Server (SQLServr.exe)
Cause
Ce problème se produit en raison d’autorisations insuffisantes pour les comptes de démarrage de service pour
SQL Server et SQL Server Analysis Services lorsque les services accèdent au dossier suivant pour la
journalisation dans le cadre de la fonctionnalité Mesures d’utilisation des logiciels :
C:\Windows\System32\LogFiles\Sum
Solution de contournement
Pour contourner ce problème, ajoutez manuellement des autorisations de lecture/écriture aux comptes de
service utilisés par SQL Server (sqlservr.exe) et SQL Server Analysis Services (msmdsrv.exe) pour accéder au
\Windows\System32\LogFiles\Sum dossier.
Plus d’informations
La fonctionnalité Mesures de l’utilisation des logiciels utilise le service de journalisation de l’accès utilisateur
Windows Server 2012. Pour plus d’informations, voir Vue d’ensemble de la journalisation de l’accès utilisateur.
Erreur (l’optimiseur de requête a généré trop de
sous-ressources) et la requête MDX échoue dans
l’instance multidimensionnelle SSAS
15/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous exécutez une requête MDX
(Multidimensional Expressions) sur une instance multidimensionnelle Microsoft SQL Server Analysis Services
(SSAS).
S’applique à : SQL Server 2012 Analysis Services, SQL Server 2014 Analysis Services, SQL Server 2016
Analysis Services, SQL Server 2017 Analysis Services Windows, SQL Server 2019 Analysis Services Windows
Numéro de la ko d’origine : 4533057
Symptômes
Lorsque vous exécutez une requête MDX (Multidimensional Expressions) sur une instance multidimensionnelle
Microsoft SQL Server Analysis Services (SSAS), la requête MDX échoue et renvoie le message d’erreur suivant :
Cause
Le moteur de formule SSAS (FE) doit générer tous les ensembles MDX pertinents pour le sous-cube de requête
Stockage Engine (SE) ou sonar. Il existe une limite au nombre de sous-SE de requête par requête qui peuvent
être générés. Ce comportement est voulu par la conception même du produit. Actuellement dans le plan de
requête, une erreur se produit si la fe génère trop de sous-cubes de requête pour la requête.
Résolution
Pour éviter cette erreur, suivez les recommandations suivantes :
Dans le Excel tableau croisé dynamique, éteinez les totaux et les sous-totaux.
Supprimez la hiérarchie de l’axe Lignes ou Colonnes du tableau croisé dynamique dans Excel’interface
utilisateur.
Ne définissez pas trop de membres calculés (par exemple, plus de 500) sur la hiérarchie de dimension. Au
lieu de cela, vous devez avoir des membres réguliers dans la hiérarchie de dimension et utiliser des
expressions d’attribution d’étendue MDX (également appelées cellules calculées) pour remplacer les
expressions de ces membres calculés.
Erreur lors de la connexion à une instance nommée
de SQL Server Analysis Services à l’aide d’IPv6
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre un problème qui peut se produire lorsque vous vous connectez à une instance
nommée de SQL Server Analysis Services qui est configurée pour utiliser IPv6.
Version du produit d’origine : SQL Server Entreprise
Numéro de la ko d’origine : 2658571
Symptômes
Dans Microsoft SQL Server, vous recevez une erreur ressemblant à ce qui suit lorsque vous essayez de vous
connecter à une instance nommée de SQL Server Analysis Services (SSAS) à l’aide d’IPv6 :
Aucune connexion n’a pu être réalisée car l’ordinateur cible l’a activement refusée [:: n ]: nnnnn (System)
NOTE
Dans cette erreur, n est un integer.
Cause
Ce problème peut se produire si le serveur qui héberge l’instance nommée de SSAS a été configuré pour utiliser
IPv4 et IPv6 lors de SQL Server été installé. Ensuite, le serveur a été reconfiguré pour utiliser uniquement IPv6.
Résolution
Pour résoudre ce problème, suivez les étapes suivantes :
1. Arrêtez le service SQL Server Analysis Services.
2. Ouvrez leMsmdredir.ini dans Bloc-notes.
NOTE
Par défaut, le Msmdredir.ini se trouve dans le dossier suivant
%ProgramFiles%\Microsoft SQL Server\90\Shared\ASConfig :
3. Dans la section Instances, vérifiez que les valeurs de la propriété Por t et de la propriété IPv6 sont
différentes pour l’instance nommée.
4. Supprimez la propriété Por tIPV6.
5. Enregistrez leMsmdredir.ini, puis quittez Bloc-notes .
6. Démarrez le SQL Server service Analysis Services.
Plus d’informations
Lorsque SSAS détecte que le serveur hôte est configuré pour écouter sur IPv4 et IPv6, SSAS crée deux entrées
dans le fichierMSmdredir.ini. Toutefois, si le serveur est configuré pour écouter sur un protocole, <Port> l’entrée
est utilisée.
Prenons le scénario dans lequel le serveur qui héberge l’instance nommée de SSAS a été configuré pour utiliser
IPv4 et IPv6 lors de l’installation de SQL Server, puis le serveur a été reconfiguré pour utiliser uniquement IPv6.
Dans ce scénario, le fichier Msmdredir.ini peut contenir des entrées obsolètes qui ne pointent pas vers les ports
sur lesquels l’instance nommée SSAS est à l’écoute.
Lorsque le service SQL Server Analysis Services démarre, il détecte les protocoles utilisés et met à jour
Msmdredir.ini fichier. Si le serveur a été configuré pour utiliser IPv4 et IPv6, il existe deux entrées dans
Msmdredir.ini fichier. Toutefois, si le service SQL Server Analysis Services détecte qu’un protocole est utilisé,
seule la propriété Port est mise à jour. Par conséquent, la propriété PortIPv6 peut contenir des informations
obsolètes.
Lorsque le service SQL navigateur lit les informations obsolètes, il peut rediriger les demandes vers l’instance
nommée et provoquer des échecs de connexion. Lorsque les informations obsolètes contenues dans la propriété
PortIPv6 sont supprimées, les informations de la propriété Port sont utilisées.
Messages d’erreur lorsque vous essayez de traiter
une base de données ou un cube
14/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème où vous recevez des messages d’erreur lorsque vous essayez de
traiter une base de données ou un cube dans SQL Server Analysis Services.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 922673
Symptômes
Dans SQL Server Analysis Services, vous essayez de traiter une base de données ou un cube à l’aide SQL Server
Business Intelligence Development Studio ou SQL Server Management Studio. Toutefois, l’opération de
processus échoue et vous recevez les messages d’erreur suivants :
Message d’erreur 1
Message d’erreur 2
Erreurs dans le moteur de stockage OLAP : l’enregistrement a été ignoré car la clé d’attribut est in
trouvée. Attribut : attribut généré X de dimension : DimensionName à partir de la base de données :
DatabaseName, Cube: CubeName, Measure Group: MeasureGroupName, Partition: PartitionName,
Record: RecordNumber.
Cause
Ce problème se produit car une table de faits pour un cube possède un ou plusieurs enregistrements qui
contiennent une clé d’attribut, et cette clé d’attribut n’existe pas dans la table de dimension correspondante. Ce
comportement peut se produire lorsque vous n’avez pas traitée la dimension correspondante avant de traiter le
cube ou lorsque les tables sous-jacentes ne correspondent pas. Si le champ « Valeur : » dans le message n’a pas
de numéro après, la table de faits doit contenir des données null.
Résolution
Pour résoudre ce problème, vous devez vérifier que votre source de données pointe vers les emplacements
suivants :
L’instance de source de données sous-jacente correcte, telle qu’une instance de SQL Server.
Base de données correcte.
Ensuite, corrigez les enregistrements sous-jacents qui contiennent la clé d’attribut problématique. Pour ce faire,
utilisez l’une des méthodes suivantes.
Utiliser une clé d’attribut existante
Mettez à jour les enregistrements pour utiliser une clé d’attribut existante en exécutant une instruction
semblable à ce qui suit :
Statut
Ce comportement est inhérent au produit.
Message d’erreur lors du traitement d’une
dimension
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous traitez une dimension dans SQL Server
Analysis Service.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2002757
Symptômes
Dans SQL Server Analysis Service, le traitement des dimensions et vous pouvez recevoir un message d’erreur
semblable à ce qui suit :
Erreurs dans le moteur de stockage OLAP : une clé d’attribut en double a été trouvée lors du traitement :
Tableau : 'TABLE_NAME', Colonne : 'ATTRIBUTE_COLUMN_NAME, Valeur : 'ATTRIBUTE_VALUE'. L’attribut est «
ATTRIBUTENAME ».
Cause
Le comportement est de par sa conception. SQL Server Les services d’analyse détectent la clé d’attribut en
double pendant le traitement.
L’erreur ci-dessus peut également être déclenchée lorsque la base de données relationnelle est sensible à la cas
et que les valeurs de données sont en cas mixte. Dans Analysis Services, lors de la création d’une dimension et
de ses attributs, le classement par défaut de l’attribut ne fait pas l’affaire. La dimension par défaut a
ErrorConfiguration | KeyDuplicate définie sur Repor tAndStop . Ainsi, si vous avez une base de données
relationnelle qui, par exemple, contient des valeurs de données BOOKNAME et Bookname, pendant le
traitement des dimensions, si les données BOOKNAME ont d’abord été traitées en tant que clé d’attribut, le
traitement suivant échouera avec l’erreur suivante :
Une clé d’attribut en double a été trouvée lors du traitement : Table : 'TABLE_NAME', Column:
'ATTRIBUTE_COLUMN_NAME, Value: 'Bookname'. L’attribut est « ATTRIBUTENAME ».
Résolution
Lors de la conception de dimensions, d’attributs de dimension et de relations d’attributs, vous devez vérifier les
valeurs de données relationnelles pour les doublons et, si elles existent, utilisez l’une des procédures suivantes
pour résoudre le problème :
Option 1 : modifiez la requête nommée en affichage source de données pour sélectionner uniquement
les données avec le cas souhaité.
Par exemple, vous pouvez utiliser ou UPPER utiliser la fonction de cas dans la requête LOWER nommée.
Option 2 : vous pouvez contourner le problème à l’aide de l’une des options suivantes :
NOTE
Ces options ne sont généralement pas recommandées, car elles peuvent entraîner des données inattendues, mais
peuvent être utilisées à des fins de dépannage.
NOTE
La dimension aura alors une clé d’attribut en double (différentes valeurs de cas) une fois le traitement
terminé.
Message d’erreur lorsque vous utilisez un
PowerPivot pour Excel de travail en tant que source
de données dans SQL Server Analysis Services
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’utiliser un PowerPivot pour
un Excel comme source de données dans SQL Server Analysis Services.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2607106
Symptômes
Prenons l’exemple du scénario suivant :
Vous configurez Microsoft PowerPivot pour Excel sur un serveur intermédiaire.
Vous configurez le serveur pour qu’il utilise l’authentification Kerberos, puis vous connectez au serveur.
Vous essayez d’utiliser une PowerPivot pour Excel de travail en tant que source de données dans Microsoft
SQL Server Analysis Services.
Dans ce scénario, vous pouvez recevoir un message d’erreur semblable à ce qui suit :
Cause
Ce problème se produit car les liaisons personnalisées pour le service de redirection sont configurées pour
utiliser l’authentification Microsoft NTLM. En outre, les liaisons personnalisées sont configurées pour ne pas
négocier.
Résolution
Pour résoudre ce problème, activez l’authentification Kerberos pour le service de redirection. Pour cela, procédez
comme suit :
1. Back up the Web.config file for the Redirector service.
NOTE
Par défaut, le Web.config se trouve dans le dossier :
%SystemDrive%\program files\common files\web service extensions\14\ISAPI\powerpivot .
Mis à jour
<binding name="RedirectorBinding">
<webMessageEncoding
webContentTypeMapperType="Microsoft.AnalysisServices.SharePoint.Integration.Redirector.RawCont
entTypeMapper, Microsoft.AnalysisServices.SharePoint.Integration" />
<httpTransport manualAddressing="true" authenticationScheme="Negotiate"
transferMode="Streamed" maxReceivedMessageSize="9223372036854775807"/>
</binding>
<binding name="RedirectorSecureBinding">
<webMessageEncoding
webContentTypeMapperType="Microsoft.AnalysisServices.SharePoint.Integration.Redirector.RawCont
entTypeMapper, Microsoft.AnalysisServices.SharePoint.Integration" />
<httpsTransport manualAddressing="true" authenticationScheme="Ntlm" transferMode="Streamed"
maxReceivedMessageSize="9223372036854775807"/>
</binding>
Mis à jour
<binding name="RedirectorSecureBinding">
<webMessageEncoding
webContentTypeMapperType="Microsoft.AnalysisServices.SharePoint.Integration.Redirector.RawCont
entTypeMapper, Microsoft.AnalysisServices.SharePoint.Integration" />
<httpsTransport manualAddressing="true" authenticationScheme="Negotiate"
transferMode="Streamed" maxReceivedMessageSize="9223372036854775807"/>
</binding>
Cet article décrit un problème qui se produit si l’ensemble dans la Aggregate fonction contient un membre
calculé.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 942981
Symptômes
Vous avez une requête MDX (Multidimensional Expressions) qui utilise la Aggregate fonction. L’ensemble
spécifié dans la fonction Aggregate contient un membre calculé. Lorsque vous exécutez la requête MDX sur une
instance de Microsoft SQL Server Analysis Services, la requête renvoie #Error valeurs des cellules. Si vous
cliquez sur une cellule, vous recevez le message d’erreur suivant dans la boîte de dialogue Propriétés de la
cellule :
NOTE
Vous recevez le message d’erreur dans la colonne Valeur de la VALUE propriété et de la FORMATTED_VALUE propriété.
Cause
Ce problème se produit parce qu’un membre calculé contient la fonction et que cette fonction possède un
ensemble de membres Aggregate non aggrégables.
Par exemple, considérez la requête MDX mentionnée dans la section Étapes pour reproduire le problème. Dans
l’exemple de base de données [Adventure works DW], le [Scénario]. Le membre [Scénario] n’est pas aggrégable.
La propriété IsAggregatable de cet attribut de dimension est définie sur False . Si vous exécutez cette requête
MDX, vous recevrez le message d’erreur mentionné dans la section Symptômes.
NOTE
L’exemple de projet Adventure Works DW Êdition Entreprise est inclus dans le projet de base de données Analysis
Services. Pour télécharger le projet de base de données Analysis Services, voir les exemples de bases de données
AdventureWorks.
2. Déployez l’exemple de projet sur une instance de SQL Server Analysis Services.
3. Ouvrez SQL Server Management Studio, puis connectez-vous à l’instance d’Analysis Services.
4. Cliquez sur Nouvelle requête .
5. Dans la fenêtre de requête, exécutez la requête MDX suivante :
WITH MEMBER
[Scenario].[Scenario].[MyMember]
AS
AGGREGATE(
{[Scenario].[Scenario].&[1],
[Scenario].[Scenario].&[2],
[Scenario].[Scenario].&[3],
[Scenario].[Scenario].[Budget Variance]
})
SELECT
{[Measures].[Amount]} ON AXIS(0)
FROM
[Adventure Works]
WHERE [Scenario].[Scenario].[MyMember]
Les requêtes MDX avec mesure calculée à l’aide de
l’opérateur « / » s’exécutent lentement dans SSAS
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème lorsqu’une requête MDX (Multidimensional Expressions) est
exécutée avec une mesure calculée dans les instances tabulaires SSAS 2016, 2017 et 2019.
S’applique à : Analysis Services, SQL Server 2016, SQL Server 2019, SQL Server 2017 Windows, Analysis
Cubes
Numéro de la ko d’origine : 4560494
Symptômes
Lorsqu’une requête MDX (Multidimensional Expressions) est exécutée avec une mesure calculée dans les
instances tabulaires SSAS 2016, 2017 et 2019, la mesure calculée s’exécute lentement et consomme beaucoup
d’activités si elle utilise / l’opérateur.
Cause
Une fonction DIVIDE améliorée permettant d’accélérer les performances est disponible dans MDX et DAX.
Résolution
Utilisez la fonction DIVIDE au lieu de / l’opérateur dans le calcul.
Références
terminDescription of the standard terminology that is used to describe Microsoft software updatesology
Aucun résultat pour la requête de script XMLA pour
les propriétés/membres d’une hiérarchie de
dimension
14/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème qui se produit lorsque vous essayez d’obtenir les propriétés et les
membres d’une hiérarchie de dimensions à l’aide du script XML for Analysis (XMLA).
Version du produit d’origine : SQL Server 2016 Business Intelligence, SQL Server 2016 Analysis Services
Numéro de la ko d’origine : 4038458
Symptômes
Supposons que vous Microsoft SQL Server 2016 Analysis Services (SSAS 2016) soit installé. Lorsque vous
essayez d’obtenir les propriétés d’une hiérarchie de dimensions spécifique et de ses membres à l’aide du script
XMLA dans SSAS 2016, aucun résultat n’est renvoyé.
NOTE
Le même script XMLA fonctionne dans SQL Server 2014 Analysis Services ou des versions antérieures de SQL Server
Analysis Services.
This issue only occurs when HierarchyUniqueNameStyle is set to ExcludeDimensionName .
Cause
Ce problème se produit car la valeur ExcludeDimensionName était destinée uniquement à la prise en charge
d’anciennes bases de données, telles que SQL Server 2000 ou 2005. Si HierarchyUniqueNameStyle elle est définie
sur ExcludeDimensionName , toute demande XMLA qui inclut dans le produit DIMENSION_UNIQUE_NAME des
résultats RestrictionList vides.
Solution de contournement
Pour contourner ce problème, définissez la valeur HierarchyUniqueNameStyle sur IncludeDimensionName
dans l’objet de dimension de cube.
Comment effectuer une requête distribuée SQL
Server avec OLAP Server
12/08/2021 • 6 minutes to read
Cet article explique comment effectuer une requête distribuée SQL Server avec OLAP Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 218592
Résumé
Cet article explique comment effectuer une requête distribuée SQL Server pour récupérer des données à partir
d’un cube OLAP Services (ou Analysis Services). Avec Microsoft SQL Server, vous pouvez effectuer des requêtes
auprès de fournisseurs OLE DB. Pour ce faire, vous pouvez utiliser l’une des suivantes :
Utilisez les OPENQUERY fonctions OPENROWSET Transact-SQL.
Utilisez une requête avec des noms en quatre partie, y compris un nom de serveur lié.
Par exemple :
Vous pouvez utiliser la ou la fonction dans une instruction SQL Server pour transmettre des requêtes au serveur
OPENROWSET OPENQUERY SELECT OLAP lié. La requête est limitée à la syntaxe abrégée prise en charge par OLAP
Services ; toutefois, la requête peut inclure la SELECT syntaxe MDX (Multidimensional Expressions). Une requête
qui inclut MDX renvoie des jeux de lignes aplatis, comme décrit dans la documentation OLE DB. Pour plus
d’informations sur la syntaxe prise en charge par SQL Server OLAP Services, voir la rubrique Syntaxe SQL
SELECT prise en charge dans la bibliothèque en ligne des SELECT services OLAP.
Pour interroger une base de données de serveur OLAP locale ou distante à partir de SQL Server, vous devez
installer le fournisseur OLE DB MSOLAP sur l’ordinateur qui exécute SQL Server. Le fournisseur MSOLAP OLE
DB est installé lorsque vous installez les composants clients OLAP à partir du SQL Server.
SELECT a.*
FROM OpenRowset('MSOLAP','DATASOURCE=myOlapServer; Initial Catalog=FoodMart;',
'SELECT Measures.members ON ROWS,
[Product Category].members ON COLUMNS
FROM [Sales]') as a
go
SELECT a.*
FROM OpenRowset('MSOLAP','DATASOURCE=myOlapServer; Initial Catalog=FoodMart;',
'SELECT
{ Time.Year.[1997] } ON COLUMNS,
NON EMPTY Store.MEMBERS ON ROWS
FROM Sales
WHERE ( Product.[Product Category].[Dairy] )') as a
--------------------------------------------------
-- Linked Server Examples with OPENQUERY
--------------------------------------------------
EXEC sp_addlinkedserver
@server='olap_server',
@srvproduct='',
@provider='MSOLAP',
@datasrc='server',
@catalog='foodmart'
go
-- MDX in OPENQUERY --
SELECT *
FROM OPENQUERY(olap_server,
'SELECT
{ Time.Year.[1997] } ON COLUMNS,
NON EMPTY Store.MEMBERS ON ROWS
FROM Sales
WHERE ( Product.[Product Category].[Dairy])' )
NOTE
La rubrique Transmission de requêtes de SQL Server à un serveur OL AP lié, dans la documentation en ligne des services
OLAP, présente un bogue de documentation dans l’exemple de code :
SELECT *
FROM OPENQUERY(olap_server, 'SELECT [customer], [quantity] FROM sales')
Seule une forme limitée de SQL est prise en charge, et seuls les noms de niveau ou de mesure peuvent être
spécifiés. Lorsque vous exécutez la requête, vous recevez ce message d’erreur :
Serveur : Msg 7399, Level 16, State 1, Line 1 OLE DB provider 'MSOLAP' reported an error. [Message
renvoyé par le fournisseur OLE/DB : Le nom de colonne « client » n’est pas valide. Seuls les noms de
niveau ou de mesure peuvent être spécifiés.]
Toutefois, le SQL instructions de ce formulaire à OLAP Server peut être lent et vous pouvez recevoir une erreur
de délai d’SQL sur certains ordinateurs :
Le fournisseur OLE DB « MSOLAP » a signalé une erreur. [Message renvoyé par le fournisseur OLE/DB :
impossible d’ouvrir la base de données « foodmart » ] [Message renvoyé par le fournisseur OLE/DB : erreur
de serveur OLAP : l’opération demandée a échoué en raison du délai d’échéance.]
Bien que les exemples de serveur liés avec un nom en quatre partie fonctionnent bien, ils peuvent prendre
beaucoup de temps pour renvoyer un résultat au client. La syntaxe de nom en quatre SQL Server concept ; Il est
utilisé dans une commande Transact-SQL pour faire référence à une table dans un serveur lié et sa syntaxe est
limitée pour les requêtes OLAP. SQL Server peut déterminer qu’il doit lire la table de faits entière à partir
d’OLAP Server et effectuer l’opération proprement dite, ce qui peut prendre beaucoup de temps GROUP BY et de
ressources.
Microsoft recommande d’envoyer une instruction MDX par le biais d’une fonction ou d’une fonction, comme
illustré dans OPENROWSET OPENQUERY les exemples précédents. Cette méthode permet SQL Server envoyer la
commande directement au fournisseur OLAP lié, sans essayer de l’essayer. La commande peut être MDX ou le
sous-ensemble de SQL que le fournisseur OLAP prend en charge. Vous pouvez utiliser le jeu de lignes renvoyé
par la OPENQUERY fonction dans d’SQL opérateurs. Pour les requêtes MDX de base et les requêtes qui retournent
une quantité de données relativement faible (comme un écran), le jeu de résultats doit toujours être créé en
moins de GROUP BY 10 secondes, généralement en 5 secondes, quelle que soit la taille du cube. Si les requêtes
prennent plus de temps, vous pouvez créer davantage d’agrégations à l’aide de l’Assistant Analyse basée sur
l’utilisation.
Conseils de performances
Voici quelques conseils de performances :
SQL Server ouvre deux connexions au fournisseur OLAP pour chaque requête. L’une de ces requêtes est
réutilisée pour les requêtes ultérieures ; Par conséquent, si vous exécutez à nouveau la commande, la
deuxième requête peut s’exécuter plus rapidement.
Pour augmenter la vitesse, groupez par une autre dimension (car vous avez moins de données).
Dans le pire des cas, le cube est stocké par le biais d’olap relationnels (ROLAP) et il n’y a pas d’agrégation.
Ensuite, le serveur OLAP ouvre une connexion à SQL Server pour obtenir les lignes de table de faits.
N’utilisez pas SQL Server requête distribuée dans ce cas.
Si vous avez simplement besoin d’un jeu de résultats provenant d’un serveur OLAP ou d’un fichier cube,
essayez d’utiliser une application SQL Server OLE DB C++ ou ADO(ADO*MD) directement sur le serveur
OLAP ou sur un fichier de cube.
SQL Server installe certains fournisseurs OLE DB et les configure pour qu’ils se chargent in-process. Étant
donné que le fournisseur MSOLAP n’est pas installé par SQL Server, il est configuré pour charger hors
processus. Microsoft recommande vivement de modifier les options de chargement in-process du
fournisseur OLAP, car cette configuration améliore les performances de vos requêtes OLAP. Pour apporter
la modification, suivez les étapes suivantes :
1. Dans le dossier Sécurité, cliquez avec le bouton droit sur Ser veurs liés, puis cliquez sur Nouveau
ser veur lié.
2. Pour le nom du fournisseur, cliquez pour sélectionner le fournisseur OLE DB pour les ser vices
OL AP.
3. Cliquez sur Options .
4. Cliquez pour sélectionner Autoriser InProcess .
5. Cliquez sur OK .
Références
Pour obtenir une description détaillée des paramètres de procédure sp_addlinkedserver stockée, voir
SQL Server Books Online.
Pour plus d’informations sur la configuration et l’utilisation de requêtes distribuées, recherchez sur , et
sur les sp_addlinkedserver OPENQUERY OPENROWSET rubriques connexes, dans SQL Server Books Online.
Pour en savoir plus sur la technologie OLAP et la syntaxe MDX, consultez la bibliothèque en ligne des
services OLAP.
Résultat inattendu d’Analysis Services lorsque
Dimension DefaultMember n’est pas Tout et qu’un
filtre de rapport est appliqué Excel
14/08/2021 • 4 minutes to read
Cet article vous aide à contourner le problème dans lequel vous obtenez un résultat inattendu d’Analysis
Services lorsque Dimension n’est pas tout et qu’un filtre de rapport est appliqué DefaultMember Excel.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2607575
Résumé
Lorsque la hiérarchie d’attributs dimension est définie sur un membre autre que le membre ALL et que vous
exécutez une requête MDX qui utilise un , qui renvoie un ensemble qui exclut le , les valeurs renvoyées dans le
plus à l’extérieur sont les valeurs d’agrégat associées aux membres de l’ensemble défini dans DefaultMember
sub-select le DefaultMember SELECT sub-select . Si la requête MDX (Multidimensional Expressions) utilise un
, qui renvoie un ensemble qui inclut les , les valeurs renvoyées dans le SELECT le plus extérieur sont les valeurs
sub-select DefaultMember associées à DefaultMember la .
Le comportement conçu est que, le plus à l’extérieur, les membres par défaut sur les axes sont déterminés en
fonction de ce qui est disponible dans l’espace du sous-cube défini par les SELECT SELECT instructions internes.
S’il se trouve dans le slicer, mais pas sur un axe, les valeurs associées à DefaultMember DefaultMember l’axe sont
renvoyées. Si l’objet est exclu du slicer, les valeurs renvoyées sont écrasées par les valeurs DefaultMember
d’agrégation sous un membre « ALL ».
Plus d’informations
Lorsque vous utilisez Excel 2007 ou Excel 2010 pour interroger une base de données Analysis Services, une
pratique relativement courante et une nécessité fréquente consiste à découper le cube en setting un filtre à l’aide
d’une ou plusieurs des dimensions dans la zone « Filtre de rapport » du contrôle Tableau croisé dynamique.
Lorsque cette action est effectuée, le client Excel génère une requête MDX qui inclut une clause ou interne pour
filtrer les données et limiter l’espace SELECT sub-select du cube. Par exemple, en utilisant Excel 2010 et en se
connectant à la base de Adventure Works DW 2008 données, en plaçant [Mesures].[ Montant des ventes Internet]
dans la section Valeurs du tableau croisé dynamique, en ajoutant la hiérarchie, y compris
[Customer].[Customer Geography] uniquement le [Client].[ Géographie du client]. [Pays]. Membre [Canada] et
ajout de la dimension à la zone Filtre de lignes, puis définition d’un filtre qui inclut uniquement et , la valeur
renvoyée est [Product].[Category] [Product].[Category].[Accessories] [Product].[Category].[Bikes] $1 924
680,24 . Dans ce cas, la requête générée par le Excel est :
SELECT
NON EMPTY Hierarchize(AddCalculatedMembers(
{DrilldownLevel({[Customer].[Customer Geography].[All Customers]})}))
DIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME ON COLUMNS
FROM (SELECT ({[Customer].[Customer Geography].[Country].&[Canada]}) ON COLUMNS
FROM (SELECT ({[Product].[Category].&[1], [Product].[Category].&[4]}) ON COLUMNS
FROM [Adventure Works]))
WHERE ([Measures].[Internet Sales Amount])
CELL PROPERTIES VALUE, FORMAT_STRING, LANGUAGE, BACK_COLOR, FORE_COLOR, FONT_FLAGS
Si les conditions filter sont modifiées afin que le filtre de lignes contienne désormais les membres et que la
valeur renvoyée est [Product].[Category].[Accessories] [Product].[Category].[Clothing] $156 542,47 et que
la requête générée par Excel est :
SELECT
NON EMPTY Hierarchize(AddCalculatedMembers(
{DrilldownLevel({[Customer].[Customer Geography].[All Customers]})}))
DIMENSION PROPERTIES PARENT_UNIQUE_NAME, HIERARCHY_UNIQUE_NAME ON COLUMNS
FROM (SELECT ({[Customer].[Customer Geography].[Country].&[Canada]}) ON COLUMNS
FROM (SELECT ({[Product].[Category].&[3], [Product].[Category].&[4]}) ON COLUMNS
FROM [Adventure Works]))
WHERE ([Measures].[Internet Sales Amount])
CELL PROPERTIES VALUE, FORMAT_STRING, LANGUAGE, BACK_COLOR, FORE_COLOR, FONT_FLAGS
Si la conception de la hiérarchie d’attributs est modifiée pour définir la propriété sur , et que le tableau croisé
dynamique est définie pour utiliser la condition de filtre suivante, le membre sur les colonnes, avec
[Product].[Category] DefaultMember le [Product].[Category].&[2]
[Customer].[Customer Geography].[Country].[Canada] [Produit].[ Dimension Category] de la zone De filtrage des
lignes, y compris uniquement et , la requête générée par Excel est identique à la première et la valeur renvoyée
est [Product].[Category].[Accessories] [Product].[Category].[Bikes] $1 821 302,39 bien que la valeur
agrégée pour les deux et à l’intersection avec est [Product].[Category].[Accessories]
[Product].[Category].[Bikes] [Customer].[Customer Geography].[Country].&[Canada] $1 924 680,24 . Si le
[Produit]. [Category] attribute hierarchy is moved to either the Rows or Columns axis, the value displayed for the
'Grand Total' is $1,924,680.24 . Si la hiérarchie d’attributs est déplacée vers la zone De filtre de ligne et que les
conditions de filtre sont de nouveau modifiées afin que le filtre de ligne contienne maintenant les membres et ,
la valeur renvoyée est [Product].[Category] [Product].[Category].[Accessories] $156 542,47 et la requête
MDX générée par Excel est identique à la deuxième requête [Product].[Category].[Clothing] MDX ci-dessus.
Ce comportement est inhérent au produit. Les membres par défaut sont déterminés lors de l’exécution de la
requête en fonction des membres disponibles dans l’espace de cube. Si le membre par défaut d’une hiérarchie
se trouve dans le slicer qui définit l’espace de cube utilisé pour l’exécution des requêtes et que la hiérarchie n’est
pas explicitement incluse sur l’un des axes, les valeurs associées au membre par défaut sont renvoyées. Si le
membre par défaut d’une hiérarchie se trouve dans le slicer qui définit l’espace de cube utilisé pour l’exécution
des requêtes et que la hiérarchie est explicitement incluse sur l’un des axes, les valeurs des membres individuels
sont renvoyées et la valeur agrégée des membres s’affiche sous la forme d’un total général . Si le membre par
défaut d’une hiérarchie n’est pas dans le slicer qui définit l’espace de cube utilisé pour l’exécution des requêtes et
que la hiérarchie n’est pas explicitement incluse sur l’un des axes, les valeurs agrégées des membres du slicer
sont renvoyées en tant que membre « ALL ».
Solution de contournement
Pour contourner ce comportement, filtrez les hiérarchies avec DefaultMembers définies sur un membre autre
que le membre « ALL » sur lignes ou colonnes.
Problème de performances d’écriture écriture
lorsque la sécurité des cellules est activée dans SQL
Server Analysis Services
15/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème de performances d’écriture écriture qui se produit lorsque la
sécurité des cellules est activée dans SQL Server Analysis Services.
Version du produit d’origine : SQL Server 2012 Analysis Services
Numéro de la ko d’origine : 2747616
Symptômes
Supposons que vous exécutez Microsoft SQL Server Analysis Services (SSAS) sous un rôle pour lequel la
sécurité des cellules est activée. Lorsque vous essayez d’exécuter une instruction MDX (Multidimensional
Expressions) UPDATE CUBE, l’exécution de l’instruction peut prendre plus de temps que pour un rôle pour lequel
la sécurité des cellules n’est pas activée.
Cause
Ce comportement est inhérent au produit. Lorsque la sécurité des cellules est activée, le moteur Analysis
Services exécute les requêtes en mode cellule par cellule. Si l’opération d’écriture écriture/écriture effectue une
allocation à un niveau élevé, l’espace des cellules de niveau feuille est important.
NOTE
L’espace n’est pas le nombre de lignes dans la table de faits. L’espace est l’espace complet entre les jointeurs de tous les
attributs de granularité de dimension. Il faut beaucoup de temps pour éumer ces cellules une par une afin de vérifier la
sécurité des cellules.
Solution de contournement
Pour contourner ce problème, appliquez l’une des méthodes ci-dessous.
Méthode 1
Placez les mesures qui doivent être sécurisées dans un cube distinct et implémentez la sécurité d’écriture
au niveau du cube sous votre rôle.
NOTE
Les performances lorsque vous utilisez cette méthode sont aussi rapides que lorsque la requête s’exécute sous un
rôle d’administrateur. Toutefois, la conception de votre cube devient complexe et vous devez créer des cubes
virtuels pour utiliser des groupes de mesures liés afin de retourner les différentes mesures dans une seule requête
MDX. En outre, lorsque vous effectuez l’opération d’écriture écriture, vous devez créer une requête MDX qui utilise
le nom de cube correct en fonction de la mesure d’écriture.
Méthode 2
Effectuez l’opération d’écriture en écriture avec le niveau de granularité le plus bas d’un membre. Vous ne
pouvez pas allouer de nombreux membres de granularité détaillés.
NOTE
Vous de devez peut-être créer des membres factices dans les tables de dimension qui sont marqués comme
membres d’ajustement dans chaque dimension, pour prendre en charge l’opération d’écriture.
« #N/A » renvoie lorsque vous exécutez une
requête à plusieurs sous-SQL Server Analysis
Services
15/08/2021 • 2 minutes to read
Cet article présente un problème qui se produit lorsque vous exécutez une requête à plusieurs sous-sous-SQL
Server Analysis Services.
Version du produit d’origine : SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012
Numéro de la ko d’origine : 4100766
Symptômes
Prenons l’exemple du scénario suivant :
Vous installez Analysis Services en mode sur une instance de Multidimensional SQL Server 2012, SQL
Server 2014, SQL Server 2016 ou SQL Server 2017.
Il existe une base de données dans cette instance.
Vous créez un rôle avec une autorisation de lecture de sécurité des cellules pour cette base de données.
Vous exécutez une requête qui contient un sous-choix avec plusieurs membres.
Dans ce cas, vous obtenez des valeurs de cellule #N/A pour la mesure si le sous-contrôle multi-membres est
inférieur ou inférieur à la granularité et si les membres de niveau supérieur dont les valeurs sont affectées par
les autorisations de lecture de sécurité des cellules leur sont appliquées.
Cause
Ce comportement est inhérent au produit. Cette conception permet de s’assurer que la base de données
n’expose pas de valeurs de cellules réelles qui sont sécurisées par la sécurité des cellules.
S’applique à
SQL Server 2012
SQL Server 2012 Analysis Services
SQL Server 2014
SQL Server 2014 Business Intelligence
SQL Server 2016
SQL Server 2017 sur Windows
Can’t start SQL Server Analysis Services clustered
instance after changing service account
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous modifiez le compte de service qui a été
spécifié lors de la configuration SQL Server à un nouveau compte de domaine à l’aide de Gestionnaire de
configuration SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 4041637
Symptôme
Supposons que vous avez des instances en cluster dans Microsoft SQL Server 2008 ou dans SQL Server 2008
R2. Lorsque vous modifiez le compte de service dans Gestionnaire de configuration SQL Server du compte
spécifié lors de la configuration d’SQL Server à un nouveau compte de domaine, vous recevez un message
d’erreur semblable au suivant dans Gestionnaire de configuration SQL Server :
En outre, vous ne pouvez pas démarrer l’instance SQL Server cluster Analysis Services. Lorsque vous vérifiez le
journal des événements système, vous voyez le message d’erreur suivant :
Le service MSSQLServerOLAPService n’a pas pu se connecter comme avec le mot de passe actuellement
configuré en raison de <Domain> <New account> l’erreur suivante :
Échec de la logon: l’utilisateur n’a pas reçu le type de logon sur cet ordinateur.
Service : MSSQLServerOLAPService
Domaine et compte :<Domain><New account>
Ce compte de service n’a pas le droit d’utilisateur requis « Se connecter en tant que service ».
Action de l'utilisateur
Affectez « Se connecter en tant que service » au compte de service sur cet ordinateur. Vous pouvez utiliser
l’Paramètres de sécurité locale (Secpol.msc) pour ce faire. Si cet ordinateur est un nœud dans un cluster,
vérifiez que ce droit d’utilisateur est affecté au compte de service de cluster sur tous les nœuds du cluster.
Si vous avez déjà affecté ce droit d’utilisateur au compte de service et que le droit d’utilisateur semble être
supprimé, vérifiez auprès de votre administrateur de domaine si un objet de stratégie de groupe associé à ce
nœud peut supprimer le droit.
NOTE
Le service indiqué précédemment est pour l’instance par défaut. Pour une instance nommée, le nom du service est
MSOLAP$ <instance name> .
Cause
Ce problème se produit car lorsque vous définissez l’instance en cluster d’Analysis Services, le SID du service
n’est pas autorisé à se connecter en tant que droit utilisateur de stratégie locale de ser vice
(SeServiceLogonRight).
Résolution
Pour résoudre ce problème, accordez au service Analysis Services SQL Server sid l’utilisateur de la stratégie
locale se connecter en tant que service.
Pour une instance par défaut de SQL Server Analysis Services, le nom du SID de service est
NT SERVICE\MSSQLServerOLAPService .
Pour une instance nommée, le nom est NT SERVICE\MSOLAP$\<instance name> .
Pour accorder au siD de ser vice le droit d’ouvrir une session en tant que service, suivez les étapes suivantes :
1. Ouvrez la stratégie de sécurité locale en exécutant la commande Secpol.msc.
2. Développez les stratégies locales.
3. Cliquez sur Attribution des droits d’utilisateur.
4. Dans le volet droit, cliquez avec le bouton droit sur Ouvrir une session en tant que ser vice, puis cliquez
sur Propriétés.
5. Cliquez sur Ajouter un utilisateur ou un groupe.
6. Cliquez sur le bouton Emplacements, sélectionnez le nom du serveur, puis cliquez sur OK.
7. Dans Entrez les noms d’objets à sélectionner, tapez NT SERVICE\MSSQLServerOLAPService, puis
cliquez sur OK .
NOTE
Pour une instance nommée, utilisez plutôt MSOLAP$\<instance name> .
8. Cliquez sur OK .
Vous devez répéter ces étapes pour tous les nodes dans le cluster.
Plus d’informations
This issue only affects clustered instances of Analysis Services for SQL Server 2008 and SQL Server 2008 R2.
Pour SQL Server 2012 et les versions ultérieures du programme, vous ne pouvez pas reproduire ce problème.
Erreur (la clé donnée n’était pas présente dans le
dictionnaire) et l’installation SQL Server FCI échoue
sur une VM Azure dans Server 2019
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’installer une instance de
cluster de Microsoft SQL Server (FCI) dans Windows Server 2019 sur une machine virtuelle (VM) Microsoft
Azure.
S’applique à : SQL Server VM - Windows, Windows Server 2019
Numéro de la ko d’origine : 4525647
Symptômes
Lorsque vous essayez d’installer une instance en cluster de Microsoft SQL Server (FCI) dans Windows Server
2019 sur une machine virtuelle Microsoft Azure, l’installation échoue et vous recevez le message d’erreur
suivant :
Dans ce cas, vous pouvez voir les informations supplémentaires suivantes dans le fichier journal Details.txt dans
le dossier SQL Server’installation :
Cause
Un nouveau commutateur, ManagementPointNetworkType , qui peut être appelé par les cmdlets PowerShell
pour FailoverClusters est introduit dans Windows Server 2019. Vous pouvez utiliser les options suivantes pour
le nouveau commutateur.
PA RA M ÈT RE SW ITC H UT IL ISAT IO N
Si vous créez le cluster Windows à l’aide de l’outil Windows Cluster Manager, l’outil définit le paramètre de
commutateur sur Automatique . Étant donné que vous travaillez sur une VM Azure, le commutateur utilise
plutôt un nom de réseau distribué.
Vous pouvez le vérifier en exécutant la commande PowerShell suivante :
C:\windows\system32> Get-clusterresource
Résolution
Pour résoudre ce problème, vous pouvez supprimer le cluster actuel, puis le créer à nouveau à l’aide d’une
commande PowerShell qui a le paramètre suivant :
managementpointnetworktype singleton
SQL Server 2012 DQS Export to 64-bit .xls Excel file
fails with error
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où le téléchargement de fichier a échoué, vérifiez que le fichier de
destination d’exportation n’existe pas déjà une erreur se produit.
S’applique à : SQL Server 2012 Business Intelligence, SQL Server 2012 Developer, SQL Server 2012 Enterprise
Numéro de la ko d’origine : 2712972
Symptômes
Lorsque vous utilisez SQL Server Services de qualité des données 2012, sur un ordinateur sur lequel Microsoft
Excel 64 bits est installé, envisagez le scénario suivant :
Vous utilisez Data Quality Client pour exécuter un projet nettoyage ou mise en correspondance des
données.
Vous devez effectuer les étapes nécessaires pour accéder à la page d’exportation finale du projet de
qualité des données.
Vous tentez d’exporter des résultats nettoyés, vers le fichier de Excel de destination.
Cliquez sur le bouton Parcourir pour spécifier un fichier Excel existant vers le fichier à exporter.
Vous spécifiez le type de fichier d’exportation et pointez vers Excel 97-2003 Workbook (*.xls) un
fichier avec l’extension .xls exporter.
Cliquez sur le bouton Ouvrir pour choisir le fichier de destination.
Cliquez sur le bouton Expor ter pour exécuter l’action d’exportation.
Une erreur s’affiche :
Échec du téléchargement du fichier, vérifiez que le fichier de destination d’exportation n’existe pas déjà.
Cause
Dans ce scénario, l’exportation vers Excel type de fichier 2003-2007 *.xls échoue, ce qui est un bogue.
DQS doit être en mesure d’exporter vers *.xls lorsque Microsoft Excel 64 bits est installé sans erreur.
Résolution
Informations sur le Service Pack SQL Server 2012
Pour résoudre ce problème, obtenez le dernier Service Pack pour SQL Server 2012. Pour plus d’informations,
voir KB2755533 -Comment obtenir le dernier Service Pack pour SQL Server 2012 .
Vous pouvez désormais parcourir et spécifier le fichier d’exportation qui possède l’extension *.xls et exécuter
l’action Exporter sans l’erreur, lorsque Excel 64 bits est installé sur l’ordinateur.
Plus d’informations
Lorsque vous utilisez Microsoft Excel 2007 ou 2010 64 bits sur l’ordinateur sur lequel Data Quality Client est
installé, vous pouvez exporter uniquement vers le format de fichier *Excel 2003-2007 *.xls à compatibilité avec
les rétrogradations, ou choisir un autre type de destination tel que SQL Server ou CSV (fichier texte délimité par
des virgules).
Il est attendu que SQL Server 2012 Data Quality Client ne puisse pas exporter des projets de données vers le
nouveau format de fichier *.xlsx lorsque la version Microsoft Excel installée est 64 bits. Ce comportement est
voulu par la conception même du produit.
Lorsque vous utilisez Microsoft Excel 2007 ou 2010 32 bits sur l’ordinateur sur lequel Data Quality Client est
installé, vous pouvez exporter vers.xlsx*.xls ou choisir un autre type de destination tel que SQL Server ou * CSV.
Données d’analyse à l’aide de connaissances DQS (internes)
Exécuter une Project
Pour afficher la version de Excel et détecter s’il s’agit d’une version 64 bits ou 32 bits.
Dans Excel 2007
Cliquez sur le bouton Office forme circulaire dans le coin supérieur gauche. Choisissez le bouton
Options, affichez la page références. Afficher la section à propos de.
Dans Excel 2010
Cliquez sur l’onglet Fichier sur le ruban, cliquez sur la page d’aide et notez la version dans le volet droit
sous l’en-tête À propos Microsoft Excel.
Le numéro de version et l’architecture seront répertoriés, par exemple (32 bits) ou (64 bits).
SQL Server 2012 DQSInstaller.exe'accès au dossier
TMP peut échouer
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où le chemin d’accès du dossier temporaire contient un caractère
ANSI accentué ou spécial.
S’applique à : SQL Server 2012 Business Intelligence, SQL Server 2012 Developer, SQL Server 2012 Enterprise
Numéro de la ko d’origine : 2702283
Symptômes
Le programme d SQL Server du programme d’installation des services de qualité des données 2012
DQSInstaller.exe peut échouer sur les ordinateurs dont le chemin d’accès au dossier temporaire contient un
caractère ANSI accentué ou spécial.
Par exemple, pour Windows utilisateurs avec des caractères accentués dans le nom d’utilisateur, le dossier
temporaire peut contenir des caractères é accentués, tels que C:\Users\Us é rNam é\AppData\Local\Temp\ .
Vous pouvez noter les erreurs suivantes sur la console lors de l’exécution de DQSInstaller.exe, ou dans le journal
de sortie DQSInstaller.exe (l’emplacement par défaut est ) CREATE ASSEMBLY a échoué, car il n’a pas pu ouvrir le
fichier physique Enregistrer les assemblys
C:\Program Files\Microsoft SQL Server\MSSQL11.SQL2012\MSSQL\Log\DQS_install.log Microsoft.Practices :
Cause
Le dossier temporaire utilisé par DQSInstaller.exe est spécifié par la variable d’environnement TMP.
DQSInstaller extrait les fichiers d’assembly et les scripts dans un dossier temporaire avec un nom aléatoire sous
le dossier temporaire. Si ce chemin d’accès temporaire contient des caractères spéciaux, DQSInstaller n’exécute
pas correctement les caractères accentués ou spéciaux lors de l’exécution de scripts et d’assemblys.
Résolution
Le moyen le plus simple de résoudre le problème consiste à lancer l’invite de commandes en tant
qu’administrateur (l’élever si le contrôle UAC est activé), à remplacer temporairement l’emplacement TMP par
une variable TMP locale, puis à exécuter le DQSInstaller.exe.
Dans cet exemple de syntaxe d’invite de commandes, nous allons créer un répertoire (md) c:\temp, puis définir
la variable TMP sur cet emplacement, puis modifier le répertoire dans le dossier où DQSInstaller.exe est présent,
puis exécuter le DQSInstaller.exe (sans commutateurs supplémentaires).
md c:\temp
SET tmp=c:\temp
cd "c:\Program Files\Microsoft SQL Server\MSSQL11.MSSQLServer\MSSQL\Binn\"
DQSInstaller.exe
Plus d’informations
Pour visiter le dossier TMP dans l’Explorateur Windows, vous pouvez ouvrir l’espace réservé %tmp% :
Démarrer >'> %tmp%
Pour tester la variable d’environnement TMP actuelle, vous pouvez utiliser la syntaxe SET à partir de l’invite de
commandes ou la syntaxe d’écho :
SET TMP
echo %tmp%
Pour modifier définitivement les variables d’environnement TMP et TEMP, voir Comment déplacer les répertoires
TEMP et TMP.
Erreur (échec de la phase de pré-exécution du
nettoyage DQS) lors de l’exécution de la
transformation nettoyage DQS SQL Server 2012
13/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème où une erreur est consignée dans le journal SSIS SQL Server
2012.
S’applique à : SQL Server 2012 Developer, SQL Server 2012 Enterprise, SQL Server 2012 Standard
Numéro de la ko d’origine : 2715968
Symptômes
Prenons l’exemple du scénario suivant :
Vous utilisez la transformation nettoyage des services de qualité des données (DQS) dans une Flow de
données du service SQL Server-Integrated (SSIS) pour s’en servir dans Microsoft SQL Server 2012.
Vous définissez le paramètre « Configurer la sortie d’erreur » de la transformation nettoyage DQS sur « Ligne
de redirection ». Toutefois, vous ne spécifiez pas d’emplacement pour enregistrer la sortie d’erreur.
Vous exécutez le package SSIS.
Dans ce scénario, le message d’erreur suivant est consigné dans le journal SSIS :
Cause
Ce problème se produit parce qu’une destination n’est pas définie pour la sortie d’erreur générée pour les lignes
qui ne répondent pas aux critères et règles de domaine DQS.
Solution de contournement
Pour résoudre ce problème, utilisez l’une des méthodes suivantes.
Méthode 1
Si vous ne souhaitez pas rediriger les lignes d’erreur, suivez les étapes suivantes pour résoudre le
problème :
1. Ouvrez le composant DQS dans l’Éditeur de transformation de nettoyage DQS.
2. Sélectionnez Composant d’échec dans la liste de listes de listes de sortie d’erreur Configurer en bas de
l’Éditeur de transformation de nettoyage DQS.
Méthode 2
Si vous devez rediriger vos lignes d’erreur, vous devez vous assurer que vous avez un emplacement de
destination pour les erreurs à rediriger.
SQL Server de démarrage sur un serveur autonome
13/08/2021 • 3 minutes to read
Il existe plusieurs raisons pour lesquelles SQL Server service peut ne pas démarrer. À un niveau élevé, les causes
peuvent être classées dans les catégories suivantes :
Problèmes qui affectent le compte configuré pour exécuter le service SQL Server service
Bases de données système inaccessibles
Dépendances manquantes
Configuration incorrecte du service SQL Server service
Problèmes affectant la configuration du certificat
Cette rubrique vous aide à résoudre les problèmes les plus SQL Server de démarrage dans ces catégories sur un
serveur autonome.
S’applique à : SQL Server
Résumé
SQL Server pouvez pas démarrer et vous recevez un message d’erreur lorsque vous utilisez l’un des outils
suivants pour démarrer le service SQL Server service :
Gestionnaire de configuration SQL Server
SQL Server Management Studio
Windows Gestionnaire de contrôle de service
Windows invite de commandes
NOTE
Le message d’erreur peut varier légèrement en fonction de l’outil que vous utilisez. Toutefois, en général, les ID
d’événement, les numéros d’erreur et les descriptions sont très similaires.
NOTE
Tous ces dépannages utilisent le Gestionnaire de contrôle de service pour identifier l’erreur de démarrage et utilisent
Gestionnaire de configuration SQL Server pour fournir une résolution.
En règle générale, vous devez être administrateur sur l’ordinateur SQL Server résoudre les problèmes.
Le service ou le groupe de dépendances n’a pas réussi à Le service SQL Server et le service d’agent SQL Server ne
démarrer. parviennent pas à démarrer sur un serveur autonome
Windows n’a pas pu démarrer SQL Server service Échec de l’SQL Server de l’SQL Server ne démarre pas
(MSSQLSERVER) sur l’ordinateur local. correctement
Erreur 1069 : le service n’a pas commencé en raison d’un
échec d’accès.
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) SQL Server ne peut pas démarrer si tous les protocoles sont
sur l’ordinateur local. Pour plus d’informations, examinez le désactivés
journal des événements système.
S’il s’agit d’un service autre que Microsoft, contactez le
fournisseur du service et reportez-vous au code d’erreur
spécifique au service 13.
Windows n’a pas pu démarrer SQL Server service L’ID d’événement 17058 et SQL Server ne démarre pas
(MSSQLSERVER) sur l’ordinateur local.
Erreur 1067 : Le processus s’est terminé de manière
inattendue.
Windows n’a pas pu démarrer SQL Server service L’ID d’événement 7000 et SQL Server ne démarre pas
(MSSQLSERVER) sur l’ordinateur local.
Erreur 2 : le système ne peut pas trouver le fichier spécifié.
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) Erreur spécifique au service 17113 lorsque vous démarrez
sur l’ordinateur local. Pour plus d’informations, examinez le SQL Server service
journal des événements système.
S’il s’agit d’un service autre que Microsoft, contactez le
fournisseur du service et reportez-vous au code d’erreur
spécifique au service 17113
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) L’ID d’événement 1814 et SQL Server ne démarre pas
sur l’ordinateur local. Pour plus d’informations, examinez le
journal des événements système.
S’il s’agit d’un service autre que Microsoft, contactez le
fournisseur du service et reportez-vous au code d’erreur
spécifique au service 1814.
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) L’ID d’événement 33565 et SQL Server ne démarre pas
sur l’ordinateur local. Pour plus d’informations, examinez le après l’activer
journal des événements système.
S’il s’agit d’un service autre que Microsoft, contactez le
fournisseur du service et reportez-vous au code d’erreur
propre au service 2146885628.
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) L’ID d’événement 33566 et SQL Server ne démarre pas
sur l’ordinateur local. Pour plus d’informations, examinez le après l’activer
journal des événements système.
S’il s’agit d’un service autre que Microsoft, contactez le
fournisseur du service et reportez-vous au code d’erreur
spécifique au service 13.
Windows n’a pas pu démarrer SQL Server service Erreur « Accès refusé » et SQL Server ne démarre pas
(MSSQLSERVER) sur l’ordinateur local.
Erreur 5 : l’accès est refusé.
Référence
SQL Server service ne peut pas démarrer après avoir configuré une instance pour utiliser un certificat Secure
Sockets Layer
Erreur « Accès refusé » et SQL Server ne démarre
pas
13/08/2021 • 2 minutes to read
Symptômes
Lorsque vous configurez le service Microsoft SQL Server pour qu’il s’exécute sous un compte qui ne contient
pas suffisamment de privilèges sur le dossier d’installation de SQL Server, SQL Server ne démarre pas et
renvoie un message d’erreur semblable à ce qui suit, en fonction de la façon dont vous essayez de démarrer le
service :
À l’aide de l’applet services :
Windows n’a pas pu démarrer SQL Server service (MSSQLSERVER) sur l’ordinateur local.
Erreur 5 : l’accès est refusé.
Résolution
1. Ouvrez le journal système et vérifiez que vous voyez une entrée de message d’erreur semblable à ce qui
suit :
2. À l’Microsoft SQL Server Configuration Manager ou service Control Manager, notez le compte de service
pour SQL Server service.
3. Accédez au dossier SQL Server d’installation (par exemple) et faites les choses suivantes pour vérifier
l’accès effectif C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Binn au compte SQL
service :
a. Cliquez avec le bouton droit sur le fichier ou le dossier, sélectionnez Propriétés, puis sélectionnez
l’onglet Sécurité.
b. Sélectionnez Avancé, sélectionnez l’onglet Accès effectif, puis sélectionnez Un utilisateur à taper dans
le compte SQL Service ou sélectionnez-le dans la liste.
c. Sélectionnez Afficher un accès efficace pour comprendre et résoudre le problème d’autorisations.
Par exemple, si l’autorisation Refuser est ajoutée à l’utilisateur ou au groupe dont le compte de service
SQL Server est membre, supprimez l’autorisation Refuser et redémarrez le service SQL Server.
NOTE
Vous pouvez également utiliser l’outil Process Monitor pour identifier et isoler les problèmes d’autorisation. La
capture d’écran suivante d’un exemple de sortie du moniteur de processus montre le compte de service
\sqlsrvlogin SQL Server générant une erreur <DomainName> d’accès refusé.
Référence
Autorisations de service
Erreur spécifique au service 17113 lorsque vous
démarrez SQL Server service
13/08/2021 • 3 minutes to read
Symptômes
Dans Microsoft SQL Server, la base de données maître enregistre toutes les informations au niveau du système.
La base de données maître enregistre également l’existence de toutes les autres bases de données,
l’emplacement de ces fichiers de base de données et les informations d’initialisation de SQL Server. Par
conséquent, SQL Server ne peut pas démarrer si la base de données maître n’est pas disponible.
Lorsque vous essayez de démarrer SQL Server dans ce scénario, le service SQL Server ne démarre pas et vous
recevez le message d’erreur suivant, en fonction de la façon dont vous essayez de démarrer le service :
À l’aide de l’applet services :
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) sur l’ordinateur local. Pour plus
d’informations, examinez le journal des événements système. S’il s’agit d’un service autre que
Microsoft, contactez le fournisseur du service et reportez-vous au code d’erreur spécifique au service
17113.
Résolution
1. Vérifiez SQL Server journal des erreurs et vérifiez que la cause est l’inaccessibilité de la base de données
maître. Par exemple, vous pouvez voir une entrée de journal qui ressemble à ce qui suit :
2. Vérifiez l’emplacement du fichier master.mdf. Si le chemin d’accès est incorrect, corrigez-le à l’aide
Gestionnaire de configuration SQL Server’Éditeur du Registre.
a. À l’aide Gestionnaire de configuration SQL Ser ver :
Sélectionnez Démarrer, pointez sur Tous les programmes, pointez sur Microsoft SQL Ser ver,
pointez sur Outils de configuration, puis sélectionnez Gestionnaire de configuration SQL
Ser ver .
NOTE
Comme Gestionnaire de configuration SQL Server est un logiciel en snap-in pour le programme Microsoft
Management Console et non un programme autonome, Gestionnaire de configuration SQL Server
n’apparaît pas en tant qu’application dans les nouvelles versions de Windows. Pour ouvrir Gestionnaire de
configuration SQL Server dans Windows 10 ou 8, suivez les étapes de votre version de Windows.
Windows 10 :
a. Sélectionnez Page de démarrage, entrez SQLServerManager13.msc (pour SQL Server
2016 (13.x)). Pour les versions précédentes SQL Server, remplacez 13 par le nombre
approprié.
b. Sélectionnez SQLSer verManager13.msc pour ouvrir Configuration Manager. Pour
épingler le Gestionnaire de configuration à la page de démarrage ou à la barre des
tâches, cliquez avec le bouton droit sur SQLSer verManager13.msc, puis sélectionnez
Ouvrir l’emplacement du fichier.
c. Dans la Windows’Explorateur de fichiers, cliquez avec le bouton droit sur
SQLSer verManager13.msc, puis sélectionnez Épingler à l’démarrer ou épingler à la
barre des tâches.
Windows 8 :
Appuyez Windows touche de logo +Q pour ouvrir l’icône Rechercher. Sous Applications,
entrez SQLServerManager <version_number> .msc (par exemple,
SQLServerManager13.msc), puis appuyez sur Entrée.
a. Dans Gestionnaire de configuration SQL Server, sélectionnez SQL Ser ver Ser vices.
b. Dans le volet droit, cliquez avec le bouton droit sur SQL Ser ver ( <instance_name> ),
puis sélectionnez Propriétés.
c. Sous l’onglet Paramètres de démarrage, sélectionnez la ligne qui commence par -d dans
la section Paramètres existants. La valeur actuelle est modifiable. Spécifiez une zone de
paramètre de démarrage. Corrigez le chemin d’accès pour refléter la valeur correcte,
sélectionnez Mettre à jour, puis sélectionnez OK pour enregistrer les modifications.
d. Redémarrez le service SQL Server service.
Pour plus d’informations sur la configuration des options de démarrage, voir Configure
Server Startup Options (Gestionnaire de configuration SQL Server).
Pour plus d’informations sur les options de démarrage du service de moteur de base de
données, voir Moteur de base de données Options de démarrage du service.
b. À l’aide de l’Éditeur du Registre :
a. Accédez à la HKLM\Software\Microsoft\MicrosoftSQL Server\MSSQL{nn}.MyInstance ruche pour
votre instance SQL serveur.
b. Recherchez la valeur SQL Arg0 sous MSSQLServer\Parameters .
c. Modifiez la valeur pour refléter le chemin d’accès correct de la base de données maître.
d. Redémarrez le SQL Server service.
3. Si la base de données maître existe mais qu’elle est inutilisable, vous pouvez la renvoyer à un état
utilisable à l’aide de l’une des méthodes suivantes :
Vérifiez les autorisations du compte de service sur le dossier où se trouve le fichier.
Restituer la base de données maître à partir d’une sauvegarde de base de données complète si
vous pouvez démarrer l’instance du serveur.
Si les dommages du serveur sur la base de données principale vous empêchent de démarrer SQL
Server, ré reconstruire la base de données maître.
Cau t i on
Symptômes
Si tous les protocoles réseau d’une instance Microsoft SQL Server sont désactivés, SQL Server ne démarre pas
et vous recevez le message d’erreur suivant, en fonction de la façon dont vous essayez de démarrer le service :
À l’aide de l’applet services :
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) sur l’ordinateur local. Pour plus
d’informations, examinez le journal des événements système.
S’il s’agit d’un service autre que Microsoft, contactez le fournisseur du service et reportez-vous au
code d’erreur spécifique au service 13.
Résolution
Voici comment résoudre ce problème :
1. Vérifiez le journal des événements système et vérifiez que vous voyez l’entrée d’événement suivante :
2. Consultez le SQL Server des erreurs et vérifiez que vous voyez des entrées de message d’erreur
semblables à ce qui suit :
<Datetime> spid9s Server name is '<ServerName>'. This is an informational message only. No user
action is required.
<Datetime> spid17s Error: 17182, Severity: 16, State: 1.
<Datetime> spid17s TDSSNIClient initialization failed with error 0xd, status code 0x4. Reason:
**All protocols are disabled. The data is invalid**.
<Datetime> spid17s Error: 17182, Severity: 16, State: 1.
<Datetime> spid17s TDSSNIClient initialization failed with error 0xd, status code 0x1. Reason:
Initialization failed with an infrastructure error. Check for previous errors. The data is invalid.
.
.
<Datetime> spid17s Error: 17826, Severity: 18, State: 3.
<Datetime> spid17s Could not start the network library because of an internal error in the
network library. To determine the cause, review the errors immediately preceding this one in the
error log.
<Datetime> spid17s Error: 17120, Severity: 16, State: 1.
<Datetime> spid17s SQL Server could not spawn FRunCommunicationsManager thread. Check the SQL
Server error log and the operating system error log for information about possible related problems.
3. Après avoir vérifié le problème mentionné dans la section Symptômes, utilisez le nœud configuration
réseau SQL Server de Gestionnaire de configuration SQL Server pour activer les protocoles réseau
requis. Ensuite, redémarrez le service SQL Server service.
NOTE
Si vous ne souhaitez pas activer les connexions distantes à votre instance SQL Server, vous pouvez activer
uniquement le protocole Mémoire partagée, puis redémarrer le service SQL Server.
Vous pouvez également valider les paramètres de la bibliothèque réseau à l’aide des clés de Registre
suivantes
Si la Enabled valeur est définie sur zéro, la bibliothèque réseau correspondante est désactivée.
Mémoire partagée :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Sm\Enabled
TCP/IP :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp\Enabled
Canaux nommés :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Np\Enabled
Le service SQL Server et le service d’agent SQL
Server ne parviennent pas à démarrer sur un
serveur autonome
15/08/2021 • 2 minutes to read
Cet article vous aide à résoudre les problèmes où le service SQL Server et le service d’agent SQL Server
peuvent ne pas démarrer sur un serveur autonome.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 307288
Symptômes
Problème 1 : sur un serveur autonome, le démarrage du service MSSQLSERVER peut échouer et vous
recevez le message d’erreur suivant :
Une erreur 1068 (le service ou le groupe de dépendances n’a pas réussi à démarrer)) s’est produite
lors de l’opération de service sur le service MSSQLServer.
Problème 2 : de même, le service SQLServerAgent peut également ne pas démarrer et vous recevez le
message d’erreur suivant :
Une erreur 1068 (le service ou le groupe de dépendances n’a pas réussi à démarrer)) s’est produite
lors de l’opération de service sur le service SQLServerAgent.
Les problèmes 1 et 2 se produisent lorsque les deux conditions suivantes sont vraies :
L’ordinateur serveur se trouve dans un groupe de travail et ne fait pas partie d’un domaine.
Les services MSSQLSERVER et SQLServerAgent sont tous deux définies pour utiliser un compte de
domaine pour le démarrage.
Problème 3 : sur un serveur membre du domaine, le service MSSQLSERVER peut ne pas démarrer au
démarrage du serveur et vous recevez le message d’erreur suivant :
Le service MSSQLSERVER n’a pas pu se connecter en tant que domaine\mssqlsvc avec le mot de
passe actuellement configuré en raison de l’erreur suivante : Source : NetLogon Description : Il n’existe
actuellement aucun serveur de connexion disponible pour le service de demande de connexion. Le
service MSSQLSERVER s’est terminé de manière inattendue.
Cause
Le problème 1 et le problème 2 se produisent parce que le serveur est un ordinateur autonome, que le service
NetLogon ne démarre pas sur le serveur, de ce fait, aucune authentification d’authentification à l’échelle du
domaine n’est possible.
Le problème 3 se produit car SQL Server services tentent de démarrer avant le démarrage du service NetLogon.
Résolution
Pour résoudre les problèmes 1 et 2, suivez les étapes suivantes :
Modifiez le compte de démarrage de MSSQLSERVER et de SQLServerAgent pour utiliser le compte
système local.
Redémarrez le serveur.
Pour résoudre le problème 3, utilisez les solutions de contournement suivantes :
Configurez le démarrage SQL Server sur un démarrage différé pour des serveurs Windows particuliers,
d’autres services Windows tels que NetLogon s’achèvent en premier et SQL Server démarre sans
problème.
Configurez le démarrage SQL Server pour qu’il réessaye, le démarrage peut être terminé lors de la
deuxième tentative de démarrage.
Modifiez la valeur de détection d’adresses en double (-Transmits) sur 1 pour toutes les interfaces réseau
sur le serveur. Pour plus d’informations, voir la commande Set-NetIPInterface.
Modifiez les options de récupération pour SQL Server et SQL Server services d’agent. Spécifiez
redémarrer le ser vice en tant qu’action pour les options de défaillance. Vous pouvez effectuer cette
option à partir de l’applet services des outils d’administration à l’aide des interfaces familières du
Gestionnaire de contrôle de service.
Si l’option de démarrage différé ne peut pas résoudre ce problème 3, vous pouvez ajouter les dépendances
suivantes au service SQL Server service :
Service d’aide Ip
Service serveur
Service de liste réseau
Vous pouvez ajouter les dépendances à l’aide de la commande suivante :
Plus d’informations
Sur un ordinateur autonome, le service NetLogon doit être définie pour le démarrage manuel.
Échec de l’SQL Server de l’SQL Server ne démarre
pas
13/08/2021 • 7 minutes to read
Ce problème se produit en raison d’un problème avec le compte de service lui-même ou les informations
actuellement enregistrées pour le compte de service.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 282254
Symptômes
Lorsque vous essayez de redémarrer Microsoft SQL Server ou l’agent SQL Server, le service ne démarre pas et
vous recevez le message d’erreur suivant, en fonction de la façon dont vous essayez de démarrer le service :
À l’aide de l’applet services :
Windows n’a pas pu démarrer SQL Server service (MSSQLSERVER) sur l’ordinateur local.
Erreur 1069 : le service n’a pas commencé en raison d’un échec d’accès.
Conditions préalables
Pour utiliser cet dépannage, ouvrez le journal des événements système et notez l’ID d’événement et la
description de l’événement associé à l’échec. Ensuite, utilisez les informations suivantes pour résoudre le
problème.
Service: MSSQLSERVER
Domain and account: <Account name>
This service account does not have the required user right "Log on as a service."
User Action
Assign "Log on as a service" to the service account on this computer. You can use Local Security Settings
(Secpol.msc) to do this.
If this computer is a node in a cluster, check that this user right is assigned to the Cluster service
account on all nodes in the cluster.
If you have already assigned this user right to the service account, and the user right appears to be
removed,
check with your domain administrator to find out if a Group Policy object associated with this node might
be removing the right.
Action de l’utilisateur
Vérifiez les autorisations attribuées au compte de service à l’aide de l’Paramètres de sécurité <Account Name>
locale (Secpol.msc).
1. Vérifiez ces droits selon les autorisations du serveur. Pour plus d’informations, voir Windows droits et
privilèges. Attribuez manuellement les autorisations manquantes.
2. Examinez le compte de service pour savoir s’il a reçu des autorisations Deny*. Supprimez les
autorisations Deny* du compte SQL service service, puis testez à nouveau. Par exemple, si le compte de
service a été affecté à l’insaisissable « Deny Service Logon » avec , révoquez le droit
SeDenyServiceLogonRight d’SQL Server. SeServiceLogonRight SeDenyServiceLogonRight
To ensure that the service is configured properly, use the Services snap-in in Microsoft Management Console
(MMC).
Action de l'utilisateur
1. Si SQL Server compte de démarrage est un compte d’utilisateur local sur l’ordinateur, ouvrez Gestion de
l’ordinateur (compmgmt.msc) et vérifiez que le compte de service est désactivé dans Groupes
d’utilisateurs & locaux. S’il est désactivé, activez le compte et redémarrez le service SQL Server service.
2. Si SQL Server de démarrage est un compte Windows domaine, vérifiez si le compte est désactivé dans
Utilisateurs et ordinateurs Active Directory. S’il est désactivé, activez le compte et redémarrez le service
SQL Server service.
To ensure that the service is configured properly, use the Services snap-in in Microsoft Management Console
(MMC).
Action de l'utilisateur
1. Si le compte de démarrage SQL Server est un compte d’utilisateur local sur l’ordinateur, ouvrez Gestion
de l’ordinateur (compmgmt.msc) et clear the User Must change the password at next logon
property for SQL Server Startup Account under Local Users & Groups . Ensuite, sélectionnez OK, puis
redémarrez le service SQL Server service.
2. Si le compte de démarrage SQL Server est un compte de domaine Windows, ouvrez Utilisateurs et
ordinateurs Active Directory, puis vérifiez que l’utilisateur doit modifier le mot de passe sur le compte de
démarrage SQL Server à la prochaine propriété d’ouverture de site activée.
3. Si la propriété de l’étape 2 est activée, vous devez effacer cette option ou vous connecter de manière
interactive à un client Windows, puis définir un nouveau mot de passe, puis mettre à jour le nouveau mot
de passe pour le service SQL Server à l’aide de l’outil Gestionnaire de configuration SQL Server.
To ensure that the service is configured properly, use the Services snap-in in Microsoft Management Console
(MMC).
Action de l'utilisateur
1. L’entrée du message d’erreur indique que le nom de connexion actuel ou le jeu de mots de passe est
incorrect. Pour vérifier la même chose, vous pouvez utiliser l’option Run-As Windows pour ouvrir une
fenêtre Windows invite de commandes, puis fournir les mêmes informations d’identification. Si cela
fonctionne sans problème, tapez soigneusement les informations d’identification dans Gestionnaire de
configuration SQL Server.
2. Si l’étape 1 échoue et signale le même problème, vous devez réinitialiser le mot de passe de la
Windows’utilisateur. Si le compte SQL Server démarrage est un compte d’utilisateur local sur l’ordinateur,
ouvrez Gestion de l’ordinateur (compmgmt.msc) et réinitialisez le mot de passe de l’utilisateur local. Si le
compte SQL Server de démarrage est un compte Windows domaine, ouvrez Utilisateurs et ordinateurs
Active Directory, puis modifiez les informations d’identification. Une fois les informations d’identification
mises à jour, revenir à Gestionnaire de configuration SQL Server, entrez les mêmes informations
d’identification, puis démarrez le service.
Tapez le mot de passe correct dans le compte SQL Server service sur l’ordinateur SQL Server hôte. Pour ce faire,
suivez les procédures de SCM Services - Modifierle mot de passe des comptes utilisés.
To ensure that the service is configured properly, use the Services snap-in in Microsoft Management Console
(MMC).
Action de l'utilisateur
1. Si SQL Server compte de démarrage est un compte d’utilisateur local sur l’ordinateur, ouvrez Gestion de
l’ordinateur (compmgmt.msc) et clear the Account is Locked Out checkbox for the SQL Server Startup
Account under Local Users & Groups . Ensuite, sélectionnez OK, puis redémarrez le service SQL Server
service.
2. Si SQL Server compte de démarrage est un compte de domaine Windows, ouvrez Utilisateurs et
ordinateurs Active Directory et vérifiez que la propriété Compte de démarrage SQL Server est verrouillée.
3. Si la propriété de l’étape 2 est activée, vous devez effacer cette option, définir un mot de passe fort et
utiliser les mêmes informations d’identification pour la configuration du compte de démarrage SQL
Server à l’aide de Gestionnaire de configuration SQL Server.
L’ID d’événement 17058 et SQL Server ne démarre
pas
15/08/2021 • 2 minutes to read
Symptômes
Si le service Microsoft SQL Server ne trouve pas le chemin d’accès configuré pour créer des journaux d’erreurs,
le service ne démarre pas et vous recevez le message d’erreur suivant, en fonction de la façon dont vous essayez
de démarrer le service :
À l’aide de l’applet services :
Windows n’a pas pu démarrer SQL Server service (MSSQLSERVER) sur l’ordinateur local.
Erreur 1067 : Le processus s’est terminé de manière inattendue.
Résolution
1. Consultez le journal des applications et vérifiez que vous voyez une entrée de message d’erreur
ressemblant à ce qui suit :
2. Vérifiez le chemin d’accès qui est définie pour le fichier ErrorLog à l’aide de Gestionnaire de configuration
SQL Server.
Vous pouvez également vérifier le chemin d’accès dans l’entrée de Registre suivante :
SO US- C L É DO N N ÉES
3. Essayez de copier le chemin d’accès, puis vérifiez manuellement dans Windows Explorer ou à l’invite de
commandes que vous pouvez accéder à la cible dans le chemin d’accès. (N’ignorez pas les fautes de
frappe, les caractères spéciaux et les problèmes de copier-coller.)
Voici un exemple de commande incorrect qui inclut une faute de frappe :
4. Mettez à jour le chemin d’accès à un dossier valide dans lequel le compte de démarrage SQL Server des
autorisations pour créer, lire, écrire et mettre à jour des fichiers.
5. Redémarrez le service SQL Server service.
L’ID d’événement 1814 et SQL Server ne démarre
pas
13/08/2021 • 2 minutes to read
Symptômes
Si le service Microsoft SQL Server ne peut pas créer le fichier Tempdb au démarrage, le service ne démarre pas
lorsque vous utilisez le Gestionnaire de contrôle de service et vous recevez le message d’erreur suivant :
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) sur l’ordinateur local. Pour plus d’informations,
examinez le journal des événements système.
S’il s’agit d’un service autre que Microsoft, contactez le fournisseur du service et reportez-vous au code
d’erreur spécifique au service 1814.
Cause
Ce problème peut se produire pour les raisons suivantes :
Le disque dur qui hébergeait Tempdb a été supprimé ou la lettre de lecteur a été modifiée pour une raison
quelconque.
Il existe des contraintes d’espace au niveau de la couche du système d’exploitation.
Résolution
1. Ouvrez le journal des applications et vérifiez que vous voyez des entrées de message d’erreur semblables
à ce qui suit :
Log Name: Application
Source: MSSQLSERVER
Date: <Datetime>
Event ID: 5123
Task Category: Server
Level: Error
Keywords: Classic
User: N/A
Computer: <Server name>
Description:
CREATE FILE encountered operating system error 3(The system cannot find the path specified.)
while attempting to open or create the physical file <FilePath>.
2. Pour résoudre le problème, déplacez le fichier Tempdb vers un autre emplacement à l’aide de la
procédure mentionnée dans la section Procédure de récupération d’échec de Move System Databases.
L’ID d’événement 33565 et SQL Server ne démarre
pas après l’activer
13/08/2021 • 2 minutes to read
Symptômes
Dans Microsoft SQL Server Configuration Manager, vous devez fournir un certificat côté serveur et activer le
chiffrement. Lorsque vous utilisez le Gestionnaire de contrôle de service pour démarrer le service SQL Server, le
service ne démarre pas et vous recevez le message d’erreur suivant :
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) sur l’ordinateur local. Pour plus d’informations,
examinez le journal des événements système.
S’il s’agit d’un service autre que Microsoft, contactez le fournisseur du service et reportez-vous au code
d’erreur propre au service 2146885628.
Résolution
1. Consultez le journal des événements d’application et vérifiez que vous voyez deux entrées d’événement
semblables à ce qui suit :
2. Si vous voyez les événements 26010 et 33565, suivez les étapes suivantes :
NOTE
Les deux événements indiquent que le compte de service SQL Server n’a pas d’autorisations sur le certificat qui
est provisioné dans Configuration Manager. Vous devez attribuer les autorisations requises au compte de
service pour résoudre ce problème.
Si vous ne voyez pas les événements 26010 et 33565, vous rencontrez peut-être un autre problème qui n’est
pas résolu dans cet article.
a. Sélectionnez > Démarrer l’exécuter, entrez mmc, puis ouvrez le logiciel en snap-in certificat
dans la console MMC.
b. Dans le menu Console, sélectionnez Ajouter/Supprimer un logiciel en un clin d’œil.
c. Sélectionnez > Ajouter des cer tificats, puis sélectionnez Ajouter à nouveau.
NOTE
Vous êtes invité à ouvrir le logiciel en snap-in pour l’utilisateur, le service ou le compte d’ordinateur actuel.
NOTE
Vos certificats installés sont dans le dossier Certificats dans le conteneur Personnel.
h. Cliquez avec le bouton droit sur le certificat, sélectionnez Toutes les tâches gérer les clés privées,
puis accordez des > autorisations complètes au compte SQL Server service.
Référence
Activer les connexions chiffrées au Moteur de base de données
L’ID d’événement 33566 et SQL Server ne démarre
pas après l’activer
13/08/2021 • 2 minutes to read
Symptômes
Dans Microsoft SQL Server Configuration Manager, vous devez fournir un certificat côté serveur et activer le
chiffrement. Toutefois, le service SQL Server ne démarre pas et vous recevez le message d’erreur suivant :
Windows n’a pas pu démarrer SQL Server (MSSQLSERVER) sur l’ordinateur local. Pour plus d’informations,
examinez le journal des événements système.
S’il s’agit d’un service autre que Microsoft, contactez le fournisseur du service et reportez-vous au code
d’erreur spécifique au service 13.
Résolution
1. Consultez le journal des applications et vérifiez que vous voyez deux entrées d’événement semblables à
ce qui suit :
NOTE
Cette erreur indique généralement que le certificat n’est pas provisionn par le biais de Configuration Manager. Elle
est mise en service en copiant manuellement la valeur d’empreinte numérique dans la clé de Registre suivante :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL15.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Certificate
Cette erreur se produit si des caractères non valides sont copiés dans la valeur de Registre.
d. Collez manuellement la nouvelle valeur ou retapez la valeur que vous avez provenant du fichier
texte.
e. Redémarrez le service SQL Server service.
L’ID d’événement 7000 et SQL Server ne démarre
pas
13/08/2021 • 2 minutes to read
Symptômes
Lorsque le fichier binaire Microsoft SQL Server (Sqlservr.exe) est renommé sur le système qui héberge le service
SQL Server, le service ne démarre pas et vous recevez le message d’erreur suivant, en fonction de la façon dont
vous essayez de démarrer le service :
À l’aide de l’applet services :
Windows n’a pas pu démarrer SQL Server service (MSSQLSERVER) sur l’ordinateur local.
Erreur 2 : le système ne peut pas trouver le fichier spécifié.
Résolution
1. Vérifiez le Windows système et vérifiez que vous voyez une entrée de message d’erreur semblable à ce
qui suit :
2. Go to the SQL Server installation folder and verify that it doesn’t contain the Sqlservr.exe file.
3. Résolvez le problème en réparant l’installation SQL Server’installation selon la procédure documentée
dans La réparation d’une installation SQL Server échec.
Les erreurs du système d’exploitation 1450 et 665
sont signalées pour les fichiers de base de données
lors de la création de DBCC CHECKDB ou de
capture instantanée de base de données
13/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème où les erreurs de système d’exploitation 1450 et 665 sont signalées
pour les fichiers de base de données pendant ou la création d’une capture instantanée de DBCC CHECKDB base de
données.
Version du produit d’origine : SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL
Server 2008
Numéro de la ko d’origine : 2002606
Symptômes
Sur un SQL Server, supposons que vous effectuez l’une des actions suivantes :
Vous créez une capture instantanée de base de données sur une base de données de grande taille. Après cela,
vous effectuez de nombreuses opérations de modification de données ou de maintenance dans la base de
données source.
Vous créez une capture instantanée de base de données sur une base de données miroir.
Vous exécutez une famille de commandes pour vérifier la cohérence d’une base de données de grande taille
et vous effectuez également un grand nombre de modifications de données DBCC CHECKDB dans cette base de
données.
Dans ce scénario, vous remarquez les erreurs suivantes signalées dans le journal des erreurs SQL Server en
fonction de l’environnement SQL Server’exécution.
Windows Ser ver 2003
Le système d’exploitation a renvoyé l’erreur 1450 (des ressources système insuffisantes existent pour
terminer le service demandé.) à SQL Server lors d’une écriture au décalage 0x00002a3ef96000 dans un
fichier avec gestion 0x0000000000000D5C. Il s’agit généralement d’une condition temporaire et le SQL
Server va continuer à réessayer l’opération. Si la condition persiste, une action immédiate doit être prise
pour la corriger.
Windows Ser ver 2008, Windows Vista et les versions ultérieures des systèmes d’exploitation
ser veur et client
Le système d’exploitation a renvoyé l’erreur 665 (L’opération demandée n’a pas pu être terminée en raison
d’une limitation du système de fichiers) à SQL Server pendant une écriture au 0x00002a3ef96000 de
décalage dans le fichier « Sam.mdf:MSSQL_DBCC18 ».
En plus de ces erreurs, vous pouvez également remarquer des erreurs de délai d’accès, comme illustré ci-
dessous :
En outre, vous pouvez également remarquer le blocage lorsque vous affichez différents affichages de gestion
dynamique (DMV) comme sys.dm_exec_requests , sys.dm_os_waiting_tasks etc.
Cause
Ce problème se produit si un grand nombre d’instances sont nécessaires pour gérer un fichier
ATTRIBUTE_LIST_ENTRY fortement fragmenté dans NFTS. Ce comportement est expliqué dans l’article de la Ko
suivant :
Un fichier fortement fragmenté dans un volume NTFS peut ne pas dépasser une certaine taille
Les fichiers fragmentés créés par SQL Server pour les captures instantanées de base de données peuvent être
fragmentés à ces niveaux lorsque de grandes quantités de modifications de données se produisent pendant la
durée de vie de ces fichiers instantanés.
Pour obtenir un arrière-plan complet de la façon dont SQL Server Engine utilise des fichiers peu nombreux
NTFS et d’autres flux de données, reportez-vous aux liens suivants :
How It Works: SQL Server 2005 Database Snapshots (Replica)
SQL Server signale l’erreur de système d’exploitation 1450, 1452 ou 665 (nouvelles tentatives)
Fonctionnement : nouveau SQL Server de fichiers dispersés (bases de données DBCC et capture
instantanée)
Fonctionnement des captures instantanées de base de données
DBCC CHECKDB (Transact-SQL) [Voir la section « Capture instantanée de base de données interne » ]
Nouvel événement étendu pour suivre les écritures dans le fichier de capture instantanée dispersée
Résolution
1. Décomposez la base de données de grande taille en fichiers plus petits. Par exemple, si vous avez un
fichier de données de 8 To, vous pouvez le décomposer en huit fichiers de données de 1 To. Voici les
étapes à suivre pour effectuer cette tâche :
a. Ajoutez les 7 nouveaux fichiers de 1 To au même groupe de fichiers.
b. Reconstruire les index en cluster des tables existantes, ce qui répartira automatiquement les données
de chaque table entre les 8 fichiers. Si une table ne comprend pas d’index en cluster, créez-en un, puis
déposez-le pour accomplir la même opération.
c. Réduire le fichier d’origine de 8 To, maintenant qu’il est plein d’environ 12 à 15 %.
2. Envisagez de placer les fichiers de base de données sur un volume ReFS qui n’a pas les mêmes limites
ATTRIBUTE_LIST_ENTRY que NTFS présente. Vous devez reformater le volume NTFS actuel à l’aide de
ReFS.
3. Envisagez de défragmenter le volume dans lequel résident les fichiers de base de données. Pour plus
d’informations, voir Erreur du système d’exploitation (665 - Limitationdu système de fichiers) Et pas
seulement pour DBCC.
4. Formatez le volume à l’aide de l’option /L pour obtenir un frS de grande taille.
NOTE
Pour les systèmes exécutant Windows Server 2008 R2 et Vista, vous devez d’abord appliquer le correctif à partir
de l’article de la base de données 967351 avant d’utiliser l’option /L avec la commande de format.
5. CORRECTIF : Erreur du système d’exploitation 665 lorsque vous exécutez la commande DBCC CHECKDB
pour la base de données qui contient l’index columnstore dans SQL Server 2014
6. Réduisez la durée de vie des commandes DBCC CHECK à l’aide des améliorations des performances et
évitez par conséquent les erreurs 665 : les améliorations apportées à la commande DBCC CHECKDB
peuvent accélérer les performances lorsque vous utilisez l’option PHYSICAL_ONLY
Dans certaines conditions, il se peut que vous rencontriez toujours les erreurs mentionnées ci-dessus même
après avoir appliqué ces correctifs. Dans ce scénario, vous pouvez évaluer certaines des solutions de
contournement abordées dans le billet de blog suivant :
Erreurs de fichier fragmentées : 1450 ou 665 en raison de la fragmentation des fichiers : correctifs et solutions
de contournement
Pour plus d’informations, voir comportement DBCC CHECKDBlorsque la base de données SQL Server est située
sur un volume ReFS.
L’erreur 17053 peut être enregistrée dans le journal
des erreurs après avoir exécuté une commande
DBCC dans SQL Server
13/08/2021 • 8 minutes to read
Cet article explique comment interpréter « Erreur : 17053 » et d’autres messages d’erreur qui peuvent être
signalés lorsque vous exécutez une commande DBCC dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 926070
Symptômes
Vous exécutez l’une des commandes DBCC suivantes dans Microsoft SQL Server :
DBCC CHECKDB
DBCC CHECKALLOC
DBCC CHECKTABLE
DBCC CHECKCATALOG
DBCC CHECKFILEGROUP
Après cela, les messages d’erreur semblables à ce qui suit peuvent être enregistrés dans SQL Server journal des
erreurs :
2006-09-01 17:33:24.48 spid54 35 transactions rolled forward in database 'ProductionData' (11). This is an
informational message only. No user action is required.
2006-09-01 17:35:39.16 spid54 4 transactions rolled back in database 'ProductionData' (11). This is an
informational message only. No user action is required.
2006-09-01 17:36:31.76 spid53 Error: 17053, Severity: 16, State: 1.
2006-09-01 17:36:31.76 spid53 E:\SQLData\ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There
is not enough space on the disk.) encountered.
2006-09-01 17:36:31.76 spid53 Error: 17053, Severity: 16, State: 1.
2006-09-01 17:36:31.76 spid53 E:\ SQLData \ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There
is not enough space on the disk.) encountered.
2006-09-01 17:36:31.77 spid53 Error: 17053, Severity: 16, State: 1.
2006-09-01 17:36:31.77 spid53 E:\ SQLData \ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There
is not enough space on the disk.) encountered.
2006-09-01 17:36:31.80 spid54 DBCC CHECKDB (ProductionData) executed by DomainName \ UserName found 0 errors
and repaired 0 errors. Elapsed time: 0 hours 3 minutes 19 seconds.
2006-09-01 17:36:31.90 spid53 Error: 17053, Severity: 16, State: 1.
2006-09-01 17:36:31.90 spid53 E:\ SQLData \ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There
is not enough space on the disk.) encountered.
2006-09-01 17:36:31.90 spid53 Error: 17053, Severity: 16, State: 1.
2006-09-01 17:36:31.90 spid53 E:\ SQLData \ProductionData.mdf:MSSQL_DBCC11: Operating system error 112(There
is not enough space on the disk.) encountered.
2006-09-01 17:36:32.30 spid54 Error: 926, Severity: 21, State: 6.
2006-09-01 17:36:32.30 spid54 Database 'ProductionData' cannot be opened. It has been marked SUSPECT by
recovery. See the SQL Server errorlog for more information.
Cause
Dans SQL Server, les commandes DBCC utilisent des captures instantanées de base de données en lecture seule
internes. Ces captures instantanées de base de données sont créées sur le même lecteur que les fichiers de
données de base de données correspondants. Les captures instantanées de base de données grossissent en
proportion de la quantité de données modifiées dans la base de données sur laquelle s’exécutent les
commandes DBCC. Si l’activité transactionnelle se poursuit sur cette base de données, les captures instantanées
de base de données créées par les commandes DBCC peuvent être à l’origine de problèmes d’espace disque.
Étant donné que les fichiers instantanés de base de données et les fichiers de données réels résident sur le
même lecteur de disque, les deux ensembles de fichiers sont en concurrence pour l’espace disque. Dans ce cas,
les transactions d’application ou les transactions utilisateur sont privilégiées. La capture instantanée de base de
données interne utilisée par le DBCC est marquée comme suspecte. Par conséquent, les commandes DBCC sont
à l’expérience d’erreurs et ne peuvent pas se terminer.
L’espace disque est l’une des raisons pour laquelle les écritures dans la capture instantanée de base de données
interne peuvent échouer. D’autres raisons telles que les codes d’erreur du système d’exploitation 1450 et 665
peuvent également contribuer à des problèmes similaires et rendre la capture instantanée de base de données
interne dans un état suspect.
Statut
Ce comportement est inhérent au produit.
Plus d’informations
Les informations importantes suivantes s’appliquent aux messages d’erreur mentionnés dans la section
Symptômes :
Ces messages d’erreur sont issus de différents identificateurs de processus de serveur actif (SPID). SPID
54 est l’ID de session qui exécute la commande DBCC. SPID 53 est l’ID de session qui exécute une
transaction utilisateur.
Ces messages d’erreur indiquent la fin des transactions et l’opération de revenir en arrière. Ces messages
sont générés lors de la phase initiale de l’exécution de la commande DBCC. Lorsque vous exécutez une
commande DBCC, la commande DBCC tente d’abord de créer une capture instantanée interne. Lorsque la
capture instantanée est créée, la récupération de base de données est effectuée par rapport à cette
capture instantanée pour mettre l’instantané dans un état cohérent. Les messages d’erreur reflètent cette
activité.
Le message d’erreur 926 indique que la base de données est marquée comme suspecte. Ce message
d’erreur fait référence à la capture instantanée interne et non à la base de données réelle. L’état de la base
de données est « en ligne » et la base de données est fonctionnelle.
Le message d’erreur 17053 contient le nom des flux de flux de remplacement du système de fichiers
NTFS utilisés pour la capture instantanée interne. Ce message d’erreur indique la raison réelle du
problème.
La capture instantanée de base de données interne utilise le même nom que la base de données réelle.
Par conséquent, ces messages d’erreur contiennent le nom de la base de données.
Même si le message du journal des erreurs indique que DBCC CHECKDB est terminé, il doit être considéré
comme un arrêt anormal. Vous devez réexécuter la commande DBCC CHECKDB pour permettre son
exécuter jusqu’à ce qu’elle soit terminée pour accéder à la cohérence de la base de données. Dans ces
situations, reportez-vous à la sortie de la commande DBCC CHECKDB renvoyée au client pour
comprendre quels objets ont été vérifiés et signalés comme nettoyés.
Pour plus d’informations sur ce problème, consultez les rubriques suivantes dans SQL Server Books Online :
Utilisation des captures instantanées de base de données internes DBCC
Comprendre les tailles de fichiers peu nombreuses dans les captures instantanées de base de données.
Suivez les étapes documentées dans ces rubriques pour éviter les problèmes d’utilisation de l’espace.
Après avoir corrigez un problème, réexécutez les commandes DBCC.
Outre les messages d’erreur mentionnés dans la section Symptômes, vous pouvez recevoir le message d’erreur
suivant :
Si la capture instantanée n’a pas pu être créée, vous recevez des messages d’erreur semblables à ce qui suit dans
l’application cliente qui émettre les commandes DBCC :
Si la capture instantanée de base de données interne s’exécute en erreurs 1450 ou 665, voici une séquence
classique que vous remarquerez dans le journal des SQL Server’erreurs :
2008-05-21 13:03:45.67 spid500 272 transactions rolled forward in database 'MYDATABASE' (12). This is an
informational message only. No user action is required.
2008-05-21 13:03:45.84 spid500 2 transactions rolled back in database 'MYDATABASE' (12). This is an
informational message only. No user action is required.
2008-05-21 13:03:46.97 spid500 Recovery completed for database MYDATABASE (database ID 12) in 5 second(s)
(analysis 602 ms, redo 3954 ms, undo 105 ms.) This is an informational message only. No user action is
required.
2008-05-21 13:36:48.25 spid480 The operating system returned error 665(The requested operation could not be
completed due to a file system limitation) to SQL Server during a write at offset 0x00001b35138000 in file
'I:\MSSQL\DATA\mscrm_data1.ndf:MSSQL_DBCC12'.
2008-05-21 13:36:48.26 spid480 Error: 17053, Severity: 16, State: 1.
2008-05-21 13:36:48.26 spid480 C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12: Operating system error 665(The
requested operation could not be completed due to a file system limitation) encountered.
2008-05-21 13:36:48.27 spid480 The operating system returned error 665(The requested operation could not be
completed due to a file system limitation) to SQL Server during a write at offset 0x00001b35138000 in file
'C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12'.
2008-05-21 13:36:48.27 spid480 Error: 17053, Severity: 16, State: 1.
2008-05-21 13:36:48.27 spid480 C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12: Operating system error 665(The
requested operation could not be completed due to a file system limitation) encountered.
2008-05-21 13:36:48.37 spid480 The operating system returned error 665(The requested operation could not be
completed due to a file system limitation) to SQL Server during a write at offset 0x00001b35138000 in file
'C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12'.
2008-05-21 13:36:48.37 spid480 Error: 17053, Severity: 16, State: 1.
2008-05-21 13:36:48.37 spid480 C:\MSSQL\DATA\MyDatabase.mdf:MSSQL_DBCC12: Operating system error 665(The
requested operation could not be completed due to a file system limitation) encountered.
2008-05-21 13:36:48.37 spid500 DBCC CHECKDB (MYDATABASE) executed by DomainName \ UserName found 0 errors
and repaired 0 errors. Elapsed time: 0 hours 33 minutes 16 seconds. Internal database snapshot has split
point LSN = 0000759c:002547bc:0040 and first LSN = 0000759c:0023696d:0049. This is an informational message
only. No user action is required.
Référence
MSSQLSERVER_17053
Message d’erreur lorsque vous exécutez la
commande DBCC CHECKDB sur un ordinateur qui
contient une base de données SQL Server de
données
13/08/2021 • 2 minutes to read
Cet article vous explique en détail le problème qui se produit lorsque vous exécutez la commande sur un
ordinateur qui contient une base DBCC CHECKDB de données SQL Server données.
Version du produit d’origine : SQL Server 2008
Numéro de la ko d’origine : 960791
Symptômes
Prenons l’exemple du scénario suivant :
Vous restituer une Microsoft SQL Server base de données 2008 SQL Server 2005 à partir d’une
sauvegarde.
Vous recevez des erreurs au cours du processus de restauration qui vous empêchent de restaurer la base
de données.
Vous avez réussi à restaurer la base de données à partir de la même sauvegarde à l’aide de l
CONTINUE_AFTER_ERROR option.
Dans ce scénario, lorsque vous exécutez la commande DBCC CHECKDB sur l’ordinateur qui contient la base de
données SQL Server, vous recevez un message d’erreur semblable à ce qui suit :
Msg 8967, Niveau 16, État 216, Serveur <server name> , Ligne 2
Une erreur interne s’est produite dans le DBCC, ce qui a empêché d’autres traitements. Contactez le support
technique.
Résultats DBCC pour ' <database name> '.
Msg 8921, Niveau 16, État 1, Serveur <server name> , Ligne 1
Check terminated. Un échec a été détecté lors de la collecte des faits. Il est possible que tempdb manque
d’espace ou qu’une table système soit incohérente. Vérifiez les erreurs précédentes.
En outre, un message semblable à ce qui suit peut s’afficher dans le journal SQL Server’erreurs :
2007-05-26 07:13:49.21 spid58 DBCC a rencontré une page avec un LSN supérieur à la fin actuelle du LSN
() journal pour sa capture instantanée de base de données <LSN> interne. Page non lisible (id:page de
fichier), base de données ' <database name' (database ID database id> ), LSN = ( <LSN> ), type = 32,
isInSparseFile = 1. Ré-exécutez cette commande DBCC.
Cause
Ce problème se produit si la commande ne peut pas effectuer les vérifications nécessaires pour vérifier la
DBCC CHECKDB cohérence de la base de données. Ces vérifications n’ont pas pu être effectuées pour de
nombreuses raisons. Par exemple, ce comportement peut se produire s’il existe des incohérences fondamentales
dans la base de données, telles que des incohérences de métadonnées ou une altération de capture instantanée
de base de données. Pour plus d’informations sur la cause spécifique de cette erreur, vous pouvez examiner
l’état différent affiché dans le message d’erreur. Dans le scénario décrit dans la section Symptômes, le message
d’état 216 indique que la commande lit une page à partir de la capture instantanée interne dont le numéro de
séquence de journal est supérieur à la fin du DBCC CHECKDB LSN du journal. Ce comportement peut se produire
si vous restituer des bases de données à l’aide de CONTINUE_AFTER_ERROR option.
Solution de contournement
Pour contourner ce problème, utilisez le conseil TABLOCK avec la DBCC CHECKDB commande. Cela permet à la
DBCC CHECKDB commande de se terminer sans générer le message d’erreur.
Pour plus d’informations sur les conseils TABLOCK, visitez le site Web Microsoft suivant : Conseils (Transact-SQL)
- Tableau.
La sauvegarde vers l’URL échoue avec l’erreur
d’SQL Server
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre l’erreur qui se produit lorsque vous utilisez la commande URL de la base de
données de sauvegarde nonrecoverable I/O dans SQL Server.
Version du produit d’origine : SQL Server 2012 Enterprise, SQL Server 2014 Enterprise, SQL Server 2014
Enterprise
Numéro de la ko d’origine : 3177997
Symptômes
Vous essayez de sauvegarder une base de données sur votre ordinateur virtuel SQL Server Azure (IaaS) à l’aide
de la commande URL de la base de données de sauvegarde. Toutefois, la tentative échoue avec l’erreur suivante :
Cause
This issue occurs if the storage account that you’re trying to back up to was created with the Account Kind
setting set to Blob . Le paramètre Type de compte doit être à usage général.
Résolution
Pour résoudre ce problème, créez un compte de stockage et spécifiez l’objectif général du paramètre Type de
compte. Désignez également un conteneur dans ce compte de stockage pour la sauvegarde vers l’URL.
Plus d’informations
Lorsque le type de compte est définie sur Usage général, cela permet la prise en charge des fichiers blob de
page. SQL Server sauvegarde utilise des blobs de page comme type Blob. Pour plus d’informations, voir SQL
Server sauvegarde et restauration avec Windows Azure Blob Stockage Service.
Une base de données TDE peut ne pas récupérer
dans SQL Server
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où une base de données TDE peut ne pas être récupérée lorsque le
chiffrement automatique de la clé principale par la clé principale de service est supprimé.
S’applique à : SQL Server 2008 Enterprise, SQL Server 2008 R2 Enterprise
Numéro de la ko d’origine : 2666213
Symptômes
Dans Microsoft SQL Server 2008 et dans Microsoft SQL Server 2008 R2, une base de données activée pour le
chiffrement transparent de la base de données peut ne pas être récupérée. De plus, le message d’erreur suivant
peut être consigné dans le journal d SQL Server’erreurs suivant :
Cause
Ce problème se produit lorsque le chiffrement de la clé principale de service pour la clé principale de base de
données dans la base de données maître est supprimé lorsque la commande suivante est exécuté :
Use master
go
alter master key drop encryption by service master key
Lorsqu’une clé principale de base de données (DMK) est créée pour la première fois, elle est automatiquement
chiffrée avec la clé principale de service.
La clé principale de base de données est utilisée pour chiffrer le certificat utilisé par la fonctionnalité de
chiffrement transparent de la base de données. Toute tentative d’utilisation de la base de données TDE nécessite
l’accès au certificat et à la clé principale de base de données dans la base de données maître. Dans la
configuration par défaut, la clé principale de base de données est ouverte implicitement par la clé principale de
service. Une clé principale qui n’est pas chiffrée par la clé principale de service doit être ouverte explicitement à
l’aide de l’instruction OPEN MASTER KEY avec un mot de passe sur chaque session nécessitant l’accès à la clé
principale.
La récupération de base de données se produit sur les sessions système. Si ces sessions ne peuvent pas ouvrir le
certificat et la clé principale de base de données, la récupération ne peut pas être effectuée sur une base de
données TDE si le déchiffrement automatique du DMK par SMK est supprimé. Dans ce scénario, la base de
données est marquée comme récupération en attente .
Résolution
Pour résoudre le problème, activez le déchiffrement automatique de la clé principale. Pour ce faire, exécutez les
commandes suivantes :
Use master
go
open master key DECRYPTION BY PASSWORD = 'password'
Utilisez la requête suivante pour déterminer si le déchiffrement automatique de la clé principale par la clé
principale de service a été désactivé pour la base de données maître :
Si cette requête renvoie la valeur 0, le déchiffrement automatique de la clé principale par la clé principale de
service a été désactivé.
Violations d’accès et fichiers de vidage mémoire
lorsque vous utilisez la session XEvent avec
sqlos.wait_info événement dans SQL Server
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez une session XEvent qui a un
événement sqlos.wait_info SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 4033835
Symptômes
Prenons l’exemple du scénario suivant :
Vous créez une session XEvent qui possède un sqlos.wait_info événement dans Microsoft SQL Server.
Dans cette session, vous définissez un filtre (prédicat) dans le modèle suivant :
Dans ce scénario, vous pouvez être face à l’un des problèmes suivants :
SQL Server génère des violations d’accès ou un fichier de vidage mémoire de dépassement de la pile.
SQL Server génère un fichier de vidage mémoire du scheduler sans rapport.
Les requêtes ne retournent pas de résultats, ou vous ne pouvez pas annuler ou supprimer une requête.
Lorsque SQL Server génère une exception et un fichier de vidage mémoire de dépassement de capacité
de la pile dans le journal des erreurs SQL Server, des messages d’erreur semblables à l’un des
EXCEPTION_ACCESS_VIOLATION messages suivants sont générés :
Solution de contournement
Pour contourner ce problème, évitez d’utiliser des conditions de filtre complexes avec wait_info l’événement.
Cela est dû au fait que l’événement est très important en ressources et wait_info peut considérablement
ralentir une requête.
Si vous souhaitez suivre cette situation, modifiez le modèle de prédicat de filtre <Query Text> comme suit :
([sqlserver].[equal_i_sql_unicode_string]([sqlserver].[sql_text],N'<Query Text>')
Max_Queue_Readers est ignorée lorsque vous
essayez de limiter les tâches d’activation dans
Service Broker
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque plus de tâches d’activation s’exécutent dans
Service Broker que la limite définie par la Max_Queue_Readers propriété.
Version du produit d’origine : SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL
Server 2008 R2
Numéro de la ko d’origine : 3163368
Symptômes
Prenons l’exemple du scénario suivant :
Vous utilisez Service Broker dans SQL Server 2017 sur Windows, Microsoft SQL Server 2014 ou SQL
Server 2012.
Vous définissez Service Broker pour l’exécution asynchrone des procédures stockées.
Vous définissez la propriété sur une valeur spécifique pour la file d’attente service Broker afin de limiter le
nombre d’instances d’une procédure stockée d’activation qui s’exécutent Max_Queue_Readers en même
temps.
Dans ce scénario, vous remarquez que plus de tâches activées sont en cours d’exécution que la valeur définie
pour Max_Queue_Readers .
Cause
Ce problème peut se produire si la base de données Service Broker passe du mode mono-utilisateur ( ) au
RESTRICTED_USER mode multi-utilisateur ( ) en exécutant ce MULTI_USER qui suit :
Lorsque le mode utilisateur est modifié sur la base de données, Service Broker est arrêté et redémarré. Au cours
de ce processus, l’objet QueueMonitor existant est supprimé et une autre instance de l’objet est QueueMonitor
créée. Si le processus d’activation est en cours d’exécution d’une longue opération pendant l’arrêt du Service
Broker, l’état de l’objet QueueMonitor est modifié pour être abandonné.
Toutefois, l’instance d’objet existante n’est pas supprimée, car son nombre de QueueMonitor références n’a pas
atteint zéro. Si la procédure d’activation est toujours en cours d’exécution au redémarrage du Service Broker, la
nouvelle instance de l’objet et l’objet abandonné QueueMonitor QueueMonitor coexistent dans la même file
d’attente. QueueMonitor L’instance d’objet supprimée sera supprimée lors du prochain démarrage de Service
Broker.
Solution de contournement
Pour contourner ce problème, veillez à l’exécuter alter database [dbname] set multi_user lorsqu’aucune
procédure activée n’est en cours d’exécution. Pour ce faire, utilisez l’une des méthodes suivantes :
Avant de modifier le mode utilisateur, désactivez toutes les files d’attente de la base de données, puis
réactivez toutes les files d’attente.
Avant de modifier le mode utilisateur, désactivez la procédure d’activation pour toutes les files d’attente
concernées en exécutant la commande suivante, puis réactivez la procédure d’activation :
Plus d’informations
Vous pouvez vérifier le nombre de procédures d’activation en cours d’exécution pour une file d’attente
spécifique en exécutant une requête sys.dm_broker_activated_tasks comme suit :
Vous pouvez interroger l’état du moniteur de file d’attente en exécutant la requête suivante :
L’état du moniteur de file d’attente s’affiche comme abandonné si le mode utilisateur de la base de données a
été modifié.
SQL Le travail de l’agent qui exécute une requête
distribuée peut échouer avec les messages d’erreur
65535, 782 ou 7437
15/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème où le travail de l’agent SQL qui exécute une requête distribuée peut
échouer avec des messages d’erreur 65535, 782 ou 7437.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2492477
Symptômes
Un travail de l’agent SQL qui exécute une requête distribuée (serveur lié) peut échouer avec l’un des messages
d’erreur suivants, lorsque le propriétaire du travail n’est pas membre du rôle serveur sysadmin :
Le fournisseur OLE DB « pour le serveur lié » a renvoyé le message « Le délai <provider name>
<Linkedserver Name> d’expiration de connexion a expiré ».
Le fournisseur OLE DB « » pour le serveur lié « » a renvoyé le message « Une erreur s’est produite
lors de l’établissement d’une connexion <provider name> <Linkedserver Name> au serveur. Lors de
la connexion à SQL Server 2005, cet échec peut être dû au fait que sous les paramètres par défaut
SQL Server n’autorise pas les connexions distantes. »
Msg 65535, Niveau 16, État 1, Ligne 0
SQL Interfaces réseau : serveur de localisation d’erreurs/instance spécifiée [xFFFFFFFF].
Par exemple, dans SQL Server 2008, les messages d’erreur peuvent être similaires à ce qui suit :
Le fournisseur OLE DB « SQLNCLI » pour le serveur lié » a renvoyé le message « Le délai d’expiration
de connexion <Linkedserver Name> a expiré ».
Le fournisseur OLE DB « SQLNCLI » pour le serveur lié « » a renvoyé le message « Une erreur s’est
produite lors de l’établissement d’une connexion <Linkedserver Name> au serveur. Lors de la
connexion à SQL Server 2005, cet échec peut être dû au fait que sous les paramètres par défaut SQL
Server n’autorise pas les connexions distantes. »
Msg 65535, Niveau 16, État 1, Ligne 0
SQL Interfaces réseau : serveur de localisation d’erreurs/instance spécifiée [xFFFFFFFF].
Vous pouvez également voir le même comportement lors de l’utilisation ou de l’exécution d’une requête
distribuée à l’aide de l’emprunt d’identité via une instruction Openquery Execute as Login T-SQL.
Cause
L’étape SQL transactuelle s’exécute en tant que propriétaire de l’étape du travail si le propriétaire de l’étape de
travail n’est pas membre du rôle serveur fixe sysadmin. SQL L’agent Execute as Login exécute l’étape du travail
dans le contexte du propriétaire de l’étape du travail. Vous ne pouvez pas utiliser EXECUTE AS d’instruction au-
delà des limites du serveur. Ce comportement est inhérent au produit. Pour plus d’informations, voir les
rubriques suivantes dans SQL Server Books Online :
EXECUTE AS (Transact-SQL)
Extension de l’emprunt d’identité de base de données à l’aide d’EXECUTE AS
NOTE
La même cause s’applique au scénario dans lequel vous essayez manuellement de modifier le contexte d’exécution d’une
requête distribuée dans management studio à l’aide de l’instruction EXECUTE AS.
Solution de contournement
IMPORTANT
La solution de contournement suivante nécessite que vous définissiez une connexion de serveur local explicite aux
mappages de connexion de serveur distant à l’aide de la page Sécurité sous Propriétés de l’objet serveur lié. Étant donné
que la colonne Utilisateur distant doit être une connexion d’authentification SQL Server sur le serveur distant, le mode
d’authentification du serveur distant doit être déjà en mode mixte ou doit être modifié en mode mixte avant d’utiliser la
solution de contournement abordée ci-dessous.
Si une étape de travail T-SQL appartient à un utilisateur qui ne fait pas partie du rôle serveur sysadmin et si
l’étape contient une requête distribuée, prenez les mesures suivantes pour vous assurer que les travaux ou les
requêtes n’échouent pas :
1. Créez un mappage pour chaque propriétaire de l’étape du travail sur le serveur local à une connexion
existante ou nouvelle sur le serveur distant.
2. Assurez-vous que la connexion dispose de privilèges suffisants pour exécuter différents modules sur le
serveur distant accessibles dans la requête distribuée. Pour plus d’informations, voir Propriétés du serveur lié
(page Sécurité).
Plus d’informations
Parfois, vous remarquerez que les requêtes abordées dans l’un des scénarios de la section Symptômes peuvent
s’exécuter correctement. Cela se produit généralement lorsque l’utilisateur dont l’identité a été usurpée s’est
précédemment connectée au système distant et que le système a toujours ouvert une connexion établie par
l’utilisation à distance. Vous ne devez pas vous attendre à ce que la requête fonctionne tout le temps.
Étapes pour reproduire le comportement
1. Sur votre instance SQL, créez un serveur lié à une autre instance SQL à l’aide de SQL Server Management
Studio (SSMS) ou du script suivant.
EXEC master.dbo.sp_addlinkedserver @server = <server name>, @srvproduct=N'SQL Server'
/* For security reasons the linked server remote logins password is changed with ######## */
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=<servername> ,
@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
2. Exécutez la requête suivante dans SSMS à l’aide d’une connexion membre du rôle serveur Sysadmin et
assurez-vous qu’elle fonctionne bien.
execute as login='Domain\Login1'
go
select suser_sname()
go
select * from <servername>.master.sys.sysobjects
go
Cette étape échoue avec l’erreur mentionnée dans la section Symptômes de l’article.
NOTE
OPENROWSET et les fonctions ne sont pas affectées par ce problème, car ces fonctions incluent les informations
OPENDATASOURCE d’identification en tant que paramètres.
BEGIN DISTRIBUTED TRANSACTION est une instruction distincte qui n’a pas ses propres informations d’identification et
n’est pas affectée par ce problème. Toutefois, si la sécurité du serveur lié n’est pas correctement configurée, ces
instructions peuvent toujours échouer.
Impossible de migrer l’assembly vers SQL Server
2017 lors de la vérification de la compatibilité de la
base de données Configuration Manager
14/08/2021 • 2 minutes to read
Cet article présente l’assembly ne peut pas être migré vers SQL Server erreur 2017 lors de la vérification de
compatibilité de la base de données Configuration Manager.
Version du produit d’origine : System Center Configuration Manager, SQL Server 2017 sur Windows
Numéro de la ko d’origine : 4465462
Résumé
Dans Microsoft SQL Server 2017, vous utilisez le contrôle de compatibilité de base de données intégré pour
déterminer la compatibilité de mise à niveau d’une base de données Microsoft System Center Configuration
Manager. Vous avez également CLR Strict Security activé. Lorsque vous exécutez la vérification, vous recevez
des messages d’information concernant les assemblys indiqués suivants :
Assembly [DcmObjectModel_SQLCLR] ne peut pas être migré vers SQL Server 2017. Pour plus
d’informations, voir : Ligne 1, Colonne 1.
Assembly [MessageHandlerService] ne peut pas être migré vers SQL Server 2017. Pour plus d’informations,
voir : Ligne 1, Colonne 1.
Assembly [ServiceBrokerInterface] ne peut pas être migré vers SQL Server 2017. Pour plus d’informations,
voir : Ligne 1, Colonne 1.
Assembly [SMSSQLCLR] ne peut pas être migré vers SQL Server 2017. Pour plus d’informations, voir : Ligne
1, Colonne 1.
Assembly [StateSysSqlClr] ne peut pas être migré vers SQL Server 2017. Pour plus d’informations, voir :
Ligne 1, Colonne 1.
État
Les messages d’information sont de par leur conception. Bien que les assemblys soient marqués comme NON
SÉCURISÉs, ils sont gérés correctement. Vous pouvez ignorer ces messages en toute sécurité et continuer à
exécuter la mise à niveau de la base de données.
Plus d’informations
Par défaut, toutes les bases de données Configuration Manager doivent avoir l’option Fiable définie sur True
dans les propriétés de la base de données. Il s’agit d’une condition requise pour Configuration Manager et pour
CLR Strict Security que la fonctionnalité fonctionne correctement.
Pour vérifier ce paramètre, ouvrez la fenêtre Propriétés de la base de données, sélectionnez la page Options
dans le volet de navigation, puis recherchez la ligne Fiable dans la liste Autres options.
SQL Server assertion en bloc lorsque vous essayez
d’exécuter une instruction d’insertion en bloc ou
BCP
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’exécuter une Bulk Insert ou
plusieurs BCP opérations.
Version du produit d’origine : SQL Server 2008 R2 Enterprise, SQL Server 2008 Enterprise
Numéro de la ko d’origine : 2700641
Symptômes
Prenons l’exemple du scénario suivant :
Les serveurs A et B exécutent Microsoft SQL Server 2008 ou SQL Server 2008 R2.
Vous pouvez configurer la mise en miroir de bases de données entre le serveur A et le serveur B.
Vous exécutez une BULK INSERT ou BCP plusieurs instructions sur la base de données principale.
NOTE
Par défaut, CHECK_CONSTRAINTS l’option est définie sur Off lorsque vous exécutez une ou plusieurs
BULK INSERT BCP instructions.
La mise en miroir de base de données est interrompue et la session de mise en miroir de base de
données entre dans l’état SUSPENDED.
Dans ce scénario, une assertion se produit sur le serveur miroir. Par conséquent, un fichier de mini-vidage est
créé dans le SQL Server journal. En outre, l’erreur suivante s’SQL Server journal des erreurs sur le serveur
miroir :
NOTE
Vous devez réinitialiser la mise en miroir de bases de données pour résoudre ce problème.
Cause
Ce problème se produit car les informations de compatibilité de verrouillage dans le journal des transactions de
la base de données principale ne sont pas transférées vers le serveur miroir.
Solution de contournement
Pour contourner ce problème, exécutez la ou l’instruction sur la base de données BULK INSERT principale à l’aide
de BCP CHECK_CONSTRAINTS l’option ON.
NOTE
CHECK_CONSTRAINTS L’option ON ralentit les performances. Toutefois, l’affirmation de verrouillage sur le serveur miroir ne
se produit pas.
Informations supplémentaires
Au cours BULK INSERT BCP d’une ou d’une opération, une transaction enfant éteint CHECK_CONSTRAINTS l’option.
Cette transaction enfant utilise un verrou compatible avec les verrous de transaction parent. Les informations de
compatibilité sont stockées dans le journal des transactions de la base de données principale. Par conséquent, la
demande de verrouillage de transaction enfant est accordée sur la base de données principale.
Toutefois, ces informations de compatibilité ne sont pas transférées vers le serveur miroir. Par conséquent, la
demande de verrouillage de transaction enfant est incompatible avec les verrous de transaction parent sur le
serveur miroir. Ce scénario entraîne l’affirmation sur le serveur miroir.
Échec de l’agent ASR ou d’une autre sauvegarde
VSS non-composant pour un serveur hébergeant
SQL Server 2008 R2
13/08/2021 • 3 minutes to read
Cet article vous aide à contourner le problème dans lequel une sauvegarde VSS non-composant, telle que
l’agent ASR, échoue pour un serveur qui héberge SQL Server 2008 R2.
Version du produit d’origine : SQL Server 2008, SQL Server 2008 R2
Numéro de la ko d’origine : 4504103
Symptômes
Prenons l’exemple du scénario suivant :
Vous utilisez Microsoft SQL Server 2008 ou SQL Server 2008 R2.
Vous démarrez une sauvegarde VSS non-composant d’un volume qui héberge SQL Server fichiers. Par
exemple, vous utilisez Microsoft Azure Agent de récupération de site.
Dans ce cas, vous remarquez que la sauvegarde VSS échoue en raison d’une erreur SQLServerWriter, même si
le journal d’erreurs SQL Server signale une sauvegarde réussie.
SQLServerWriter signale le résultat suivant dans la sortie « vssadmin list writers » :
NOTE
L’état ou l’erreur précédent est très générique. Par conséquent, il ne fournit pas suffisamment d’informations pour vous
laisser identifier de manière sélective un scénario donné. Cette situation est significative dans le contexte de sauvegardes
non-composants sur SQL Server 2008 ou R2.
[-,0x00c390:0xbb80:0x0eba42eb] sqlwriter.pdf\sqllib\FileName(LineNumber) :
FrozenDatabase::GetNextPartialInfo: VDI::GetCommand failed with error 0x8077000e
[-,0x00c390:0xbb80:0x0eba42eb] EXIT {DatabaseName::GetNextPartialInfo}: hr: 0x8077000e
[-,0x00c390:0xbb80:0x0eba42eb] sqlwriter.pdf\sqlwriter\FileName(LineNumber) : CSqlWriter::P
ickupDifferentialInfo : Le maître de base de données de l’instance de serveur CGLONCSQL01 n’a pas réussi à
émaner les informations de fichier. hr = 0x8077000e
[-,0x00c390:0xbb80:0x0eba42eb] sqlwriter.pdf\sqlwriter\FileName(LineNumber) : CSqlWriter::P
ickupDifferentialInfo: Throwing HRESULT code 0x8077000e. Code HRESULT précédent = 0x8077000e
[-,0x00c390:0xbb80:0x0eba42eb] sqlwriter.pé\sqlwriter\FileName(LineNumber) : CSqlWriter::P
ickupDifferentialInfo : EXCEPTION HRESULT capturée : hr : 0x8077000e
[-,0x00c390:0xbb80:0x0eba42eb] EXIT {CSqlWriter::P ickupDifferentialInfo}: hr: 0x8077000e
[-,0x00c390:0xbb80:0x0eba42eb] sqlwriter.pé\sqlwriter\FileName(LineNumber) : STDMETHODCALLTYPE
CSqlWriter::OnPostSnapshot : Échec de la sélection des informations de fichier à partir des serveurs de base
de données. hr = 0x8077000e
[-,0x00c390:0xbb80:0x0eba42eb] sqlwriter.pé\sqlwriter\FileName(LineNumber) : STDMETHODCALLTYPE
CSqlWriter::OnPostSnapshot: Throwing HRESULT code 0x8077000e. Code HRESULT précédent =
0x8077000e
[-,0x00c390:0xbb80:0x0eba42eb] sqlwriter.pé\sqlwriter\FileName(LineNumber) : STDMETHODCALLTYPE
CSqlWriter::OnPostSnapshot: EXCEPTION HRESULT CAUGHT: hr: 0x8077000e
[-,0x00c390:0xbb80:0x0eba42eb] Entrez {Snapshot::~Snapshot}:
Solution de contournement
Il n’existe aucun correctif SQL Server 2008 ou SQL Server 2008 R2. This issue was fixed in the initial release
(RTM) of SQL Server 2012. Étant donné que SQLServerWriter est un composant partagé, la mise à niveau des
composants partagés avec une version majeure ultérieure de SQL Server remplace SQL Server 2008 ou SQL
Server 2008 R2 SQLServerWriter par une version plus récente qui contient le correctif.
Dans les cas où SQL Server 2008 ou SQL Server 2008 R2 rencontre ce problème, nous vous suggérons
d’installer une édition gratuite d’une version SQL Server récente, telle que SQL Server Express Edition. (Voir la
section Plus d’informations sur la version exacte à utiliser, en fonction de la version du système d’exploitation).
Pour ce faire, sélectionnez Mettre à niveau les fonctionnalités par tagées uniquement dans la page
Sélectionner une instance de l SQL Server Express’installation.
Cette méthode permet de mettre à niveau tous les composants partagés vers la version SQL Server utilisée.
Cela signifie que le même service SQL Server VSS Writer qui 2008 ou 2008 R2 de l’auteur exécute désormais la
version SQL Server la plus récente à partir de SQL Express. La version la plus récente est à compatibilité avec les
versions précédentes.
Cette méthode vous permet également d’installer SQL Server mises à jour cumulatives pertinentes pour la
version de mise à niveau de SQL Express. Par exemple, vous pouvez installer SQL Server mises à jour
cumulatives 2014 ou SQL Server 2017 pour maintenir SQLServerWriter à jour selon les besoins. Pour plus
d’informations, voir FIX: Back up a SQL Server database by using a VSS Backup application may fail after
installing SQL Server
Plus d’informations
SQL Server 2016 et SQL Server 2017 Express Edition nécessitent Windows Server 2012 version
ultérieure ou ultérieure, ou Windows 8 ou version ultérieure.
Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 avec SQL Server 2008 ou SQL Server
2008 R2, vous pouvez utiliser SQL Server 2014 Service Pack 3 (SP3) Express Edition pour mettre à niveau
les composants partagés : téléchargez Microsoft SQL Server 2014 SP3 Express.
Lorsque vous mettre à niveau les composants partagés, tous les sous-composants sont mis à niveau en
plus de SQLServerWriter. Par exemple : les services d’intégration, Master Data Services (MDS), SQL
Server Management Studio (SSMS), SQL Server Data Tools (SSDT) et SQL Server Books Online sont mis à
niveau.
Une autre solution de contournement consiste à mettre à niveau les composants partagés et à éviter le
problème en installant dummy une instance SQL Express d’une version majeure ultérieure. Lorsque vous
installez une version majeure ultérieure de SQL Server instance, les composants partagés sont également
mis à niveau. Vous pouvez ensuite désactiver ou désinstaller l’instance factice. Toutefois, l’approche la
plus propre consiste à mettre à niveau les composants partagés.
Références
Découvrez la description de la terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft.
Les sauvegardes VSS non-composants telles que les
travaux Azure Site Recovery échouent sur les
serveurs hébergeant SQL Server instances avec
AUTO_CLOSE DBs
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où les sauvegardes vsS (Volume Shadow Copy Service) non-
composants telles que les travaux Azure Site Recovery (ASR) échouent sur les serveurs qui hébergent des
instances SQL Server avec des AUTO-CLOSE DB.
Version du produit d’origine : SQL Server 2017 sur Windows, SQL Server 2016, SQL Server 2014, SQL Server
2012, SQL Server 2008 R2, SQL Server 2008, SQL Server dans la VM - Windows
Numéro de la ko d’origine : 4504104
Symptômes
Prenons l’exemple du scénario suivant :
Vous avez un serveur qui exécute n’importe quelle version de Microsoft SQL Server.
Cette SQL Server instance héberge des bases de données dont l’option AUTO-CLOSE est définie.
Vous exécutez une sauvegarde VSS non-composant (par exemple, à l’aide de l’agent ASR) sur les volumes de
ce serveur qui héberge des fichiers de base de données SQL Server de données.
Dans ce cas, vous remarquez que la sauvegarde VSS échoue et déclenche l’entrée suivante dans le journal des
applications :
Un rédacteur VSS a rejeté un événement avec 0x800423f4, le rédacteur a connu une erreur non temporaire.
Si le processus de sauvegarde est retenté, l’erreur est susceptible de se reproduire. Les modifications
apportées par l’auteur aux composants du rédacteur lors de la gestion de l’événement ne seront pas
disponibles pour le demandeur. Consultez le journal des événements pour les événements connexes de
l’application hébergeant l’enregistreur VSS.
Opération :
PostSnapshot, événement
Contexte :
Contexte d’exécution : Rédacteur
ID de classe writer : {ID}
Writer Name: SqlServerWriter
Writer Instance Name: Microsoft SQL Server 2012:SQLWriter
ID d’instance writer : {ID}
Ligne de commande : « C:\Program Files\Microsoft SQL Server\90\Shared\sqlwriter.exe »
ID de processus : xxx »
Cause
Ce problème se produit car SQL Server SQLWriter ne gère actuellement pas correctement les bases de données
AUTO-CLOSE dans les demandes de sauvegarde VSS en mode non-composant.
Solution de contournement
En tant qu’atténuation à court terme, nous vous recommandons de désactiver l’option AUTO-CLOSE sur toutes
les bases de données de toutes les instances SQL Server hébergées sur des serveurs qui reçoivent des
sauvegardes VSS non-composant. En règle générale, les machines virtuelles Azure qui exécutent SQL Server
sont affectées, car l’agent ASR exécute ces sauvegardes non-composants.
Plus d’informations
Par défaut, la propriété est définie sur OFF dans AUTO_CLOSE SQL Server Understanding SQL Express
behavior: Idle time resource usage, AUTO_CLOSE and User Instances. Si vous êtes sûr de n’avoir pas
activé ce paramètre manuellement sur les serveurs qui pourraient être affectés par ce problème,
examinez les instances de SQL Server Express qui ont pu être installées en mode silencieux en tant que
composants d’autres applications.
Pour obtenir la liste des bases de données dont le mode est activé, exécutez la requête sur AUTO_CLOSE
une instance SQL Server données :
select name,database_id,is_auto_close_on from sys.databases where is_auto_close_on=1
Pour modifier le paramètre, reportez-vous à la section des options ALTER DATABASE SET de la
AUTO_CLOSE documentation en ligne pour TSQL.
Pour mettre cette option hors service, exécutez la commande suivante dans la sqlcmd.exe client
par défaut (par exemple, pour la base de données Ma base de données) :
Si vous préférez une méthode GUI, utilisez options des propriétés de base de > données SQL Server
Management Studio.
La sauvegarde d’une base SQL Server à l’aide d’une
application de sauvegarde VSS peut échouer pour
certaines bases de données
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez des applications VSS (Volume
Shadow Copy Services) pour protéger vos bases de données SQL Server données.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2014054
Symptômes
Lorsque vous utilisez des applications VSS (Volume Shadow Copy Services) pour sauvegarder vos bases de
données SQL Server, l’opération de sauvegarde peut échouer si le nom de la base de données contient des
espaces de début ou de fin ou des caractères non imprimables.
Le même problème peut également se produire lorsque vous essayez de back up un volume qui contient l’une
de ces bases de données.
Cause
Les applications de sauvegarde basées sur VSS utilisent (SQLWriter) pour interroger les informations du
composant de métadonnées writer afin de déterminer les fichiers de base de données à SQLServerWriter
sauvegarder. Le composant de métadonnées Writer est créé par SQLWriter à l’aide de l’API VSS et contient trois
ensembles de données :
1. Informations d’identification et de classification des rédacteurs
2. Spécifications au niveau du rédacteur
3. Données de composant
Lorsqu’un nom de base de données contient des espaces de début ou de fin ou des caractères non imprimables,
ce document peut ne pas être créé correctement. Par conséquent, les applications basées sur VSS ne pourront
pas la back up de ces bases de données ou des volumes qui contiennent ces bases de données.
Résolution
Renommons toutes les bases de données qui contiennent des espaces de début ou de fin ou des caractères non
imprimables dans leur nom. Vous pouvez utiliser la requête suivante pour localiser la présence de ces caractères
à l’avant ou à la fin des noms :
Exemple de sortie :
DatabaseID DatabaseName
8 ##AdventureWorks## -- DB name is fine
15 ## DBWithLeadingSpace## -- DB name contains leading spaces
17 ##DBWithTrailingSpace ## -- DB name contains trailing spaces
NOTE
Dans la requête ci-dessus, si le nom de la base de données contient des caractères non imprimables, ils peuvent être
imprimés en tant qu’espaces ou indésirables.
Plus d’informations
Les rédacteurs (comme SQL Writer) ajoutent des composants à l’aide de
IVssCreateWriterMetadata::AddComponent, en spécifiant les informations suivantes sur les composants :
Type
Nom
Chemin d’accès logique (le cas caser)
Fonctionnalité prise en charge
Sélection
Métadonnées à utiliser par l’auteur lors de la restauration
Informations d'affichage
Informations de notification
C (Volume Shadow Copy Service) sont des collections de fichiers qui forment une unité logique à des fins de
sauvegarde et de restauration. Tous les fichiers d’un composant (à l’exception de ceux explicitement exclus)
doivent être restaurés en tant qu’unité.
Pour plus d’informations, voir métadonnées VSS.
Vous pouvez utiliser une ou plusieurs des méthodes suivantes pour déterminer si vous êtes en cours d’exécution
dans ce problème :
Diverses applications de sauvegarde peuvent créer des messages personnalisés SqlServerWriter
concernant (ou SQLWriter) in trouvé.
Lorsque vous exécutez à partir d’une invite de commandes sur l SQL Server ordinateur cible, vous ne
voyez SqlServerWriter pas dans la sortie.
rédacteurs de liste vssadmin
Résolution des problèmes SQL Server opérations
de sauvegarde et de restauration
13/08/2021 • 13 minutes to read
Cet article présente les informations suivantes Microsoft SQL Server opérations de sauvegarde et de
restauration :
Références à SQL Server Books Online età d’autres documentations sur les rubriques de sauvegarde et
de restauration.
Les problèmes potentiels que vous pouvez rencontrer et les résolutions que vous pouvez essayer lorsque
vous travaillez avec des opérations de sauvegarde ou de restauration.
Forum Aux Questions (FAQ) sur les opérations de sauvegarde et de restauration.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 224071
Périphériques de sauvegarde (SQL Server) Fournit une excellente référence pour comprendre les
différents périphériques de sauvegarde, la sauvegarde
d’un partage réseau, le stockage d’objets blob Azure et
les tâches connexes.
Modèles de récupération (SQL Server) Couvre en détail les différents modèles de récupération :
simple, complet et journalisé en bloc. Fournit des
informations sur l’impact du modèle de récupération sur
les sauvegardes.
RÉF ÉREN C E P EUT F O URN IR DES RÉP O N SES P O UR
Restauration & sauvegarde : bases de données système Aborde les stratégies et explique ce que vous devez
(SQL Server) savoir lorsque vous travaillez sur des opérations de
sauvegarde et de restauration de bases de données
système.
Vue d’ensemble de la restauration et de la récupération Aborde l’impact des modèles de récupération sur les
(SQL Server) opérations de restauration. Vous devez passer en revue
ce point si vous avez des questions sur la façon dont le
modèle de récupération d’une base de données peut
affecter le processus de restauration.
Gérer les métadonnées lors de la mise à disposition Diverses considérations doivent être à prendre en
d’une base de données sur un autre serveur compte lorsqu’une base de données est déplacée ou que
vous rencontrez des problèmes affectant les connexions,
le chiffrement, la réplication, les autorisations, etc.
Working with Transaction Log Backups Présente des concepts sur la façon de back up and
restore (apply) transaction logs in the full and bulk-
logged recovery models. Explique comment prendre des
sauvegardes de routine des journaux de transactions
(sauvegardes des journaux) pour récupérer des données.
SQL Server Sauvegarde gérée vers Microsoft Azure Présente la sauvegarde gérée et les procédures
associées.
RESTORE DATABASE a correctement traitée 315 pages en 0,372 seconde (6,604 Mo/s)
Dans SQL Server 2016 et versions ultérieures, vous pouvez utiliser XEvent
backup_restore_progress_trace pour suivre la progression des opérations de sauvegarde et de
restauration.
Vous pouvez également utiliser la colonne percent_complete de sys.dm_exec_requests pour
suivre la progression des opérations de sauvegarde et de restauration en cours.
Les informations de débit liées aux opérations de sauvegarde et de restauration peuvent être
mesurées à l’aide des compteurs de l’écran de performance Débit de l’appareil en octets/s et débit
de sauvegarde/restauration/s. Pour plus d’informations, SQL Server, Backup Device Object.
Comment interroger la progression du processus de sauvegarde en cours d’exécution dans SQL
Server
Fonctionnement : que fait la restauration/sauvegarde ? Ce billet de blog peut vous aider à mieux
comprendre l’étape actuelle des opérations de sauvegarde ou de restauration.
Éléments à vérifier
1. Vérifiez si vous rencontrez l’un des problèmes connus répertoriés dans le tableau suivant. Envisagez si
vous devez implémenter les modifications ou appliquer les correctifs et les meilleures pratiques abordés
dans les articles correspondants.
Optimisation des performances de sauvegarde et de La rubrique Books Online couvre différentes meilleures
restauration dans SQL Server pratiques que vous pouvez utiliser pour améliorer les
performances des opérations de
sauvegarde/restauration. Par exemple, vous pouvez
attribuer le privilège SE_MANAGE_VOLUME_NAME au
compte Windows qui exécute SQL Server pour permettre
l’initialisation instantanée des fichiers de données. Cela
peut produire des gains de performances significatifs.
2920151 correctifs et mises à jour recommandés pour Les correctifs système actuels peuvent inclure des
les clusters de Windows Server 2012 R2 correctifs pour les problèmes connus au niveau du
système qui peuvent entraîner des problèmes de
2822241 Windows 8 et Windows Server 2012 de mise à performances qui affectent des programmes tels que
jour : avril 2013 SQL Server. L’installation de ces mises à jour permet
d’éviter ces problèmes.
2878182 correctif : les processus en mode utilisateur Les opérations de sauvegarde sont intensives en E/S et
dans une application ne sont pas résponsibles sur les peuvent être affectées par ce bogue. Appliquez ce
serveurs qui s’exécutent Windows Server 2012 correctif pour éviter ces problèmes.
309422 choisir un logiciel antivirus à exécuter sur des Le logiciel antivirus peut contenir des verrous sur des
ordinateurs qui exécutent des SQL Server fichiers .bak. Cela peut affecter les performances des
opérations de sauvegarde et de restauration. Suivez les
instructions de cet article pour exclure les fichiers de
sauvegarde des analyses antivirus.
2455009 FIX : performances lentes lorsque vous La présence de nombreux fichiers journaux virtuels peut
récupérez une base de données s’il existe de nombreux affecter le temps nécessaire à la restauration d’une base
fichiers VLF dans le journal des transactions dans SQL de données. Cela est particulièrement vrai lors de la
Server 2005, dans SQL Server 2008 ou dans SQL Server phase de récupération de l’opération de restauration.
2008 R2 Pour plus d’informations sur les autres problèmes
possibles qui peuvent être causés par la présence de
nombreux fichiers VLF, reportez-vous aux opérations de
base de données qui prennent beaucoup de temps, ou
elles déclenchent des erreurs lorsque le journal des
transactionscontient de nombreux fichiers journaux
virtuels.
Une opération de sauvegarde ou de restauration sur un Isolez le problème au réseau en essayant de copier un
emplacement réseau est lente fichier de même taille sur l’emplacement réseau à partir
du serveur qui exécute SQL Server. Vérifiez les
performances.
2. Recherchez d’autres messages d’erreur dans SQL Server journal des erreurs et Windows journal des
événements pour plus de pointeurs sur la cause du problème.
3. Si vous utilisez des logiciels tiers ou des plans de maintenance de base de données pour effectuer
plusieurs sauvegardes en même temps, pensez à modifier les planifications afin de réduire la contention
sur le lecteur sur lequel les sauvegardes sont écrites.
4. Travaillez avec votre administrateur Windows pour vérifier les mises à jour du microprogramme de votre
matériel.
Scénario 2 : échec des opérations de sauvegarde ou de restauration qui utilisent des
applications de sauvegarde tierces
SQL Server fournit une API nommée VDI (Virtual Backup Device Interface). Cette API permet aux éditeurs
de logiciels indépendants d’intégrer des SQL Server dans leurs produits afin de prendre en charge les
opérations de sauvegarde et de restauration. Ces API sont conçues pour fournir une fiabilité et des
performances maximales et pour prendre en charge la gamme complète des fonctionnalités de
sauvegarde et de restauration SQL Server de données. Cela inclut la gamme complète des fonctionnalités
de capture instantanée et de sauvegarde à chaud.
Étapes communes de dépannage
Pour les versions antérieures à SQL Server 2012, assurez-vous que le service SQLWriter est
démarré et que le compte de démarrage est définie sur Système local. Assurez-vous également
que la connexion NT AUTHORITY\SYSTEM existe dans SQL Server et qu’elle fait partie du rôle
serveur sysadmin de l’instance sur laquelle les sauvegardes sont effectuées.
Pour SQL Server 2012 et versions ultérieures, une nouvelle connexion nommée [NT
SERVICE\SQLWriter] est créée et mise en service en tant que connexion lors de l’installation.
Assurez-vous que cette connexion existe dans SQL Server et fait partie du rôle serveur sysadmin.
Assurez-vous que SqlServerWriter est répertorié lorsque la commande VSSADMIN LIST WRITERS
est exécuté à une invite de commandes sur le serveur qui exécute SQL Server. Ce rédacteur doit
être répertorié en tant qu’auteur et doit être dans l’état stable pour permettre aux sauvegardes
VSS de se terminer correctement.
Pour des pointeurs supplémentaires, vérifiez les journaux du logiciel de sauvegarde correspondant
et leurs sites de support.
SY M P TÔ M ES O U SC ÉN A RIO A RT IC L E DE L A K B
Échec des sauvegardes des bases de données 2987610 fix : Erreur lorsque vous back up a database
sensibles à la cas that has case-sensitive collation by using VSS in SQL
Server 2012 SP2
Les sauvegardes tierces réalisées à l’aide du rédacteur 2987610 fix : Erreur lorsque vous back up a database
VSS peuvent échouer et renvoyer des erreurs 8229. that has case-sensitive collation by using VSS in SQL
Server 2012 SP2
Azure Site recovery agent reports failure Échec de l’agent ASR ou d’une autre sauvegarde VSS
non-composant pour un serveur hébergeant SQL
Server 2008 R2
Autres ressources
How It Works: How many databases can be backed up simultaneously?
Scénario 3 : échec des opérations de sauvegarde et de restauration en raison de problèmes
d’autorisations
Les problèmes de propriété et d’autorisation sur le fichier physique de l’appareil de sauvegarde peuvent
interférer avec les opérations de sauvegarde et de restauration. SQL Server être en mesure de lire et
d’écrire sur l’appareil. En outre, le compte sous lequel le service SQL Server s’exécute doit avoir des
autorisations d’écriture sur le lecteur ou sur le partage réseau utilisé pour les sauvegardes.
Choses à faire
Pour plus d’informations, consultez la rubrique Sauvegarde vers un partage réseau dans SQL Server
documentation.
SY M P TÔ M E C O M M EN TA IRES
SQL Server ou SQL’agent est en cours d’exécution sous Accordez des autorisations sur le compte d’ordinateur
un compte système local et les sauvegardes échouent. sur le partage Domain\ComputerName$.
Autres ressources
Répertorie toutes les autorisations de dossier partagé ou les autorisations NTFS (PowerShell)
Scénario 4 : échec de l’opération de restauration en raison de sauvegardes endommagées
Activez l’option CHECKSUM de sauvegarde lors de l’effectuer pour éviter la sauvegarde d’une base de
données endommagée. Pour plus d’informations, voir Possible Media Errors During Backup and Restore
(SQL Server). Vous pouvez également activer l’indicateur de suivi 3023 pour activer la reprise de contrôle
lorsque vous effectuez des sauvegardes à l’aide des outils de sauvegarde. Pour plus d’informations, voir
Comment activer l’option CHECKSUM si les utilitaires de sauvegarde n’exposent pas l’option.
Si les fichiers de sauvegarde sont endommagés, les opérations de restauration peuvent échouer et
générer des erreurs semblables à ce qui suit.
RESTORE a détecté une erreur sur la page (0:0) dans la base de données
ADDITIONAL INFORMATION: The media family on device <device name> ' is incorrectly formed. SQL
Server ne peut pas traiter cette famille de médias. RESTORE HEADERONLY se termine anormalement.
(Microsoft SQL Server, Erreur : 3241)
Choses à faire
Exécutez la commande suivante en remplaçant par le nom de votre base de données et vos <test>
chemins d’accès aux fichiers :
Les sauvegardes peuvent échouer lorsque le suivi des Consultez les articles suivants de la Base de
changements est activé sur les bases de données et connaissances Microsoft :
renvoyer des erreurs semblables à ce qui suit : 2682488 CORRECTIF : échec de l’opération de
sauvegarde dans un SQL Server 2008, dans une
Erreur : 3999, Gravité : 17, État : 1. base de données SQL Server 2008 R2 ou dans
une base de données SQL Server 2012 après
< Time Stamp t> spid< spid > Failed to flush the avoir activé le suivi des changements
commit table to disk in dbid 8 due to error 2601. Vérifier 2603910 CORRECTIF : la sauvegarde échoue
lelog des erreurs dans SQL Server 2008, SQL Server 2008 R2 ou
SQL Server 2012 si vous activez le suivi des
changements sur la base de données
2522893 FIX : une opération de sauvegarde sur
une base de données SQL Server 2008 ou SQL
Server 2008 R2 échoue si vous activez le suivi des
changements sur cette base de données
Problèmes de restauration des sauvegardes de bases de Déplacer une base de données protégée TDE vers une
données chiffrées autre SQL Server
La tentative de restauration d’une sauvegarde CRM à 2567984 erreur « La base de données ne peut pas être
partir de l’édition Enterprise échoue sur une édition démarrée dans cette édition de SQL Server » lors de la
Standard restauration d’une base de données Microsoft Dynamics
CRM données
Plus d’informations
FAQ sur les SQL Server de sauvegarde et de restauration
Comment vérifier l’état des opérations de sauvegarde ?
Découvrez comment interroger la progression du processus de sauvegardeen cours d’exécution dans
SQL Server .
Que dois-je faire en cas SQL Ser ver de secours en cours de sauvegarde ?
Redémarrer les opérations de restauration ou de sauvegarde par redémarrage d’une opération de
restauration interrompue (Transact-SQL)
Puis-je restaurer des sauvegardes de base de données à par tir d’anciennes versions de
programmes sur des versions plus récentes, et inversement ?
SQL Server sauvegarde ne peut pas être restaurée par une version de SQL Server ultérieure à la
version qui a créé la sauvegarde. Pour plus d’informations, voir la prise en charge de la compatibilité.
Comment puis-je vérifier mes sauvegardes SQL Ser ver base de données ?
Consultez les procédures documentées dans RESTORE Statements - VERIFYONLY (Transact-SQL).
Comment puis-je obtenir l’historique de sauvegarde des bases de données SQL Ser ver ?
Découvrez comment obtenir l’historique de sauvegarde des bases de données dans SQL Server.
Puis-je restaurer des sauvegardes 32 bits sur des ser veurs 64 bits, et inversement ?
Oui. Dans la rubrique Back Up and Restore of SQL Ser ver Databases, le format de stockage sur
disque SQL Server est le même dans les environnements 64 bits et 32 bits. Par conséquent, les
opérations de sauvegarde et de restauration fonctionnent dans les environnements 32 bits et 64 bits.
Une sauvegarde créée sur une instance de serveur en cours d’exécution dans un environnement peut
être restaurée sur une instance de serveur en cours d’exécution dans l’autre environnement.
Références complémentaires
Planifier et automatiser des sauvegardes de bases de données SQL Server dans SQL Server Express
Comment back up SQL Server databases in all the instances on a server (PowerShell)
SQL Server enregistre une opération de sauvegarde
dans la table d’historique des jeux de sauvegarde
lorsque vous utilisez VSS pour sauvegarder des
fichiers sur un volume
13/08/2021 • 2 minutes to read
Cet article décrit un comportement « par conception » qui se produit lorsque vous utilisez VSS pour la back up
files sur un volume.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 951288
Symptômes
Lorsque vous utilisez une application vsS (Volume Shadow Copy Service) pour sauvegarder des fichiers sur un
volume qui inclut des fichiers de base de données SQL Server, SQL Server enregistre une opération de
sauvegarde dans la backupset table d’historique. Ce comportement se produit même si vous n’avez pas
réellement back up les fichiers de base de données de SQL Server.
Cause
Ce comportement se produit car l’application VSS appelle le service SQLWriter sur le système pendant
l’opération de sauvegarde. Pour plus d’informations sur la façon dont les applications VSS interagissent avec
SQL Writer, voir SQL Server Back up Applications - Volume Shadow Copy Service (VSS) et SQL Writer.
USE msdb
GO
Dans le résultat, notez la database_backup_lsn colonne et la is_snapshot colonne. Une entrée qui représente
une opération de sauvegarde de base de données native présente les caractéristiques suivantes :
La valeur de la database_backup_lsn colonne n’est pas 0 .
La valeur de la is_snapshot colonne est 0 .
Si cette requête renvoie des résultats, cela signifie que vous n’avez pas de bonnes sauvegardes de base de
données après la date signalée. Nous vous recommandons vivement d’effectuer une sauvegarde de base de
données complète dès que possible et de vérifier que la sauvegarde complète de la base de données est propre.
Cet article présente le comportement des sauvegardes compressées lorsque vous les appendez à un jeu
multimédia existant.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2297053
Résumé
L’une des principales restrictions liées aux sauvegardes compressées est que les sauvegardes compressées et
non compressées ne peuvent pas exister dans un jeu multimédia. Cette restriction est documentée dans :
Compression de sauvegarde (SQL Server).
Cet article complète cette documentation et fournit plus d’informations sur le comportement attendu des
sauvegardes compressées par rapport au paramètre de configuration par défaut du serveur de compression de
sauvegarde.
Plus d’informations
Lorsque vous appendez une sauvegarde compressée à un support existant, elle hérite du paramètre de
compression du jeu multimédia. Si vous vous appuyez sur le paramètre de compression de sauvegarde et que
vous êtes en attente d’un média existant, vous risquez de vous retrouver avec une sauvegarde dans un état
sp_configure de compression différent de celui prévu.
Lorsqu’un jeu multimédia est créé, des informations sur le fait que cet ensemble de médias soit pour une
sauvegarde compressée ou une sauvegarde normale sont écrites dans le fichier d’en-tête multimédia.
Les sauvegardes prises dans un jeu multimédia existant peuvent coexister uniquement si le paramètre de
compression de ces sauvegardes est identique à celui du jeu multimédia. Les trois facteurs suivants affectent le
comportement des sauvegardes compressées :
1. SQL Server’option de configuration de l’ordinateur : compression de sauvegarde par défaut
2. Options de jeu de sauvegarde : COMPRESSION ou NO_COMPRESSION
3. Que vous appending à un jeu multimédia existant ou que vous écrivant la sauvegarde dans un nouveau jeu
multimédia. Pour les médias existants, un facteur supplémentaire à prendre en compte est de savoir si le jeu
multimédia contient actuellement une sauvegarde compressée ou non compressée.
Le tableau suivant récapitule le comportement des sauvegardes compressées en fonction des trois facteurs ci-
dessus.
A P P EN D TO M EDIA SET
B A C K UP, IN ST RUC T IO N N EW M EDIA SET A P P EN D TO M EDIA SET ( UN C O M P RESSED)
Comme vous pouvez le voir dans le tableau ci-dessus, lorsque nous utilisons le paramètre de compression par
défaut sur le serveur et que nous l’appendons à un jeu multimédia existant, la sauvegarde n’échoue jamais en
raison d’une insérialisation des paramètres de compression. Il fonctionne mais hérite du paramètre dans l’en-
tête du jeu multimédia. Toutefois, si vous spécifiez la ou les options de votre instruction Backup, une erreur se
produit en cas d’insérialisation entre la sauvegarde stockée dans le jeu multimédia et la sauvegarde actuelle
prise en compte dans le paramètre de COMPRESSION NO_COMPRESSION compression.
NOTE
Vous pouvez trouver le paramètre actuel de l’option par défaut backup compression en exécutant la commande dans le
sp_configure SQL Server Management Studio. Si vous êtes en attente d’un média existant, vous pouvez obtenir les
informations d’en-tête à l’aide de la commande headeronly de restauration. Pour plus d’informations, voir la section
Exemples plus loin dans cet article.
Exemples : Voici un exemple de script pour démontrer le comportement dans différents cas. Le comportement
est le même, que la sauvegarde se trouve sur une bande ou sur un disque.
La valeur de compression est 0 .
Après avoir exécuté le script sql, vous pouvez recevoir le message d’erreur 3098 et 3013 :
Activer la compression de sauvegarde par défaut au niveau du serveur.
Traitement de deux pages pour la base de test données, test_log fichier sur le fichier 2.
BACKUP DATABASE a correctement traitée 162 pages en 6,211 secondes (0,203 Mo/s).
Vérifiez l’en-tête Sauvegarde et jeu multimédia.
-- Check the backup and meadia set header. You will see that though Server default is set to
compressed, the backup given that it is appended to an existing media set inherits the compression
setting of the media set itself
-- You may expect this to have failed with the same error as when specifying the WITH COMPRESSION
clause in the backup statement given that compressed and non compressed backups cannot co-exist in
the media set.
restore headeronly from DISK = N'E:\testbackup.bak'
--If you create a new mediaset using the FORMAT option, then the current compression setting is
inherited
-- Create a new media set using FORMAT Or by specifying a new file
BACKUP DATABASE test TO DISK = N'E:\testbackup.bak' WITH FORMAT, INIT, NAME = N'testbackup-Full
Database Backup', SKIP,NOUNLOAD, STATS = 10
GO
-- Check the backup and meadia set header
restore headeronly from DISK = N'E:\testbackup.bak'
-- If you use the with INIT, the backup sets are overwritten but the media header is not
-- Toggle the backup compression setting back to 0
sp_configure 'backup compression',0
go
reconfigure
go
-- backup to the same media set with INIT
BACKUP DATABASE test TO DISK = N'E:\testbackup.bak' WITH INIT,
NAME = N'testbackup-Full Database Backup', SKIP,NOUNLOAD, STATS = 10
GO
-- Check the backup and media set header
-- Note that even though we changed backup compression to 0, the old media header is preserved which
has it as 1, and the backup goes as compressed
restore headeronly from DISK = N'E:\testbackup.bak'
Une autre limitation est que les sauvegardes compressées ne peuvent pas coexister avec les sauvegardes
NT :
-- Take an NT Backup
-- You can verify the backup Header now, see it is not a SQL backup
restore headeronly from DISK = N'E:\testbackup.bak'
-- backup to the same media set with INIT and compression and you get the error message
BACKUP DATABASE test TO TAPE = N'\\.\Tape0' WITH INIT, COMPRESSION,
NAME = N'testbackup-Full Database Backup', SKIP,NOUNLOAD, STATS = 10
GO
Après avoir exécuté le script sql, vous pouvez recevoir le message d’erreur 3098 et 3013 :
Back up to the same media set without initializing and NO compression.
-- backup to the same media set without initializing and NO compression and the backups ( NT and non-
compressed backup) can co-exist
BACKUP DATABASE test TO TAPE = N'\\.\Tape0'
WITH NAME = N'testbackup-Full Database Backup', SKIP,NOUNLOAD, STATS = 10
GO
-- You can verify the backup Header now,see the SQL and the NT backup
Restore headeronly from tape = N'\\.\Tape0'
-- Forcing a Compressed backup on a tape with an NT backup results in the error below
BACKUP DATABASE test TO TAPE = N'\\.\Tape0' with compression,
NAME = N'testbackup1 Full Database Backup', SKIP,NOUNLOAD, STATS = 10
GO
Après avoir exécuté le script sql, vous pouvez recevoir le message d’erreur 3098 et 3013 :
Message d’erreur 3098 et 3013
Message d’erreur 3098
Cet article explique comment désactiver les requêtes ad hoc qui utilisent la ou les fonctionnalités dans
OPENROWSET OPENDATASOURCE SQL Server.
Résumé
Vous pouvez utiliser ou des instructions dans un serveur SQL comme méthode ad hoc pour connecter et
accéder aux données à partir d’un fournisseur OLEDB distant, y compris une instance SQL Server OPENROWSET
OPENDATASOURCE distante. Ces instructions peuvent être utilisées pour accéder aux données distantes à partir de
sources de données OLE DB uniquement lorsque l’option de RegistreDisallowAdhocAccess est explicitement
définie sur 0 pour le fournisseur spécifié et que l’option de configuration avancée des requêtes distribuées Ad
Hoc est activée. Lorsque ces options ne sont pas définies, le comportement par défaut n’autorise pas l’accès ad
hoc.
Cet article fournit des détails supplémentaires sur la configuration de DisallowAdhocAccess via les
paramètres du Registre, ainsi que sur SQL Server Management Studio et le comportement par défaut.
Vous pouvez désactiver les instructions Transact-SQL qui utilisent des chaînes de connexion ad hoc avec des
fournisseurs OLE DB spécifiques dans les fonctions et les fonctions à l’aide de l’une des procédures ci-dessous
OPENROWSET OPENDATASOURCE :
Spécifier DisallowAdHocAccess la propriété du fournisseur dans SQL Server Management Studio (SSMS)
1. Ouvrez SSMS et développez fournisseurs sous Serveurs liés
2. Cliquez pour sélectionner le fournisseur OLE DB que vous souhaitez utiliser, puis cliquez sur le bouton
Options du fournisseur.
3. Faites défiler vers le bas et sélectionnez la case à cocher Disallow adhoc access property et cliquez sur
OK .
Modifiez manuellement le Registre et ajoutez la DisallowAdHocAccess valeur.
NOTE
Les deux illustrations ne sont que des exemples de la façon dont vous pouvez modifier le fournisseur OLE DB pour ODBC
et pour SQL Server fournisseur OLE DB. Si vous souhaitez utiliser un autre fournisseur OLE DB, vous devez modifier
l’entrée de ce fournisseur.
IMPORTANT
Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des
problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à suivre ces
étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier. Vous pouvez alors le
restaurer en cas de problème. Pour plus d’informations sur la façon de back up et restore the registry, voir How to back
up and restore the registry in Windows.
NOTE
Les deux illustrations ne sont que des exemples de la façon dont vous pouvez modifier le fournisseur OLE DB pour ODBC
et pour SQL Server fournisseur OLE DB. Si vous souhaitez utiliser un autre fournisseur OLE DB, vous devez modifier
l’entrée de ce fournisseur.
IMPORTANT
Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des
problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à suivre ces
étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier. Vous pouvez alors le
restaurer en cas de problème. Pour plus d’informations sur la façon de la back up et de la restauration du Registre, cliquez
sur le numéro d’article suivant pour afficher l’article de la Base de connaissances Microsoft : 322756 How to back up and
restore the Registry in Windows
3. Dans le menu Edition, cliquez sur Ajouter une valeur, puis ajoutez cette valeur de Registre :
3. Dans le menu Modifier, cliquez sur DWORD , tapez 1, puis cliquez sur OK .
4. Quittez l’Éditeur du Registre. Pour une instance nommée, la clé de Registre est différente
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<Instance Name>\Providers\<ProviderName> :
NOTE
Une modification de la valeur de DisallowAdHocAscess 1 à 0 ne nécessite pas de redémarrage du service SQL, alors
qu’une modification de 0 à 1 nécessite un redémarrage du service SQL pour que la modification prise en vigueur soit
effective.
Avec la propriété définie sur 1, SQL Server n’autorise pas l’accès ad hoc via le fournisseur OLE DB spécifié et les
fonctions par rapport à DisallowAdHocAccess OPENROWSET ces OPENDATASOURCE fonctions. Si vous essayez
d’appeler ces fonctions dans des requêtes ad hoc, vous recevez un message d’erreur semblable à ce qui suit :
Serveur : Msg 7415, Niveau 16, État 1, Accès ad hoc à la ligne 1 au fournisseur OLE DB «
Microsoft.Jet.OLEDB.4.0 » a été refusé. Vous devez accéder à ce fournisseur via un serveur lié.
En d’autres termes, avec la propriété définie sur 1 pour un fournisseur OLE DB spécifique, vous devez utiliser
une configuration de serveur lié prédéfinë pour le fournisseur DisallowAdHocAccess OLE DB spécifique. Vous ne
pouvez plus transmettre une chaîne de connexion ad hoc qui fait référence à ce fournisseur à la OPENROWSET ou
à la OPENDATASOURCE fonction.
Voir aussi
OPENDATASOURCE (Transact-SQL)
OPENROWSET (Transact-SQL)
OleDbProviderSettings.DisallowAdHocAccess, propriété
Considérations sur les paramètres derow et de
autoshrink dans SQL Server
12/08/2021 • 8 minutes to read
Résumé
Les paramètres derow et de autoshrink par défaut sont appropriés sur de nombreux SQL Server système.
Toutefois, dans certains environnements, vous pouvez être dans l’devoir d’ajuster les paramètres derow
automatique et d’autoshrink. Cet article fournit des informations d’arrière-plan pour vous aider à choisir ces
paramètres pour votre environnement.
Plus d’informations
Voici quelques éléments à prendre en compte si vous décidez d’affiner vos paramètres derow automatique et
d’autoshrink.
NOTE
Pour plus d’informations sur la définition de ces paramètres au niveau du fichier de base de données, voir Ajouter
des données ou des fichiers journaux à une base de données.
Vous pouvez également configurer l’option derow automatique lorsque vous créez une base de données.
Pour afficher les paramètres actuels, exécutez la commande Transact-SQL suivante :
2. N’oubliez pas que les paramètres derow automatique sont par fichier. Par conséquent, vous devez les
définir à au moins deux endroits pour chaque base de données (un pour le fichier de données principal et
un pour le fichier journal principal). Si vous avez plusieurs données et/ou fichiers journaux, vous devez
définir les options sur chaque fichier. En fonction de votre environnement, vous pouvez terminer avec
différents paramètres pour chaque fichier de base de données.
Si vous augmentez votre base de données par petits incréments, ou si vous la développez puis la réduit, vous
pouvez vous retrouver avec une fragmentation de disque. La fragmentation du disque peut entraîner des
problèmes de performances dans certaines circonstances. Un scénario d’incréments de petite croissance peut
également réduire les performances de votre système.
Dans SQL Server, vous pouvez activer l’initialisation de fichier instantané. L’initialisation instantanée des fichiers
accélère les allocations de fichiers uniquement pour les fichiers de données. L’initialisation de fichier instantané
ne s’applique pas aux fichiers journaux. Pour plus d’informations, voir Initialisation de fichier instantané de base
de données.
Références
Résoudre les problèmes d’un journal des transactions complet (erreur SQL Server 9002)
Initialisation de fichier instantané de base de données
SQL Server Guide de gestion et d’architecture des journaux de transactions
Gérer la taille du fichier journal des transactions
Considérations lors de l’utilisation du moteur SQL
Server Full-Text de recherche pour la langue
japonaise
13/08/2021 • 5 minutes to read
Cet article décrit les considérations qui s’appliquent lorsque vous utilisez le moteur SQL Server Full-Text
recherche pour le japonais.
S’applique à : SQL Server
Numéro de la ko d’origine : 2252955
Introduction
En japonais, une expression peut être constituée de deux ou plusieurs mots sans espace entre ces mots. Dans
Microsoft SQL Server, lorsque vous utilisez le moteur de recherche SQL Server Full-Text pour effectuer une
recherche de préfixe pour une expression japonaise, le moteur de recherche Full-Text ne considère pas
l’expression comme un terme préfixe. Au lieu de cela, le moteur Full-Text recherche considère l’expression
comme des termes de mot. En effet, un mot est défini comme une chaîne de caractères sans espaces ni
ponctuation. En outre, le moteur de recherche fonctionne uniquement en mode de correspondance de préfixe.
Le moteur de recherche ne fonctionne pas en mode suffixe correspondant.
Plus d’informations
Par exemple, vous créez un tableau et insérez des expressions japonaises en exécutant les instructions suivantes
dans SQL Server :
c1c2
2Fw : テスト
3KK-Information :テスト
6テスト
Requête 2
c1c2
2 Fw : テスト
3 KK-Information :テスト
6 テスト
8 テストフィルタ1
9 RE : テストメール
10 テストメール
Requête 3
c1c2
2 Fw : テスト
3 KK-Information :テスト
6 テスト
8 テストフィルタ1
9 RE : テストメール
10 テストメール
À partir des résultats des requêtes, vous pouvez voir que le résultat de la requête 2 est le même que le
résultat de la requête 3, car la requête Full-Text ne fonctionne pas en mode suffixe correspondant. En
outre, テスト est un jeton qui diffère de ou ポリシーテスト de dans les テスト correspondances.
Pour tokeniser des expressions, vous devez utiliser un décomposeur de mots pour la famille de langues.
Les coupureurs de travail utilisent des espaces et d’autres signes pour reconnaître les expressions. Par
conséquent, certaines expressions ne peuvent pas être reconnues par l’outil d’coupure de mots et ne
peuvent pas être recherchés à l’aide Full-Text moteur de recherche en japonais. Pour plus d’informations
sur les coupureurs de mots, consultez la rubrique Desserreurs de mots et des rechercheurs de mots dans
la section Référence.
La meilleure pratique pour utiliser le moteur de recherche Full-Text en japonais consiste à tester les
expressions pour voir si les expressions sont affectées par la limitation. Si une expression se compose de
mots sans espaces, vous ne pouvez pas utiliser la fonctionnalité Full-Text pour rechercher l’expression. Au
lieu de cela, vous pouvez utiliser le mot clé LIKE avec des caractères génériques. Toutefois, les
performances de l’opération sont inférieures à celles de la like recherche Full-Text recherche. Vous
devez tenir compte de l’impact sur les performances de votre application.
Voici quelques exemples de requêtes du mot clé pour like rechercher des expressions.
Requête 4
Voici le résultat :
c1c2
6 テスト
8 テストフィルタ1
10 テストメール
Requête 5
Voici le résultat :
c1c2
1 添付テスト
2 Fw : テスト
3 KK-Information :テスト
4 [Q] ポリシーテスト
5 KK-Information :タイトルフィルタテスト2
6 テスト
7 « « 700000000000000000000000000 テスト
8 « « 8 « 800000000000000000000 テスト
9 RE テスト :
10 « 1000000000000000000000 テスト
11 テスト
12 フィルタリングテスト
NOTE
Si vous utilisez le moteur de recherche Full-Text dans SQL Server, vous trouverez plus d’informations sur le contenu d’un
index de texte intégral à l’aide de la requête suivante :
Voici le résultat :
Dans l’exemple de résultat, seules trois lignes contiennent le mot テスト . » Le Full-Text de recherche traite le
mot テスト « « comme un テストメール jeton différent du mot ». Pour plus d’informations sur le moteur SQL
Server Full-Text recherche, visitez les sites web Microsoft suivants :
Recherche en texte intégral
Formulaires de conditions de requête pris en charge (recherche en texte intégral)
Configurer & les & des recherche pour la recherche (SQL Server)
Classement des résultats de la requête de recherche (recherche en texte intégral)
CONTAINS (Transact-SQL)
sys.dm_fts_index_keywords (Transact-SQL)
SQL Server Équipe de conseil client
SQL Server service se crashe lorsque vous exécutez
une requête de serveur lié Oracle
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre un problème qui peut se produire lorsque vous exécutez une requête de
serveur lié Oracle.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2295405
Symptôme
Prenons l’exemple du scénario suivant :
Vous installez SQL Server sur un ordinateur qui exécute Windows Server.
Vous créez un serveur lié pour une base de données Oracle.
Vous activez l’option Autoriser le traitement dans la boîte de dialogue Options pour le fournisseur de
serveur lié.
NOTE
Par défaut, l’option n’est pas sélectionnée.
Le SQL Server service (MSSQLSERVER) s’est terminé de manière inattendue. Il a effectué cette ou ces
1 fois.
Un fichier minidump du processus SQL Server est généré avec une altération du tas et vous recevez un
message d’exception semblable à ce qui suit :
La pile du fichier minidump contient des modules tiers à l’intérieur Sqlserver.exe processus. Par exemple,
le fichier minidump contient les informations suivantes dans les modules Oracle :
OraOLEDButl11
OraOLEDBrst11
OraOLEDBrst10
Cause
Ce problème se produit parce que les caractères spéciaux existent dans la requête sur -- le serveur lié Oracle.
Ces caractères sont utilisés comme symbole de commentaire.
Le processus SQL Server se crashe car le fournisseur de serveur lié tiers est chargé dans le processus SQL
Server et modifie de manière incorrecte la mémoire du tas qui n’y appartient pas. Si les fonctions heap à
l’intérieur d’un processus sont instables, pour la protection contre l’altération des données, le processus est
automatiquement arrêté par le système d’exploitation. Si le fournisseur de serveur lié tiers est activé avec
l’option Autoriser l’inprocessage, le processus SQL Server se crashe lorsque ce serveur lié tiers subit le
problème décrit.
Solution de contournement
Pour contourner ce problème, appliquez l'une des méthodes suivantes :
Supprimez le symbole de commentaires.
Remplacez le symbole de commentaires par le symbole commentaires : /* */ .
Plus d’informations
Contactez le fournisseur tiers pour obtenir des informations et des correctifs. Pour la dernière version du
fournisseur OLEDB, voir téléchargements 64 bitsdes composants d’accès aux données Oracle (ODAC).
L’autorisation Créer une base de données est
consignée dans le journal d’audit lorsque vous
exécutez RESTORE VERIFYONLY
12/08/2021 • 2 minutes to read
Cet article fournit plus d’informations sur la raison pour laquelle un événement peut être journalisé lorsque
l’audit du serveur est spécifié sur CREATE DATABASE SQL Server instance.
Version du produit d’origine : Microsoft SQL Server 2014, SQL Server 2016, SQL Server 2017 sur Linux, SQL
Server 2017 sur Windows
Numéro de la ko d’origine : 4502458
Symptômes
Supposons que vous avez installé un audit SQL Server afin d’avoir une spécification d’audit de serveur qui
utilise DATABASE_CHANGE_GROUP l’événement. Lorsqu’un utilisateur s’exécute sur un fichier de sauvegarde de base
de données, l’autorisation est enregistrée dans RESTORE VERIFYONLY CREATE DATABASE le journal d’audit.
Cause
CREATE DATABASE L’autorisation est requise pour s’exécuter. RESTORE VERIFYONLY Lorsque cette autorisation est
vérifiée, un événement correspondant est consigné dans le journal d’audit pour la DATABASE_CHANGE_GROUP
spécification d’audit.
Solution de contournement
Pour contourner ce problème, utilisez une requête telle que la suivante pour filtrer les enregistrements du
journal d’audit liés à l’exécution RESTORE VERIFYONLY :
Plus d’informations
RESTORE Statements - VERIFYONLY (Transact-SQL)
GRANT Database Permissions (Transact-SQL).
SQL Server Moteur de base de
données’entrée/sortie requises
13/08/2021 • 4 minutes to read
Cet article décrit les conditions requises SQL Server Moteur de base de données’entrée/sortie.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 967576
Introduction
SQL Server systèmes doivent prendre en charge la distribution garantie sur des supports stables, comme
indiqué dans les documents de téléchargement suivants :
SQL Server Conditions requises pour le programme de fiabilité des entrées/des personnes
SQL Server Exigences de révision du programme de fiabilité des entrées et des entrées (IO)
NOTE
Les deux documents ci-dessus s’appliquent également SQL Server 2014. Cette exigence inclut, sans s’y limiter, les
conditions suivantes :
WARNING
L’utilisation incorrecte de SQL Server avec une solution testée incorrectement peut entraîner une perte de données, y
compris la perte totale de base de données.
Assistance technique
Microsoft fournit une prise en charge complète des applications SQL Server et SQL Server basées sur des
applications. Toutefois, les problèmes qui ont ou sont dus à la solution d’O/S sont renvoyés au fabricant de
l’appareil. Les symptômes peuvent inclure, sans s’y limiter, les suivants :
Base de données endommagée
Altération de la sauvegarde
Perte de données inattendue
Transactions manquantes
Variations de performances d’I/S inattendues
Microsoft recommande l’utilisation de produits Windows logo certifiés. Pour déterminer si votre solution prend
en charge la « distribution garantie sur un support stable », comme indiqué dans le SQL Server Always-On,
consultez votre fournisseur. Nous vous recommandons également de contacter votre fournisseur pour vérifier
que vous avez correctement déployé et configuré la solution pour une utilisation de base de données
transactionnelle.
Il est courant pour un professionnel du Support Microsoft de vous demander de désactiver les travaux non
essentiels et de désactiver ou de supprimer des composants tiers, de déplacer des fichiers de base de données,
de désinstaller des pilotes et d’effectuer des actions similaires. Nous essayons toujours de réduire l’étendue du
problème pendant que nous travaillons à l’identifier. Une fois qu’un problème est identifié comme non lié aux
travaux ou produits tiers, ces travaux ou produits tiers peuvent être réintroduits en production.
Pour plus d’informations, consultez l’article suivant :
Microsoft ne certifie pas que les produits tiers fonctionneront avec Microsoft SQL Server
Vue d’ensemble de la stratégie de prise en charge des solutions logicielles de stockage tierces Microsoft
Plus d’informations
Le tableau suivant fournit des liens vers des informations supplémentaires relatives à des configurations
d’opérations d’opérations d’information spécifiques.
Fonctionnalités du système de fichiers SQL Server bases de données non pris en charge sur
les volumes compressés (à l’exception des fichiers en
lecture seule 2005)
Diminution des performances dans certaines
fonctionnalités de SQL Server lorsque vous utilisez
EFS pour chiffrer des fichiers de base de données
Mise en cache des I/S Informations sur l’utilisation de caches de disque avec
des SQL Server que chaque administrateur de base
de données doit connaître
Description de la mise en cache des contrôleurs de
disque dans SQL Server
SQ L SERVER 2000 I/ O B A SIC S
SQ L SERVER P RIN C IP ES DE B A SE DES O / S, C H A P IT RE
2
ÉC RIT URE DE PA GES
SQ L SERVER I/ O IN T ERN A L S P O IN T S DE C O N T RÔ L E DE B A SE DE DO N N ÉES ( SQ L
SERVER)
NAS (Network Attached Stockage) Description de la prise en charge des fichiers de base de
données réseau dans SQL Server
Affinité des O/S INF : Comprendre comment définir l’SQL Server d’affinité
d’I/S
Tirets « - » ignorés dans la recherche avec des
requêtes SQL Full-Text et MSIDXS
12/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème qui se produit lorsque vous effectuez une recherche en texte
intégral sur des données de caractères SQL Server ou lorsque vous utilisez une requête distribuée SQL avec le
fournisseur Microsoft Index Server OLE DB (MSIDXS) et une recherche d’extension de préfixe pour un mot
composé qui contient un tiret (par exemple, XYZ-A*).
S’applique à : SQL Server
Numéro de la ko d’origine : 200043
Symptômes
Lors d’une recherche en texte intégral sur des données de caractères SQL Server ou lors de l’utilisation d’une
requête distribuée SQL avec le fournisseur Microsoft Index Server OLE DB (MSIDXS) et d’une recherche
d’extension de préfixe pour un mot composé qui contient un trait d’union (par exemple, « XYZ-A* ») les résultats
obtenus peuvent ne pas être comme prévu.
Cause
Une recherche en texte intégral considère un mot comme une chaîne de caractères sans espaces ni ponctuation.
L’occurrence d’un caractère non alphanumérique peut rompre un mot au cours d’une recherche. Étant donné
SQL Server recherche en texte intégral est un moteur basé sur le mot, la ponctuation n’est généralement pas
envisagée et est ignorée lors de la recherche dans l’index. Par conséquent, une clause comme celle qui
correspondrait à une ligne avec la valeur, l’échec de la recherche de CONTAINS
CONTAINS(testing, "computer-failure") mon ordinateur serait coûteux .
Solution de contournement
Pour contourner ce problème, essayez l’une des méthodes suivantes :
Utilisez uniquement des caractères alphanumériques lorsque vous utilisez les SQL Server’index de texte
intégral.
Lorsque le caractère non alphanumérique doit être utilisé dans les critères de recherche (principalement
le caractère tiret), utilisez la clause Transact-SQL au lieu des - LIKE FULLTEXT CONTAINS prédicats.
Plus d’informations
Microsoft SQL Server version 7.0 permet d’effectuer une requête en texte intégral sur les données de caractères
stockées dans SQL Server tables. Vous pouvez également utiliser une SQL distribuée avec le fournisseur
MSIDXS pour rechercher des données de système de fichiers. L’utilisation du tiret ( ) dans une recherche de
proximité n’est pas prise en charge - et peut donner des résultats inattendus.
Références
Pour plus d’informations SQL Server recherche en texte intégral, voir la SQL Server Books Online.
Pour plus d’informations sur l’utilisation de la clause CONTAINS avec le fournisseur MSIDXS (Microsoft
Index Server), voir la documentation du serveur d’index dans la documentation du pack d’options
Windows NT 4.0.
Défragmentation des lecteurs SQL Server base de
données
12/08/2021 • 5 minutes to read
Cet article fournit des conseils concernant la défragmentation des lecteurs de SQL Server base de données.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 3195161
Informations supplémentaires
Un défragmenteur de disque déplace tous les fichiers, y compris le fichier de base de données, dans des clusters
contigus sur un disque dur. Cela optimise et accélère l’accès aux fichiers. À l’exception du système d’exploitation
NT Windows, si vous ne défragmentez pas votre disque dur, le système d’exploitation peut avoir besoin
d’accéder à plusieurs emplacements physiques sur le disque pour récupérer le fichier de base de données, ce qui
ralentit l’accès aux fichiers.
Étant donné que l’accès aux données physiques est la partie la plus coûteuse d’une demande d’I/S, la
défragmentation peut offrir des gains de performances pour SQL Server et d’autres applications. Les blocs de
données liés au positionnement proches les uns des autres réduisent les besoins en matière d’opérations
d’entrée et de fin.
Divers utilitaires de défragmentation sont actuellement disponibles sur le marché. Certains utilitaires permettent
la défragmentation sur les fichiers ouverts, tandis que d’autres nécessitent une défragmentation de fichiers
fermés ou offrent de meilleures performance lorsqu’ils sont utilisés dans des conditions de fichier fermé. En
outre, certains utilitaires ont des fonctionnalités transactionnelles, contrairement à d’autres.
Recommandations
Défragmentez le volume NTFS, sauf s’il a été formaté, avant de créer une base de données ou de déplacer
des bases de données existantes vers le volume.
Assurez-vous de planifier et de dimensionr vos données SQL fichiers journaux de manière appropriée lors de
la première création de la base de données.
Créez vos journaux de transaction SQL Server 2014 avec larowth automatique à l’esprit s’il sera utilisé.
Défragmentez le ou les disques sur lesquels résident vos journaux de transactions. Cela permet d’éviter la
fragmentation du fichier externe du journal des transactions. Ce problème peut se produire si vos fichiers ont
connu une grande quantité de connexions automatiques ou s’il ne s’agit pas d’un disque dédié qui contient
de nombreuses bases de données, journaux ou autres fichiers qui ont été modifiés. Dans ce cas, les fichiers (y
compris le fichier journal des transactions) peuvent être entrecoupés et fragmentés.
Si vous défragmentez des lecteurs de base de données qui sont des disques de cluster, les disques de cluster
doivent être mis en place pour suspendre la surveillance de l’état (également appelé mode maintenance).
Pour minimiser la fragmentation, ne réduisez pas vos fichiers de base de données. En outre, augmentez-les
manuellement en tailles qui minimisent l’activité de croissance.
Conservez vos fichiers de base de données sur des disques dédiés.
Effectuez une sauvegarde complète avant de défragmenter les emplacements qui contiennent des SQL
Server base de données et des fichiers de sauvegarde.
Références
Comment exécuter ChkDsk et défragmenter sur les volumes partagés de cluster Windows Server 2012
R2
Recommandations recommandations pour améliorer les performances SQL Server FILESTREAM
Une erreur 0x80040e97 se produit lorsque vous
utilisez la recherche de texte intégral intégrée dans
SQL Server
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous indexez des documents de grande taille
à l’aide d’une recherche en texte intégral intégrée dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2270849
Symptômes
Lorsque vous indexez des documents complexes ou de grande taille à l’aide d’une recherche en texte intégral
intégrée dans Microsoft SQL Server, vous pouvez recevoir des erreurs de délai d’Microsoft SQL Server
semblables à ce qui suit :
2010-06-07 15:02:44.64 spid10s Error '0x80040e97' occurred during full-text index population for table or
indexed view '[db1]. [dbo]. [Images] » (ID de table ou de vue indexée « 622625261 », ID de base de données
« 171 », valeur de clé de texte intégral « 2375057 ». Une nouvelle réindexation est tentée.
En outre, SQL Server pouvez redémarrer le processus FDHOST.exe de travail. Lorsque ce problème se produit,
un message d’erreur semblable à ce qui suit s’affiche dans SQL Server journal des erreurs :
Cause
Ce problème se produit si la lecture et le traitement des données XML prennent plus de 60 secondes pour
FDHOST.exe processus de lecture et de traitement des données XML.
Résolution
Pour résoudre ce problème, augmentez la valeur du délai d’délai d’indexation de texte intégral. Pour ce faire,
appelez sp_fulltext_service la procédure stockée qui possède le 'ft_timeout' paramètre. Par exemple,
l’exemple suivant augmente le délai d’indexation de texte intégral à 20 minutes pour n’importe quel document :
NOTE
Le deuxième paramètre est le délai d’indexation complète en millisecondes.
IMPORTANT
Redémarrez votre SQL Server pour que le nouveau paramètre prenne effet.
Plus d’informations
Lorsque SQL Server indexe des types de données tels que varbinary, varbinary(max), image ou xml, SQL Server
envoie des données au processus de daemon de filtre (FDHOST.exe). À tout moment au cours du processus
d’indexation, SQL Server n’attend pas plus de 60 secondes avant que le FDHOST.exe de réponse.
Pour les documents XML de grande taille, le filtre XML hébergé par le processus FDHOST.exe lit toutes les
données de SQL Server et stocke les données dans un fichier temporaire. Ensuite, FDHOST.exe le contenu XML
pour le filtrage et la cinglisation des mots. Si ce processus prend plus de 60 secondes, SQL Server arrête le lot et
retentre l’opération en utilisant une taille de lot plus petite. Si un document XML est de grande taille et que le
processus FDHOST.exe prend plus de 60 secondes pour filtrer et rompre les mots, vous pouvez obtenir une
erreur mentionnée dans la section Symptômes.
NOTE
Le problème peut se produire avec n’importe quel iFilter qui écrit des données dans un fichier temporaire.
Des 0x80040e97 peuvent également être produites pour d’autres raisons. Par exemple, vous pouvez voir le
même code d’erreur lorsque SQL Server des problèmes de chargement d’un iFilter. L’augmentation de la valeur
du délai d’dépassement dans ces cas-là peut masquer l’erreur et empêcher un dépannage efficace. Par
conséquent, nous vous recommandons de vérifier la taille du document et de vérifier que la taille du document
défaillant est exceptionnellement importante avant d’augmenter la valeur du délai d’délai.
Erreur 3156 lors de la restauration d’une base de
données avec un groupe de fichiers optimisé pour
la mémoire SQL Server
13/08/2021 • 2 minutes to read
Symptômes
Lorsque vous essayez de restaurer une base de données dont le groupe de fichiers est optimisé pour la SQL
Server, vous recevez le message d’erreur suivant :
Cause
Pendant le processus de restauration d’une base de données, SQL Server Moteur de base de données créera un
dossier pour un groupe de fichiers optimisé pour la mémoire. Ce problème se produit s’il existe déjà un dossier
du même nom dans le même chemin d’accès et que le dossier est utilisé par SQL Server ou d’autres processus.
Solution de contournement
Utilisez un nom de dossier différent ou un chemin d’accès de dossier différent lors de la restauration d’une base
de données.
Exemple de script
Exemple de script de création d’une base de données avec un groupe de fichiers
USE [master];
GO
CREATE DATABASE Contoso
ON PRIMARY
( NAME = 'Contoso_Primary',
FILENAME=
'C:\SQLserver\Contoso\Contoso_data.mdf',
SIZE=4MB,
MAXSIZE=10MB,
FILEGROWTH=1MB),
FILEGROUP Contoso_FG1
( NAME = 'Contoso_FG1',
FILENAME =
'C:\SQLserver\Contoso\Contoso_FG1.ndf',
SIZE = 1MB,
MAXSIZE=10MB,
FILEGROWTH=1MB)
USE [master]
GO
RESTORE DATABASE [Contoso] FROM DISK = N'C:\backup\compress\Contoso\Contoso.bak' WITH FILE = 1,
MOVE N'Contoso_data' TO N'C:\SQLserver\Contoso\Contoso_data.mdf',
MOVE N'Contoso_log' TO N'C:\SQLServer\Contoso\Contoso_log.ldf',
MOVE N'<Database File>' TO N'<Driver>:\<Folder Path>\<Database Folder>',
Replace,
NOUNLOAD,
STATS = 5
GO
NOTE
Si le mot clé n’est pas utilisé, le mot clé dans le script garantit que le processus de restauration
<Database Folder> Replace est terminé sans erreur.
Voir aussi
MSSQLSERVER_3156
Erreur Msg 33111 après SQL Server rotation de clé
ou de certificat TDE
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit après l’utilisation d’un certificat Transparent Data
Encryption (TDE) ou d’une rotation de clé, l’abandon de la certification d’origine, puis la sauvegarde d’un journal
à l’aide de COMPRESSION+MAXTRANSFERSIZE.
S’applique à : SQL Server 2019, SQL Server 2016, SQL Server 2014, SQL Server 2012
Numéro de la ko d’origine : 4534430
Symptômes
Une fois que vous avez effectué une rotation de clé ou un certificat Transparent Data Encryption (TDE), déposez
la certification d’origine, puis effectuez une sauvegarde du journal à l’aide de
COMPRESSION+MAXTRANSFERSIZE, vous recevez l’erreur suivante :
Cause
Lors de la modification du certificat ou des clés, le fichier journal virtuel (VLF) actif, qui est chiffré par la clé
précédente, est fermé. Le vlf disponible suivant (ou le vlf nouvellement créé) sera utilisé et chiffré par la nouvelle
certification.
À ce stade, le fichier journal des transactions conserve les enregistrements journaux chiffrés par le certificat
précédent, ainsi que les enregistrements de journaux chiffrés par le nouveau certificat.
Lorsque vous effectuez une sauvegarde de journal avec les paramètres COMPRESSION+MAXTRANSFERSIZE,
les enregistrements journaux qui ont été chiffrés par le certificat précédent sont déchiffrés, puis chiffrés par le
nouveau certificat, puis enregistrés dans le fichier de sauvegarde.
Pour cette raison, la certification précédente est nécessaire pour le déchiffrement. La sauvegarde du journal
échouera si le certificat précédent n’existe pas.
Résolution
Restituer la certification précédente et réessayer la sauvegarde.
NOTE
Nous vous recommandons de conserver les sauvegardes de certification au cas où le problème se produira à l’avenir.
État
Microsoft étudie actuellement ce problème et publiera des informations supplémentaires dans cet article dès
qu’elles seront disponibles.
Références
Découvrez la description de la terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft
que Microsoft utilise pour décrire les mises à jour logicielles.
Message d’avertissement contenant
HkHostBackupGetCheckpointFileInfoV2 et 1000016
journal d’SQL Server’erreurs
13/08/2021 • 2 minutes to read
Cet article décrit un avertissement qui se produit lors de la backing d’une base de données en mémoire.
Version du produit d’origine : SQL Server 2016 Enterprise, SQL Server 2016 Enterprise Core
Numéro de la ko d’origine : 4316959
Symptômes
Supposons que vous avez une base de données en mémoire dans SQL Server. Si vous back up the in-memory
database, you may notice that the following warning message is logged in the SQL Server error log:
Plus d’informations
Le message d’avertissement commence par HkHostBackupGetCheckpointFileInfoV2 et se termine par
1000016 dans fileName. Les messages d’avertissement qui ont exactement ces valeurs sont sans danger et
vous pouvez les ignorer en toute sécurité. À un moment donné, SQL Server les supprimera automatiquement.
Le fichier dans le dossier $FSLOG est utilisé en interne pour l’intégrité des transactions Filestream. SQL Server
interprète incorrectement le message d’avertissement comme un point de contrôle valide de la base de données
en mémoire. Dans ce cas, SQL Server l’avertissement dans le journal SQL Server’erreurs.
Erreur lorsque vous créez une sauvegarde
instantanée de nombreuses bases de données en
même temps dans SQL Server
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème (message) que lorsque vous créez une sauvegarde instantanée de
nombreuses bases de données en même temps
ERROR Selected writer 'Microsoft Writer (Service State)' is in failed state dans SQL Server.
Symptômes
Dans Microsoft SQL Server, vous créez une sauvegarde instantanée de nombreuses bases de données en même
temps. Pour ce faire, vous utilisez le service VSS (Volume Shadow Copy Service) ou l’interface VDI (Virtual
Backup Device Interface). Dans ce scénario, l’opération de sauvegarde de capture instantanée échoue. En outre,
vous recevez le message d’erreur suivant si vous utilisez le service VSS pour créer la sauvegarde de capture
instantanée :
ERREUR : l’auteur sélectionné « Rédacteur Microsoft (État du service) » est dans l’état d’échec !
État : 8 (VSS_WS_FAILED_AT_PREPARE_SNAPSHOT)
Code d’échec du rédacteur : 0x800423f4 ( )
Writer ID: { WriterID }
ID d’instance : { InstanceID }
Vous recevez l’un des messages d’erreur suivants si vous utilisez l’environnement VDI pour créer la sauvegarde
de capture instantanée :
Message d’erreur 1
[Microsoft] [Pilote SQL Server ODBC] [SQL Server] Ressources insuffisantes pour créer un
programmeur de SSM.
Msg 3267, SevLevel 16, State 1, SQLState 42000
Message d’erreur 2
[Microsoft] [Pilote SQL Server ODBC] [SQL Server] Le thread de travail n’a pas pu être créé.
Msg 3013, SevLevel 16, State 1, SQLState 42000
Message d’erreur 3
Le message suivant peut être consigné dans le journal SQL Server’erreurs :
Cause
Dans SQL Server, la sauvegarde instantanée de chaque base de données utilise cinq threads dans le Sqlservr.exe
de données. En outre, d’autres activités peuvent également utiliser des threads dans Sqlservr.exe processus.
Selon la configuration de SQL Server, les threads disponibles peuvent être utilisés si vous créez une sauvegarde
instantanée de nombreuses bases de données en même temps.
Solution de contournement
Pour contourner ce problème, créez une sauvegarde instantanée d’un nombre réduit de bases de données en
même temps.
Si vous exécutez une version 64 bits de SQL Server, vous pouvez envisager d’augmenter l’option de
configuration Des threads de travail max. Il n’est pas recommandé de modifier ce paramètre sur une version 32
bits de SQL Server.
Plus d’informations
Nous vous recommandons de créer une sauvegarde instantanée de moins de 35 bases de données en même
temps.
Erreur lorsque vous exécutez un objet CLR existant
ou créez un assembly
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre deux problèmes différents qui peuvent se produire lors de l’utilisation d’objets
CLR sur une base de données qui a été déplacée à partir d’une instance différente de SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 918040
Symptômes
Prenons le cas de figure suivant. Vous détachez ou remontez une base de données qui se trouve dans une
instance de SQL Server. L’instance de SQL Server est en cours d’exécution sur le serveur A. Par la suite, vous
attachez ou restituerez cette base de données à une instance de SQL Server qui est en cours d’exécution sur le
serveur B. Dans ce scénario, vous pouvez être face aux symptômes suivants :
Lorsque vous essayez d’exécuter un objet CLR (Common Language Runtime) existant avec l’autorisation
non sûre définie à partir de la base de données qui se trouve sur le serveur B, vous recevez le
external_access message d’erreur suivant :
Lorsque vous essayez de créer un assembly dont l’autorisation ou l’autorisation non sûre est définie dans
la même base de données, vous recevez external_access le message d’erreur suivant :
Cause
Ce problème se produit car la connexion que vous utilisez pour créer la base de données sur le serveur A ne se
trouve pas dans l’instance de SQL Server sur le serveur B. Cette connexion peut être la connexion microsoft
Windows ou la connexion SQL Server connexion.
Solution de contournement
Pour contourner ce problème, utilisez l’une des méthodes suivantes.
NOTE
Avant d’utiliser les méthodes suivantes, veillez à activer la propriété de base de données de confiance.
USE <DatabaseName>
GO
NOTE
Dans cette instruction, <DatabaseName> il s’agit d’un espace réservé au nom de la base de données sur qui vous
travaillez. Le propriétaire modifié de la base de données doit avoir les autorisations correspondantes pour
effectuer une tâche donnée. Par exemple, le propriétaire de la base de données doit avoir l’autorisation CREATE
ASSEMBLY pour créer un assembly.
Ajoutez la connexion sur l’instance de SQL Server sur le serveur A qui est utilisée pour créer la base de
données à l’instance de SQL Server sur le serveur B.
Si la connexion est un compte de domaine, vous pouvez créer la même connexion sur le serveur B. Accordez
ensuite les autorisations requises à la connexion sur l’instance de SQL Server sur le serveur B.
Si la connexion est une connexion SQL Server, assurez-vous que le SID de cette connexion correspond à la
nouvelle connexion SQL Server que vous créez sur l’instance de SQL Server sur le serveur B. Pour ce faire,
spécifiez l’argument SID de CREATE LOGIN l’instruction.
Plus d’informations
Si vous accédez à l’objet CLR à partir d’une autre base de données et que cette base de données présente un SID
DBO non identique, le même problème peut se produire.
Pour plus d’informations, consultez le blog suivant : CSS SQL Server Engineers.
Références
CREATE LOGIN (Transact-SQL)
sp_changedbowner (Transact-SQL)
CREATE ASSEMBLY (Transact-SQL)
SQL Server index de recherche en texte intégral sur
la colonne XML n’indexe pas les valeurs d’attribut
pour les nodes internes
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème dans lequel SQL Server index de texte intégral sur la colonne XML
n’indexe pas les valeurs d’attribut pour les nodes internes.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2513181
Symptômes
Dans Microsoft SQL Server lors de l’indexation d’une colonne XML à l’aide de valeurs de nœud de texte intégral
uniquement et de valeurs d’attribut pour le nœud supérieur sont indexés. Les valeurs d’attribut d’un des nodes
internes ne sont pas indexées.
Cause
Ce comportement se produit car l’breakeur de mots XML fourni avec SQL Server ne retourne pas les valeurs
d’attribut pour les nodes internes (xmlfilt.dll - Version : 12.0.9735.0).
Résolution
Ce problème peut être résolu à l’aide de l’outil d’coupure de mots XML fourni avec le système d’exploitation
Windows lorsque SQL Server est en cours d’exécution sur Windows 7 ou Windows Server 2008 R2 (version
livrée avec Windows utilise un nom de fichier différent - xmlfilter.dll). Si vous exécutez SQL Server sur une
version inférieure de Windows, vous devez d’abord mettre à niveau vers ces systèmes d’exploitation, puis utiliser
la procédure suivante pour résoudre ce problème.
Procédure pour résoudre le problème sur les serveurs SQL en cours d’exécution sur Windows Server 2008 R2
et Windows 7 :
IMPORTANT
Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des
problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à suivre ces
étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier. Vous pouvez alors le
restaurer en cas de problème. Pour plus d’informations sur la façon de back up et restore the registry, voir How to back
up and restore the registry in Windows.
NOTE
Vous devez redémarrer SQL Server service après avoir suivi la procédure suivante pour que les modifications entrent en
vigueur.
1. Accédez à la ruche de Registre suivante sur votre ordinateur SQL Server et enregistrez-la sous
SQLMSSearch.reg.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSearch\CLSID
NOTE
Remplacez le <instance> « » dans le chemin d’accès ci-dessus par l’ID d’instance approprié SQL Server/SQL Server.
Par exemple, « MSQL10. MSSQLSERVER » pour une instance par défaut ou « MSSQL10 . KATMAI » pour
une instance nommée « Katmai »
Pour plus d’informations, voir File Locations for Default and Named Instances of SQL Server.
2. Modifiez le fichier SQLMSSearch.reg avec le bloc-notes et remplacez toutes les occurrences de xmlfilt.dll
par, puis C:\Windows\system32\xmlfilter.dll enregistrez les modifications.
NOTE
Cela suppose que votre dossier Windows se trouve à C:\Windows l’emplacement .
Vous devez entrer chaque barre oblique inverse dans le nouveau chemin d’accès à deux reprises !
NOTE
Vous devez adapter la commande ci-dessus en fonction du chemin d Windows système correct sur votre système.
Assurez-vous également que toutes les langues (respectivement leur lcid), qui doivent afficher le nouveau
comportement, sont répertoriées dans la colonne « componentname » dans la sortie.
Plus d’informations
Étapes de la repro :
1. Créez un tableau simple comme suit :
2. Activez FTS sur le champ xmlField (la langue de cél’est-à-dire que vous sélectionnez ici n’est pas
pertinente pour le repro).
3. Insérez un enregistrement dans cette table, comme suit :
insert into testFTS (idField, xmlField) values
(1, '<TopNode TopFirstAtt="TopAttValue" TopSecondAtt="Second Value">
<MiddleNode FirstAtt="ValueOne" SecondAtt="ValueTwo" ThirdAtt="ValueThree">
<BottomNode BottomAtt="BottomValue">
<InnerMostNode>Innermost Text</InnerMostNode>
</BottomNode>
</MiddleNode>
<MiddleNode FirstAtt="ValueFour" SecondAtt="ValueFive" ThirdAtt="ValueSix">
<BottomNode BottomAtt="OtherBottomValue" />
</MiddleNode>
<MiddleNode FirstAtt="ValueSeven" SecondAtt="ValueEight" ThirdAtt="ValueNine">
<BottomNode BottomAtt="LastValue" />
</MiddleNode>
<NodeWithValue>Testing whether this value will be indexed</NodeWithValue>
</TopNode>')
0x0069006E0064006500 indexé 2 1
7800650064
0x0069006E006E006500 innermost 2 1
72006D006F00730074
0x007300650063006F00 second 2 1
6E0064
0x007400650073007400 test 2 1
69006E0067
0x0074006500780074 text 2 1
0x0074006F0070006100 topattvalue 2 1
74007400760061006C0
0750065
0x00760061006C007500 valeur 2 1
65
0x007700680065007400 si 2 1
6800650072
Cet article vous présente les problèmes qui peuvent se produire lorsque vous travaillez avec plusieurs index de
texte intégral et solutions pour contourner ces problèmes.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 4045273
Symptômes
Supposons que vous avez Microsoft SQL Server installé sur un serveur. Plusieurs scénarios sont envisageables :
Scénarios 1 :
Vous avez plusieurs index de texte intégral dans une ou plusieurs bases de données, et la population de
ces index de texte intégral se termine presque en même temps.
Scénarios 2 :
Vous créez un catalogue de texte intégral qui contient de nombreux index de texte intégral et la
population de ces index de texte intégral se termine presque en même temps.
Scénarios 3 :
Vous resserez un ou plusieurs catalogues de texte intégral dans lesquels plusieurs index terminent le
remplit en même temps ou presque.
Scénarios 4 :
Vous exécutez manuellement Alter Full-Text Catalogue réorganiser pour un catalogue qui contient de
nombreux index de texte intégral.
Dans l’une de ces situations, si vous activez l’indicateur de suivi (TF) 7603 pour que la journalisation détaillée de
la population de texte intégral soit consignée dans le journal d’erreurs SQL Server, vous voyez des messages qui
ressemblent à ce qui suit :
Date/heure SPIDIFTS : CFTWICrawl::Close, l’analyse complète a pris fin, planifiant une fusion principale pour
CrawlType : 1, DBid 7, catid 5, tid 13847411
Date/Heure SPID CFTMasterMergeListManager::QueueMasterMerge queued MM item for DBid 7, catalog 5,
tblid 13847411
Date/heure SPID IFTS : CFTWIAutoCrawlFullPass::ExecUnit::D oUnitWork : analyse existante trouvée, donc
retourner sans la passe complète d’analyse automatique, DBid 7 Catid 5 Objid 13847411
En outre, vous voyez une attente de 30 minutes pour la fusion principale, et le journal signale que la fusion
principale a été abandonnée :
IFTS SPID date/heure : les éléments de travail de fusion principale ont été abandonnés car ils ont attendu en
préinit pendant plus de 30 minutes m_DBid 7, m_objid 13847411
L’opération de fusion maître d’avertissement SPID date/heure n’a pas été effectuée pour DBid 7, 13847411,
donc l’index d’interrogation sera lent. Veuillez exécuter modifier la réorganisation du catalogue en texte
intégral.
Date/Heure SPID CFTMasterMergeListManager::RemoveMasterMerge released MM item for DBid 7, catalog
5, tblid 13847411
Date/heure SPID La fusion principale a commencé à la fin de l’analyse complète de la table ou de la vue
indexée « [DB1]. [dbo]. [Tableau1]' a échoué avec HRESULT = '0x80000049'. L’ID de base de données est « 7
» et l’ID de table 13847411, ID de catalogue : 5.
Cause
La fusion principale s’exécute automatiquement à la fin d’une population complète ou incrémentielle par index.
Le processus de fusion principale réduit le nombre de fragments pour un index de texte intégral afin que les
requêtes utilisant l’index de texte intégral ne deviennent pas affectées par les performances de l’index de texte
intégral.
Le processus de fusion principale utilise plusieurs threads pour réduire la fragmentation par index de texte
intégral. SQL Server le nombre de fusions maîtres simultanées qui s’exécutent en même temps. Dès que le seuil
est atteint, tout index de texte intégral qui tente d’exécuter une fusion principale sera retardé de 30 minutes. La
mise à jour de l’index de texte intégral ne démarre pas pendant cette période d’attente. La fusion principale
reprend si l’une des deux choses suivantes se produit :
Lorsque la prochaine population incrémentielle réussie se termine et démarre une fusion principale.
Exécutez manuellement une fusion principale en exécutant la commande suivante :
NOTE
Les deux options ci-dessus peuvent encore atteindre la limite de fusion principale en fonction du nombre de fusions
maîtres en cours d’exécution à ce moment-là.
Solution de contournement
Pour contourner ce besoin, essayez les méthodes suivantes :
Méthode 1 (recommandée) : limiter le nombre d’index de texte intégral dans le même catalogue.
Recommandé 7 ou moins. Les tables de grande taille doivent se faire dans leur propre catalogue de texte
intégral. Il s’agit d’une meilleure pratique pour les performances lorsque vous réorganisez ou réorganisez
des index. Cette méthode peut vous aider lorsque Change_tracking est auto.
Méthode 2 : définissez Change_Tracking manuelle, à l’aide de la commande suivante :
Ensuite, créez SQL Server tâches à répartir lorsque des populations incrémentielles sont exécutés. Cela se
traduit par moins de chevauchement lorsque vous exécutez une fusion principale après la population
d’index.
Microsoft SQL Server Besoins en matière de sous-
système d’I/S pour la base de données tempdb
15/08/2021 • 19 minutes to read
Cet article présente les conditions requises pour le sous-système d’I/S pour la base de données tempdb SQL
Server.
Version du produit d’origine : Microsoft SQL Server 2005, SQL Server 2008, SQL Server 2012 SQL Server
2014
Numéro de la ko d’origine : 917047
Résumé
Microsoft SQL Server nécessite que le sous-système d’E/S utilisé pour stocker les bases de données système et
utilisateur respecte entièrement les exigences de la journalisation Write-Ahead par le biais de principaux d’E/S
spécifiques. Ces exigences sont nécessaires pour respecter les propriétés DE LASO des transactions : Atomic,
Consistent, Isolated et Durable. Les détails sur les exigences de conformité du sous-système d’entrée/heure sont
fournis dans les références suivantes :
SQL Server 2000https://technet.microsoft.com/library/cc966500.aspx
NOTE
Cet article s’applique également SQL Server 2005 et versions ultérieures.
Survie en cas de panne Possibilité pour les données Obligatoire Non applicable
de rester entièrement
intactes (durable) en cas de
panne, telle qu’un
redémarrage du système.
Les réécritures de secteur transactionnel impliquent des opérations entièrement enregistrées par le sous-
système permettant à un secteur d’être entièrement déplacé, remplacé ou de revenir à l’image d’origine. Ces
réécritures sont généralement déconseillés en raison de la surcharge supplémentaire requise pour effectuer de
telles actions. Par exemple, il peut s’agit defragmentation d’un utilitaire qui déplace les données du fichier. Le
secteur d’origine dans le fichier ne peut pas être remplacé par le nouvel emplacement de secteur tant que le
nouveau secteur et les nouvelles données ne sont pas sécurisés. Le remappage du secteur doit se produire de
manière transactionnelle afin que toute défaillance, y compris une panne électrique, entraîne le rétablissement
des données d’origine. Assurez-vous que vous disposez de mécanismes de verrouillage disponibles au cours de
ce type de processus pour empêcher l’accès aux données non valide, ce qui a pour effet de bloquer les autres
clients de SQL Server E/S.
Survie en cas de panne
La base de données tempdb est un espace de scratch pour SQL Server et est reconstruite à chaque démarrage
SQL Server de base de données. L’initialisation a la place de tout besoin de données pour résister à un
redémarrage.
Opérations de réécriture de secteur transactionnel
Pour garantir la réussite des processus de récupération, tels que la restauration et la récupération sur incident,
les enregistrements journaux doivent être correctement stockés sur un support stable avant que la page de
données ne soit stockée et ne peuvent pas être réécrits sans respecter les propriétés transactionnelles. Pour ce
faire, le sous-système et les SQL Server doivent conserver des attributs spécifiques, tels que l’ordre d’écriture,
les écritures alignées sur le secteur et les tailles, ainsi que d’autres attributs de sécurité des E/S décrits dans les
documents mentionnés précédemment. Pour la base de données tempdb, la récupération sur incident est inutile,
car la base de données est toujours initialisée pendant SQL Server démarrage. Toutefois, la base de données
tempdb nécessite toujours des fonctionnalités de récupération. Par conséquent, certains attributs du protocole
WAL peuvent être relâchés.
L’emplacement de stockage de la base de données tempdb doit agir conformément aux protocoles de lecteur de
disque établis. De toutes façons, l’appareil sur lequel la base de données tempdb est stockée doit apparaître et
agir en tant que disque physique fournissant des fonctionnalités de lecture après écriture. Les opérations de
réécriture de secteur de transaction peuvent être une exigence supplémentaire d’implémentations spécifiques.
Par exemple, SQL Server ne prend pas en charge les modifications de base de données à l’aide de la
compression du système de fichiers NTFS, car la compression NTFS peut réécrire les secteurs du journal qui ont
déjà été écrits et considérés comme renforcés. Une défaillance lors de ce type de réécriture peut entraîner
l’inutilisation de la base de données, endommageant ainsi les données qui SQL Server déjà considérées comme
sécurisées.
NOTE
SQL Server 2005 a étendu la prise en charge ou la compression aux bases de données et groupes de fichiers en lecture
seule. Consultez la SQL Server 2005 Books Online pour plus d’informations.
Les opérations de réécriture de secteur transactionnel sont pertinentes pour toutes SQL Server de données qui
incluent la base de données tempdb. De plus en plus de technologies de stockage étendues utilisent des
appareils et des utilitaires qui peuvent réécrire des données qui SQL Server comme étant sécurisées. Par
exemple, certaines technologies émergentes effectuent une mise en cache en mémoire ou une compression de
données. Afin d’éviter de graves dommages de base de données, toute réécriture de secteur doit avoir une prise
en charge transactionnelle complète de telle sorte qu’en cas de défaillance, les données sont revenir aux images
de secteur précédentes. Cela garantit que les SQL Server ne sont jamais exposés à une interruption inattendue
ou à une condition de dommages de données.
Vous pourrez peut-être placer la base de données tempdb sur des sous-systèmes spécialisés, tels que des
disques RAM, un état plein ou d’autres implémentations à haut débit qui ne peuvent pas être utilisées pour
d’autres bases de données. Toutefois, les facteurs clés présentés dans la section « Plus d’informations » doivent
être pris en compte lorsque vous évaluez ces options.
NOTE
Les disques locaux dans les environnements en cluster de failover sont uniquement pris en charge avec des
implémentations à haut débit ou à état plein. Cela est dû au fait que le disque RAM ne peut être créé que sur une cible
iSCSI. En outre, les fonctionnalités de la cible iSCSI et du cluster de failover ne peuvent pas être utilisées sur le même hôte.
Plus d’informations
Plusieurs facteurs doivent être soigneusement évalués lorsque vous évaluez l’emplacement de stockage de la
base de données tempdb. Par exemple, l’utilisation de la base de données tempdb implique, sans s’y limiter,
l’encombrement mémoire, le plan de requête et les décisions d’O/S. Le réglage et l’implémentation appropriés
de la base de données tempdb peuvent améliorer l’évolutivité et la réactivité d’un système. Cette section décrit
les facteurs clés pour déterminer les besoins en stockage de la base de données tempdb.
Sous-systèmes haut débit
Il existe différentes implémentations de sous-système à haut débit disponibles sur le marché qui fournissent des
exigences de protocole de sous-système d’SQL Server D/S, mais qui ne fournissent pas de dulité du média.
IMPORTANT
Confirmez toujours auprès du fournisseur du produit pour garantir la conformité totale SQL Server besoins en matière
d’O/S.
Un disque RAM est un exemple courant d’une telle implémentation. Les disques RAM installent les pilotes
nécessaires et permettent à une partie du disque RAM principal d’apparaître et de fonctionner comme
n’importe quel lecteur de disque attaché au système. Tous les sous-systèmes d’entrée et de fin d’entreprise
doivent assurer la conformité totale avec SQL Server conditions requises en matière d’entrée et de fin
d’entreprise. Toutefois, il est évident qu’un disque RAM n’est pas un support durable. Par conséquent, une
implémentation telle qu’un disque RAM ne peut être utilisée que comme emplacement de la base de données
tempdb et ne peut être utilisée pour aucune autre base de données.
Clés à prendre en compte avant l’implémentation et le déploiement
Plusieurs points sont à prendre en considération avant le déploiement de la base de données tempdb sur ce
type de sous-système. Cette section utilise un disque RAM comme base de discussion, mais des résultats
similaires se produisent dans d’autres implémentations à haut débit.
Sécurité des I/S
La conformité de la lecture après écritures dans le secteur transactionnel et en écriture est une obligation. Ne
déployez jamais SQL Server sur un système qui ne prend pas entièrement en charge les besoins en matière
d’SQL Server D/S, ou vous risquez d’endommager et de perdre vos données.
Pages déjà mises en cache (cache DE RAM double)
Les tables temporaires sont comme toutes les autres tables d’une base de données. Ils sont mis en cache par le
pool de mémoires tampons et gérés par des opérations d’écriture différée. Le stockage de pages de tableau
temporaires sur un disque RAM entraîne une mise en cache double de ram, une dans le pool de mémoires
tampons et une sur le disque RAM. Cette action s’éloigne directement de la taille totale possible du pool de
mémoires tampons et réduit généralement les performances des SQL Server.
Abandon de la RAM
Le disque RAM désigne une partie de la RAM principale comme son nom l’indique. Plusieurs implémentations
de disques RAM et de caches de fichiers basés sur la RAM sont disponibles. Certaines activent également les
opérations de secours d’opérations d’opérations physiques. L’élément clé du cache de fichiers ram est qu’il
s’éloigne directement de la mémoire physique qui peut être utilisée par les SQL Server. Toujours avoir une
preuve forte que l’ajout d’un cache de fichiers basé sur la RAM améliore les performances de l’application et ne
diminue pas les autres performances de requête ou d’application.
Régler en premier
Une application doit se régler pour supprimer les tris et les hages inutiles et indésirables qui peuvent entraîner
l’utilisation de la base de données tempdb. Souvent, l’ajout d’un index peut supprimer complètement le besoin
de tri ou de hachage dans le plan, ce qui permet d’obtenir des performances optimales sans recourir à la base de
données tempdb.
Points d’avantages possibles
Les avantages de l’utilisation de la base de données tempdb sur un système à haut débit peuvent uniquement
être déterminés par des tests rigoureux et des mesures des charges de travail des applications. La charge de
travail doit être soigneusement mise en avant pour les caractéristiques dont la base de données tempdb peut
bénéficier, et la sécurité des I/S doit être confirmée avant le déploiement.
Les opérations de tri et de hachage fonctionnent avec les gestionnaires de mémoire SQL Server pour
déterminer la taille du scratch en mémoire pour chaque opération de tri ou de hachage. Dès que les données de
tri ou de hachage dépassent la zone de scratch en mémoire allouée, les données peuvent être écrites dans la
base de données tempdb. Cet algorithme a été étendu en SQL Server 2005, réduisant ainsi les exigences
d’utilisation de base de données tempdb par rapport aux versions antérieures de SQL Server.
Cau t i on
SQL Server est conçu pour prendre en compte les niveaux de mémoire et les activités de requête actuelles lors
de la prise de décisions de plan de requête qui impliquent l’utilisation d’opérations de base de données tempdb.
Par conséquent, les gains de performances varient considérablement en fonction des charges de travail et de la
conception des applications. Nous vous recommandons vivement d’effectuer les tests avec la solution préférée
pour déterminer les gains possibles et évaluer les exigences de sécurité des E/S avant un tel déploiement.
SQL Server utilise la base de données tempdb pour gérer diverses activités impliquant des tris, des hages, le
magasin de versions de lignes et des tables temp :
Les tableaux temporaires sont tenus à jour par les routines courantes de pool de mémoires tampons pour les
pages de données et n’offrent généralement pas d’avantages en terme de performances grâce aux
implémentations de sous-système spécialisées.
La base de données tempdb est utilisée comme zone de scratch pour les hèses et les tris. Il peut être utile de
réduire la latence des opérations d’opérations d’I/S. Toutefois, sachez que l’ajout d’un index pour éviter un
hachage ou un tri peut fournir un avantage similaire.
Exécutez les lignes de base avec et sans la base de données tempdb stockée sur le sous-système à haut débit
pour comparer les avantages. Une partie des tests doit inclure des requêtes sur la base de données utilisateur
qui n’impliquent pas de tris, de hésets ou de tables temporaires, puis vérifier que ces requêtes ne sont pas
affectées. Lorsque vous évaluez le système, les indicateurs de performances suivants peuvent être utiles.
Lecture physique et écriture d’octets dans la base de Si le déplacement de la base de données tempdb vers un
données tempdb périphérique, tel qu’un disque RAM, augmente l’I/S réelle de
la base de données tempdb, cela indique que la mémoire qui
a été retiré du pool de mémoires tampons entraîne une
augmentation de l’activité de la base de données tempdb. Ce
modèle est un indicateur que la durée de vie des pages de
base de données peut également être affectée de manière
négative.
IN DIC AT EUR DESC RIP T IO N / UT IL ISAT IO N
Durée de vie des pages Un déclin de la durée de vie des pages peut indiquer une
augmentation des besoins physiques en matière
d’entrée/de-fin d’une base de données utilisateur. La
diminution du taux peut indiquer que la mémoire qui a été
retiré du pool de mémoires tampons force les pages de base
de données à quitter prématurément le pool de mémoires
tampons. Combinez-les avec les autres indicateurs et testez
pour bien comprendre les limites des paramètres.
Fichiers de travail et actions de création de table de travail Si le déplacement de la base de données tempdb vers un
périphérique, tel qu’un disque RAM, modifie le plan de
requête en augmentant le nombre ou la taille des fichiers de
travail ou des tables de travail, cela indique que la mémoire
qui a été retiré du pool de mémoire tampon entraîne une
augmentation de l’activité de la base de données tempdb. Ce
modèle indique que la durée de vie des pages de base de
données peut également être affectée de manière négative.
O P ÉRAT IO N
Le secteur 2 est écrit sur l’appareil et compressé avec le secteur 1 pour économiser de l’espace.
L’appareil peut effectuer les actions suivantes pour sécuriser les données du secteur 1 lorsqu’il est combiné aux
données du secteur 2.
O P ÉRAT IO N
Décompressez le secteur 1 dans une zone de scratch, en laissant le secteur actuel 1 stockage en tant que données actives à
récupérer.
La possibilité de fournir des mécanismes de verrouillage autour des modifications du secteur et d’y faire
échouer les modifications en cas d’échec de la tentative d’échange de secteur est considérée comme conforme
de manière temporaire. Pour les implémentations qui utilisent le stockage physique pour le stockage étendu, il
inclut les aspects appropriés du journal des transactions pour sécuriser et récupérer les modifications qui ont
été appliquées aux structures sur disque afin de maintenir l’intégrité des fichiers de base de données SQL
Server.
Tout appareil qui permet la réécriture de secteurs doit prendre en charge les réécritures d’une manière
transactionnelle afin que SQL Server ne soit pas exposé à la perte de données.
NOTE
L’instance de SQL Server est redémarré lorsque des échecs d’I/S et de reprise en ligne se produisent dans la base de
données tempdb.
Références
Pour plus d’informations, cliquez sur les numéros d’article suivants pour afficher les articles de la Base de
connaissances Microsoft :
Ajout SQL Server diagnostics supplémentaires pour détecter les problèmes d’I/S non signalés
Le message d’erreur 823 peut indiquer des problèmes matériels ou système dans SQL Server
Utilisation de la mise en cache des disques avec SQL Server
Description de la prise en charge des fichiers de base de données réseau dans SQL Server
Microsoft ne certifie pas que les produits tiers fonctionneront avec Microsoft SQL Server
Recommandations en matière de performances SQL Server sur les machines virtuelles Azure
Optimisation de vos plans de requête avec l’estimateur SQL Server Cardinality 2014
Performances des requêtes
Les informations contenues dans ce document représentent l’affichage actuel de Microsoft Corporation sur les
problèmes abordés à la date de publication. Étant donné que Microsoft doit répondre à l’évolution des
conditions du marché, il ne doit pas être interprété comme un engagement de la part de Microsoft, et Microsoft
ne peut pas garantir la précision des informations présentées après la date de publication.
Ce livre blanc est uniquement à des fins d’information. MICROSOFT N’OFFRE AUCUNE GARANTIE, EXPRESS,
IMPLICITE OU STATUTAIRE, CONCERNANT LES INFORMATIONS DE CE DOCUMENT.
L’utilisateur est tenu d’observer la réglementation relative aux droits d’auteur applicable dans son pays. Aucune
partie de ce document ne peut être reproduite, stockée ou introduite dans un système de restitution, ou
transmise à quelque fin ou par quelque moyen que ce soit (électronique, mécanique, photocopie,
enregistrement ou autre) sans la permission expresse et écrite de Microsoft Corporation.
Microsoft peut détenir des brevets, avoir déposé des demandes d’enregistrement de brevets ou être titulaire de
marques, droits d’auteur ou autres droits de propriété intellectuelle portant sur tout ou partie des éléments qui
font l’objet du présent document. Sauf stipulation expresse contraire d’un contrat de licence écrit de Microsoft, la
fourniture de ce document n’a pas pour effet de vous concéder une licence sur ces brevets, marques, droits
d’auteur ou autres droits de propriété intellectuelle.
© 2006 Microsoft Corporation. Tous droits réservés.
Microsoft, Windows, Windows Server et SQL Server sont des marques déposées ou des marques de Microsoft
Corporation aux États-Unis et/ou dans d’autres pays.
SQL Server systèmes doivent prendre en charge la « distribution garantie sur les supports stables » comme
indiqué dans la SQL Server des programmes de fiabilité des SQL Server’entreprise. Pour plus d’informations sur
les exigences en matière d’entrée et de sortie pour le moteur SQL Server base de données, voir Moteur de base
de données Microsoft SQL Server input/output requirements.
Améliorer les performances des requêtes en texte
intégral dans SQL Server
13/08/2021 • 4 minutes to read
Cet article fournit une méthode pour améliorer les performances des requêtes qui utilisent des prédicats en
texte intégral SQL Server.
Version du produit d’origine : SQL Server 2008 Developer, SQL Server 2008 Enterprise, SQL Server 2008 R2
Datacenter, SQL Server 2008 R2 Developer, SQL Server 2008 R2 Enterprise, SQL Server 2008 R2 Standard, SQL
Server 2012 Developer, SQL Server 2012 Standard, SQL Server 2012 Web, SQL Server 2012 Enterprise
Numéro de la ko d’origine : 2549443
Résumé
Cet article décrit une méthode pour améliorer les performances des requêtes Microsoft SQL Server qui utilisent
des prédicats de recherche en texte intégral (tels que et ) et qui filtrent également CONTAINS CONTAINSTABLE les
données. Par exemple, cette méthode améliore les performances de la requête suivante :
select * from dbo.ftTest where CONTAINS(TextData, '"keyword"') and CDate > @date
Cette méthode vous permet de concevoir la requête, le schéma de table et l’index de texte intégral de telle sorte
que le moteur de recherche en texte intégral filtre les résultats avant qu’ils ne soient envoyés au moteur
relationnel. Par conséquent, le moteur relationnel n’a pas besoin de filtrer un jeu de données de grande taille.
Plus d’informations
Lorsque vous créez une requête de recherche en texte intégral, le facteur principal qui affecte les performances
de la requête est la quantité de données que le moteur de recherche en texte intégral doit traiter avant que les
données restantes ne sont envoyées au moteur relationnel. Dans SQL Server, vous pouvez améliorer les
performances de la requête en filtrant les lignes tôt pour réduire le nombre de lignes qui doivent être traitées
ultérieurement.
Dans les versions de SQL Server publiées avant SQL Server 2008, le moteur de recherche en texte intégral
renvoie toutes les lignes qui correspondent à un terme de recherche, puis le moteur relationnel applique tous
les filtres. Des améliorations ont été apportées à ce comportement SQL Server 2008, SQL Server 2008 R2 et
SQL Server 2012. Toutefois, il est difficile d’utiliser ces améliorations, car les index de recherche en texte intégral
sont organisés différemment des index de base de données. En outre, le moteur de recherche en texte intégral et
le moteur relationnel fonctionnent différemment. Par conséquent, la méthode que cet article décrit utilise la
fonction (TVF) pour filtrer les lignes tôt et pour réduire le nombre de lignes qui doivent être Table-Valued
traitées ultérieurement.
Par exemple, le plan de requête suivant renvoie 131051 lignes qui correspondent à une CONTAINS chaîne de
recherche. En outre, un opérateur de jointur dans le plan effectue un filtrage supplémentaire à l’aide d’une
recherche d’index.
Rows StmtText
-------------------- ---------------------------------------------------------------------------------------
-
1167 select CDate, ID from dbo.fttest where contains (c2, '"create"') and CDate> '08/05/2019'
Toutefois, si la requête inclut la colonne de clé d’index unique en texte intégral en tant que prédicat, le moteur de
recherche en texte intégral peut utiliser le prédicat pour filtrer les résultats au niveau du texte intégral. Dans ce
cas, tvf renvoie une quantité de données beaucoup plus petite avant que le filtrage supplémentaire ne soit
appliqué. Par exemple, la requête suivante spécifie cinq valeurs qui doivent correspondre à la condition c2, et le
tvf renvoie uniquement les résultats qui correspondent aux cinq valeurs :
Rows StmtText
------------------------------------------------------------------------------------------------------------
-------------------------------
5 select CDate, ID from dbo.fttest where contains (c2, '"create"') and CDate > '08/05/2019' and ID in (
654051, 644051, 649106, 465, 105)
La capacité du moteur de recherche en texte intégral à faire descendre les valeurs utilisées par la clé d’index
unique est la base de la méthode suivante.
Si un prédicat contient une colonne de type de données, vous pouvez inclure des informations de date dans la
colonne de clé d’index unique afin que seules les lignes qui correspondent à ce DateTime prédicat soient émises.
Pour ce faire, vous devez incorporer logiquement les informations de date dans la colonne clé. Toutefois, vous de
devez également modifier le type de données de colonne clé et les applications qui utilisent la requête.
Pour implémenter la méthode, modifiez le type de données de l’ID de clé unique en texte intégral en BIGINT. Les
4 premiers octets de l’ID clé capturent les valeurs d’année, de mois et de date de la colonne de date, et les 4
derniers octets restent identiques. Par exemple, le premier octet de l’ID de clé peut faire référence à l’année,
l’octet suivant peut faire référence au mois et les 2 derniers octets peuvent faire référence à la date. L’application
doit prendre en charge ce changement de type de données.
Ensuite, traduisez un prédicat de plage en prédicat sur l’ID de clé. Par exemple, le x < CDate < y prédicat de
plage peut être traduit dans (x*2^32 < ID < y*2^32) le prédicat. Étant donné que le prédicat traduit est un
prédicat sur la touche de texte intégral, le prédicat est envoyé dans le texte intégral Streaming Table-Valued
Functions (STVF). Ce comportement effectue efficacement des recherches dans la plage de dates.
Message d’erreur lorsque vous exécutez l’instruction
DBCC CHECKDB sur une base de données qui
contient une ou plusieurs tables très grandes dans
SQL Server : Le délai d’attente s’est produit pendant
l’attente d’un verrou
15/08/2021 • 2 minutes to read
Cet article présente un problème dans lequel vous recevez un message d’erreur lorsque vous essayez d’exécuter
l’instruction sur une base de données qui contient une DBCC CHECKDB grande table dans SQL Server.
Version du produit d’origine : SQL Server 2012, SQL Server 2008
Numéro de la ko d’origine : 919155
Symptômes
Prenons l’exemple du scénario suivant :
Vous avez une base de données qui contient une ou plusieurs tables très grandes.
La taille des tableaux est généralement de plusieurs centaines de gigaoctets (Go).
Vous exécutez l’instruction CHECKDB DBCC sur la base de données dans SQL Server.
Dans ce scénario, un message d’erreur semblable à ce qui suit est écrit dans le journal SQL Server’erreurs :
<DateTime> Spid65 Timeout occurred while waiting for latch: class 'DBCC_MULTIOBJECT_SCANNER', id
00000002201DED0, type 4, Task 0x000000000C80BEB8 : 6, waittime 300, flags 0xa, owning task
0x0000000005A0AC58. Continue d’attendre.
Toutefois, DBCC CHECKDB l’instruction se termine correctement. Vous pouvez ignorer le message d’erreur en toute
sécurité.
Cause
Ce problème se produit parce qu’un délai d’SQL Server passe par les chaînes IAM (Index Allocation Map). Le
verrou mentionné dans le message d’erreur est utilisé pour empêcher d’autres threads d’accéder à une liste.
Cette liste est construite par un thread qui parcourt les chaînes IAM pour tous les index associés à un tableau
donné. Si la table est suffisamment grande pour que la traversée de ces chaînes IAM prenne plus de 5 minutes,
vous pouvez faire l’expérience du délai d’verrouillage. En outre, ce problème est généralement pire lorsque les
I/S disque sont lents.
Statut
Ce comportement est inhérent au produit.
S’applique à
SQL Server Développeur 2008
SQL Server 2008 Enterprise
SQL Server 2008 Express
SQL Server 2008 Express avec services avancés
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server 2008 Standard
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2012 Business Intelligence
SQL Server Développeur 2012
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
Description des algorithmes de journalisation et de
stockage des données qui étendent la fiabilité des
données SQL Server
13/08/2021 • 20 minutes to read
Résumé
Cet article explique comment la journalisation Microsoft SQL Server et les algorithmes de données étendent la
fiabilité et l’intégrité des données.
Pour en savoir plus sur les concepts sous-jacents des moteurs et sur ARIES (Algorithm for Recovery and
Isolation Exploiting Sémantics), voir le document transactions ACM suivant sur les systèmes de base de données
(sous Volume 17, Numéro 1, mars 1992) :
ARIES : une méthode de récupération des transactions prise en charge Fine-Granularity verrouillage et
restaurations partielles à l’aide de la journalisation Write-Ahead journalisation
Le rédacteur principal de ce document est C. Mohan. Le document traite des techniques SQL Server pour
étendre la fiabilité et l’intégrité des données en relation avec les défaillances.
Nous vous recommandons de lire les articles suivants de la Base de connaissances Microsoft pour plus
d’informations sur la mise en cache et les discussions sur les modes d’échec alternatifs :
Description de la mise en cache des contrôleurs de disque dans SQL Server
Informations sur l’utilisation de caches de disque avec des SQL Server que chaque administrateur de
base de données doit connaître
Version du produit d’origine : SQL Server 2014, SQL Server 2012, SQL Server 2008, SQL Server 2005
Numéro de la ko d’origine : 230785
Plus d’informations
Avant de commencer la discussion approfondie, certains des termes utilisés tout au long de cet article sont
définis dans le tableau suivant.
T ERM E DÉF IN IT IO N
Dirty Page Page contenant les modifications de données qui n’ont pas
encore été vidées vers un stockage stable. Pour plus
d’informations sur les tampons de page sales, consultez la
rubrique « Écriture depages» SQL Server Books Online.
Le contenu s’applique également Microsoft SQL Server 2012
et versions ultérieures.
Page épinglée Page qui reste dans le cache de données et ne peut pas être
vidée vers un stockage stable tant que tous les
enregistrements journaux associés ne sont pas sécurisés
dans un emplacement de stockage stable.
Stockage volatile Tout support qui ne restera pas intact en cas d’échec.
NOTE
Pour cet exemple, supposons qu’il n’y a pas d’index et que la page concernée est la page 150.
BEGIN TRANSACTION
INSERT INTO tblTest VALUES (1)
COMMIT TRANSACTION
Ensuite, décomposez l’activité en étapes de journalisation, comme décrit dans le tableau suivant.
STAT EM EN T A C T IO N S EF F EC T UÉES
BEGIN TRANSACTION Écrit dans la zone de cache du journal. Toutefois, il n’est pas
nécessaire de vider le stockage stable, car le SQL Server n’a
pas apporté de modifications physiques.
VALIDER LA TRANSACTION
1. Un enregistrement du journal de validation est créé et les
enregistrements journaux associés à la transaction doivent
être écrits dans un stockage stable. La transaction n’est pas
considérée comme étant engager tant que les
enregistrements journaux ne sont pas correctement affectés
à un stockage stable.
2. La page de données 150 reste dans SQL Server cache de
données et n’est pas immédiatement vidée vers un stockage
stable. Lorsque les enregistrements journaux sont
correctement sécurisés, la récupération peut rétablir
l’opération, si nécessaire.
3. Les verrous transactionnels sont libérés.
Ne vous confondez pas avec les termes « verrouillage » et « journalisation ». Bien qu’il soit important, le
verrouillage et la journalisation sont des problèmes distincts lorsque vous traitez la clé d’enregistrement en cas
de problème. Dans l’exemple précédent, SQL Server place généralement le verrou sur la page 150 pour le temps
nécessaire pour effectuer les modifications d’insertion physique sur la page, et non pendant toute la durée de la
transaction. Le type de verrou approprié est établi pour protéger la ligne, la plage, la page ou le tableau si
nécessaire. Pour plus d’informations sur les types de verrous, reportez-vous SQL Server sections de verrouillage
Books Online.
Si vous regardez l’exemple plus en détail, vous pouvez vous demander ce qui se produit lorsque les processus
LazyWriter ou CheckPoint s’exécutent. SQL Server tous les purges appropriés vers un stockage stable pour les
enregistrements journaux transactionnels associés à la page sales et épinglées. Cela permet de s’assurer que la
page de données du protocole WAL ne peut jamais être écrite dans un stockage stable tant que les
enregistrements journaux transactionnels associés n’ont pas été vidés.
SQL Server stockage stable et stable
SQL Server améliore les opérations de page de données et de journal en incluant la connaissance des tailles de
secteur de disque (généralement 4 096 octets ou 512 octets).
Pour conserver les propriétés DE LASO d’une transaction, l’SQL Server doit tenir compte des points d’échec. En
cas de défaillance, de nombreuses spécifications de disque ne garantissent qu’un nombre limité d’opérations
d’écriture de secteur. La plupart des spécifications garantissent la réalisation d’une écriture à secteur unique en
cas de défaillance.
SQL Server utilise des pages de données de 8 Ko et le journal (s’il est vidé) sur des multiples de la taille du
secteur. (La plupart des lecteurs de disque utilisent 512 octets comme taille de secteur par défaut.) En cas de
défaillance, les SQL Server peuvent prendre en compte des opérations d’écriture plus importantes qu’un secteur
en retentant la parité de journal et en faisant appel à des techniques d’écriture de nettoyage.
Détection de page de resserr
Cette option permet de détecter SQL Server opérations d’exploitation incomplètes provoquées par des pannes
de courant ou d’autres pannes du système. Lorsque la valeur est True, un bit est retourné pour chaque secteur
de 512 octets dans une page de base de données de 8 kilo-octets (Ko) chaque fois que la page est écrite sur le
disque. Si un bit se trouve dans un état incorrect lorsque la page est lue par SQL Server, la page a été écrite de
manière incorrecte . une page de papier est détectée. Les pages pleines sont détectées pendant la récupération,
car toute page écrite de manière incorrecte est susceptible d’être lue par la récupération.
Bien SQL Server pages de base de données soient de 8 Ko, les disques effectuent des opérations d’entreprise à
l’aide d’un secteur de 512 byte. Par conséquent, 16 secteurs sont écrits par page de base de données. Une page
pleine peut se produire si le système tombe en panne (par exemple, en raison d’une panne d’alimentation) entre
le moment où le système d’exploitation écrit le premier secteur de 512 byte sur le disque et la fin de l’opération
d’E/S de 8 Ko. Si le premier secteur d’une page de base de données est correctement écrit avant la défaillance, la
page de base de données sur le disque s’affiche comme mise à jour, bien qu’elle n’a peut-être pas réussi.
En utilisant des caches de contrôleurs de disque avec batterie, vous pouvez vous assurer que les données sont
écrites correctement sur le disque ou qu’elles ne sont pas écrites du tout. Dans ce cas, ne définissez pas la
détection de page de recherche sur « true », car cela n’est pas nécessaire.
NOTE
La détection des pages de recherche n’est pas activée par défaut dans SQL Server. Pour plus d’informations, voir le site
web MSDN suivant :
NOTE
Tout cache que vous utilisez doit entièrement prendre en charge une solution avec batterie. Tous les autres mécanismes
de mise en cache sont suspectés d’altération des données et de perte de données. SQL Server fait tout son possible pour
garantir la mise à jour de la qualité de l’accès en activant FILE_FLAG_WRITE_THROUGH .
Les tests ont montré que de nombreuses configurations de disque dur peuvent contenir une mise en cache
d’écriture sans la sauvegarde de batterie appropriée. Les lecteurs SCSI, IDE et EIDE tirez pleinement parti des
caches d’écriture. Pour plus d’informations sur la façon dont les SSD fonctionnent avec SQL Server, consultez
l’article du blog CSS SQL Server Engineers :
SQL Server et SSD - Notes de Learning RDORR - Partie 1
Dans de nombreuses configurations, le seul moyen de désactiver correctement la mise en cache d’écriture d’un
lecteur IDE ou EIDE est d’utiliser un utilitaire de fabricant spécifique ou des jumpers situés sur le lecteur lui-
même. Pour vous assurer que le cache d’écriture est désactivé pour le lecteur lui-même, contactez le fabricant
du lecteur.
Les lecteurs SCSI ont également des caches d’écriture. Toutefois, ces caches peuvent généralement être
désactivés par le système d’exploitation. En cas de question, contactez le fabricant du lecteur pour obtenir les
utilitaires appropriés.
Écriture de l’empilement de cache
L’empilement du cache d’écriture est similaire au secteur. La définition suivante a été directement tirée du site
web d’un fabricant de disque IDE de premier plan :
Normalement, ce mode est actif. Le mode cache d’écriture accepte les données d’écriture de l’hôte dans la
mémoire tampon jusqu’à ce que la mémoire tampon soit pleine ou que le transfert de l’hôte soit terminé.
Une tâche d’écriture de disque commence à stocker les données hôtes sur le disque. Les commandes d’écriture
de l’hôte continuent d’être acceptées et les données transférées vers la mémoire tampon jusqu’à ce que la pile
de commandes d’écriture soit pleine ou que la mémoire tampon de données soit pleine. Le lecteur peut réorder
les commandes d’écriture pour optimiser le débit du lecteur.
Réaffectation automatique d’écriture (AWR )
Une autre technique courante utilisée pour protéger les données consiste à détecter les secteurs de mauvaise
qualité lors de la manipulation des données. L’explication suivante provient du site web d’un fabricant de disque
IDE de premier plan :
Cette fonctionnalité fait partie du cache d’écriture et réduit le risque de perte de données pendant les opérations
d’écriture différée. Si une erreur de disque se produit pendant le processus d’écriture du disque, la tâche du
disque s’arrête et le secteur suspect est réaffecté à un pool de secteurs alternatifs situés à la fin du lecteur. Après
la réaffectation, la tâche d’écriture de disque se poursuit jusqu’à ce qu’elle soit terminée.
Cette fonctionnalité peut être puissante si la sauvegarde de batterie est fournie pour le cache. Cela permet une
modification appropriée au redémarrage. Il est préférable de détecter les erreurs de disque, mais la sécurité des
données du protocole WAL nécessiterait une nouvelle fois que cette action soit effectuée en temps réel et non de
manière différée. Dans les paramètres WR, la technique AWR ne peut pas tenir compte d’une situation dans
laquelle une écriture de journal échoue en raison d’une erreur de secteur, mais le lecteur est plein. Le moteur de
base de données doit immédiatement connaître la défaillance afin que la transaction puisse être correctement
abandonnée, que l’administrateur puisse être averti et que les mesures appropriées soient prises pour sécuriser
les données et corriger la situation de défaillance multimédia.
Sécurité des données
Un administrateur de base de données doit prendre plusieurs précautions pour garantir la sécurité des données.
Il est toujours bon de s’assurer que votre stratégie de sauvegarde est suffisante pour récupérer après une
défaillance catastrophique. Le stockage hors site et d’autres précautions sont appropriés.
Testez régulièrement l’opération de restauration de base de données dans une base de données secondaire
ou de test.
Assurez-vous que tous les périphériques de mise en cache peuvent gérer toutes les situations de panne
(coupure de courant, secteurs mauvais, lecteurs de mauvaises commandes, panne du système, verrouillages,
pics d’alimentation, et ainsi de suite).
Assurez-vous que votre périphérique de mise en cache :
A intégré la sauvegarde de batterie
Peut rééditer des écritures lors de l’alimentation
Peut être entièrement désactivé si nécessaire
Gère le remappage de secteurs non bon en temps réel
Activer la détection de pages de découverte. (Cela a peu d’effet sur les performances.)
Configurez les lecteurs RAID permettant un échange à chaud d’un lecteur de disque défectueux, si possible.
Utilisez des contrôleurs de mise en cache plus nouveaux qui vous permet d’ajouter davantage d’espace
disque sans redémarrer le système d’exploitation. Il peut s’agit d’une solution idéale.
Lecteurs de test
Pour sécuriser entièrement vos données, vous devez vous assurer que la mise en cache des données est
correctement gérée. Dans de nombreux cas, vous devez désactiver la mise en cache d’écriture du lecteur de
disque.
NOTE
Assurez-vous qu’un autre mécanisme de mise en cache peut gérer correctement plusieurs types d’échec.
Microsoft a effectué des tests sur plusieurs lecteurs SCSI et IDE à l’aide de SQLIOSim l’utilitaire. Cet utilitaire
simule une activité de lecture/écriture asynchrone importante sur un périphérique de données et un
périphérique de journal simulés. Les statistiques de performances des tests indiquent les opérations d’écriture
moyennes par seconde entre 50 et 70 pour un lecteur dont la mise en cache d’écriture est désactivée et une
plage de temps de travail par minute entre 5 200 et 7 200.
Pour plus d’informations sur SQLIOSim l’utilitaire, voir l’article suivant dans la Base de connaissances Microsoft :
Utilisation de l’utilitaire SQLIOSim pour simuler SQL Server activité sur un sous-système de disque
De nombreux fabricants d’ordinateurs commandent les lecteurs en désactivant le cache d’écriture. Toutefois, les
tests montrent que ce n’est pas toujours le cas. Par conséquent, testez toujours complètement.
Périphériques de données
Dans toutes les situations, à l’SQL Server, seuls les enregistrements journaux doivent être vidés. Lors
d’opérations non enregistrées, les pages de données doivent également être vidées vers un stockage stable . il
n’existe aucun enregistrement de journal individuel pour régénérer les actions en cas de défaillance.
Les pages de données peuvent rester en cache jusqu’à ce que le processus LazyWriter ou CheckPoint les vide
vers un stockage stable. L’utilisation du protocole WAL pour s’assurer que les enregistrements journaux sont
correctement stockés permet de s’assurer que la récupération peut récupérer une page de données à un état
connu.
Cela ne signifie pas qu’il est conseillé de placer des fichiers de données sur un lecteur mis en cache. Lorsque le
SQL Server vide les pages de données vers un stockage stable, les enregistrements du journal peuvent être
tronqués à partir du journal des transactions. Si les pages de données sont stockées dans un cache volatile, il est
possible de tronqué les enregistrements journaux qui seraient utilisés pour récupérer une page en cas de
défaillance. Assurez-vous que vos périphériques de données et de journaux s’accommodent correctement du
stockage stable.
Augmentation des performances
La première question qui peut vous être posée est la suivante : « J’ai un lecteur IDE qui était en cache. Mais
lorsque je l’ai désactivée, mes performances sont devenues inférieures aux attentes. Pourquoi ?
La plupart des lecteurs IDE testés par Microsoft s’exécutent à 5 200 TPM et les lecteurs SCSI à 7 200 TPM.
Lorsque vous désactivez la mise en cache d’écriture du lecteur IDE, les performances mécaniques peuvent
devenir un facteur.
Pour résoudre la différence de performances, la méthode à suivre est claire : « Corriger le taux de transactions ».
De nombreux systèmes de traitement des transactions en ligne (OLTP) nécessitent un taux de transactions élevé.
Pour ces systèmes, envisagez d’utiliser un contrôleur de mise en cache qui peut prendre en charge un cache
d’écriture approprié et fournir l’amélioration des performances souhaitée tout en garantissant l’intégrité des
données.
Pour observer des changements de performances significatifs qui se produisent SQL Server sur un lecteur de
mise en cache, le taux de transactions a été augmenté à l’aide de petites transactions.
Les tests montrent que l’activité d’écriture élevée des mémoires tampons inférieure à 512 Ko ou supérieure à 2
Mo peut entraîner un ralentissement des performances.
Prenons l'exemple suivant :
SET NOCOUNT ON
GO
Le processus d’habillage de toute la série d’opérations en une seule transaction s’exécute en environ INSERT
quatre secondes dans toutes les configurations. Cela est dû au nombre de purges de journaux requises. Si vous
ne créez pas de transaction unique, toutes les transactions sont traitées INSERT comme une transaction
distincte. Par conséquent, tous les enregistrements journaux de la transaction doivent être vidés. Chaque purge a
une taille de 512 octets. Cela nécessite une intervention importante du lecteur mécanique.
Lorsqu’une transaction unique est utilisée, les enregistrements journaux de la transaction peuvent être
regroupés et une seule écriture plus importante peut être utilisée pour vider les enregistrements du journal
collectés. Cela réduit considérablement l’intervention mécanique.
WARNING
Nous vous recommandons de ne pas augmenter l’étendue de votre transaction. Les transactions de longue durée
peuvent entraîner un blocage excessif et indésirable, ainsi qu’une surcharge accrue. Utilisez les SQL Server:D de données
SQL Server des compteurs de performance pour afficher les compteurs basés sur le journal des transactions. Plus
précisément, le journal des octets vidés/s peut indiquer de nombreuses petites transactions qui peuvent entraîner une
activité de disque mécanique élevée.
Examinez les instructions associées au purgement du journal pour déterminer si la valeur Des octets du journal
vidés/s peut être réduite. Dans l’exemple précédent, une seule transaction a été utilisée. Toutefois, dans de
nombreux scénarios, cela peut entraîner un comportement de verrouillage non prévu. Examinez la conception
de la transaction. Vous pouvez utiliser du code semblable à ce qui suit pour exécuter des lots afin de réduire
l’activité de purge des journaux fréquente et faible :
BEGIN TRAN
GO
COMMIT TRAN
GO
SQL Server les systèmes doivent prendre en charge la distribution garantie sur des supports stables, comme
décrit dans le document de téléchargement SQL Server conditions requises pour la révision du programme de
fiabilité des SQL Server. Pour plus d’informations sur les exigences en matière d’entrée et de sortie pour le
moteur de base de données SQL Server, voir Moteur de base de données Microsoft SQL Server Input/Output
Requirements
Gérer le journal d’SQL Server journal des erreurs
13/08/2021 • 2 minutes to read
Cet article explique comment gérer le journal d’SQL Server journal des erreurs.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2199578
Résumé
Le journal Microsoft SQL Server’erreurs contient de nombreuses informations générées par le SQL Server. Le
journal des erreurs contient des messages d’information, des avertissements et des informations sur les
événements critiques. Le journal des erreurs contient également des informations sur les messages générés par
l’utilisateur et des informations d’audit telles que les événements de connexion (réussite et échec).
Le journal des erreurs est un point de données précieux pour SQL Server administrateurs. En tant
qu’administrateur, vous devez gérer la taille des journaux d’erreurs afin de pouvoir les utiliser lorsqu’ils sont
nécessaires.
Le fichier journal des erreurs est initialisé chaque fois que l’instance de SQL Server est démarrée. Si l’instance de
SQL Server n’a pas été redémarré pendant un certain temps, le fichier journal des erreurs peut devenir
important. Si de nombreuses exceptions (par exemple, des violations d’accès) ou des événements critiques (par
exemple, des assertions SQL Server) se produisent, ces événements peuvent générer un grand nombre
d’informations écrites dans le journal d’erreurs SQL Server.
Plus d’informations
Pour plus d’informations sur la configuration de ces valeurs à l’aide de T-SQL, consultez les billets de blog
suivants de Paul Randal et Jan Kare Lokna :
Limitation de la taille du fichier journal des erreurs SQL Server 2012
Limiter la taille du journal des erreurs
Afficher le journal SQL Server’erreurs dans SQL Server Management Studio (SSMS)
Cet article explique comment transmettre une variable à une requête de serveur liée.
Version du produit d’origine : SQL Server Livres en ligne
Numéro de la ko d’origine : 314520
Résumé
Lorsque vous interrogez un serveur lié, vous effectuez fréquemment une requête pass-through qui utilise
OPENQUERY OPENROWSET le , ou OPENDATASOURCE instruction. Vous pouvez consulter les exemples de SQL Server
Books Online pour savoir comment faire à l’aide de chaînes Transact-SQL prédéfinées, mais il n’existe aucun
exemple de la façon de transmettre une variable à ces fonctions. Cet article fournit trois exemples de passage
d’une variable à une requête de serveur liée.
Pour transmettre une variable à l’une des fonctions pass-through, vous devez créer une requête dynamique.
Toutes les données qui incluent des guillemets doivent être particulièrement manipulées.
Voir aussi
Pour plus d’informations, voir les rubriques suivantes :
OPENROWSET (Transact-SQL)
OPENQUERY (Transact- SQL)
OPENDATASOURCE (Transact-SQL)
sp_executesql (Transact-SQL)
Interopérabilité des index Columnstore avec le
modèle de mémoire de grande page dans SQL
Server
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème de performances lorsque vous utilisez un modèle de mémoire de
fonctionnalité et de Columnstore Index grande page dans SQL Server.
Version du produit d’origine : SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017, SQL
Server 2019
Numéro de la ko d’origine : 3210239
Symptômes
Prenons l’exemple du scénario suivant :
Dans une instance de SQL Server, vous utilisez l’indicateur de suivi 834 comme indicateur de démarrage.
Cette opération permet d’activer les allocations de pages importantes par le gestionnaire de mémoire
SQL Server afin d’améliorer les performances de l’instance 64 bits.
Vous utilisez la Columnstore Index fonctionnalité.
Dans ce scénario, vous devez faire face à un ou plusieurs des problèmes de performances suivants :
Erreur du Scheduler non rapportant et vidages de mémoire associés dans le journal SQL Server’erreurs.
Les requêtes Columnstore déclenchent des problèmes de performances graves.
Une SQL Server instance déclenche des violations d’accès lorsque vous exécutez des requêtes
Columnstore.
Vous rencontrez l’erreur suivante lorsque vous exécutez sp_createstats :
Mémoire système insuffisante dans la réserve de ressources « par défaut » pour exécuter cette
requête
Résolution
Pour résoudre ce problème, supprimez l’indicateur de suivi 834 (-T834) de SQL Server paramètres de
démarrage sur SQL Server instances qui utilisent des index Columnstore. Dans ces environnements, Microsoft
ne recommande pas l’utilisation d’un modèle de mémoire et encourage les clients à revenir à un modèle
large page conventional de lock pages mémoire.
NOTE
À partir SQL Server 2019, l’indicateur de suivi (TF) 876 est disponible pour activer le modèle de mémoire de grande page
pour columnstore. Voir DBCC TRACEON - Trace Flags (Transact-SQL).
Plus d’informations
SQL Server mémoire
SQL Server pages de grande taille expliquées
Optimisation des options de SQL Server lors de l’exécution dans des charges de travail hautes performances
Message d’erreur 34052 et PBM génère des alertes
sur les stratégies qui ont un mode d’évaluation SQL
Server
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où un travail d’agent SQL génère de fausses alertes lors de
l’utilisation de la gestion basée sur la stratégie (PBM).
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2923956
Symptômes
Prenons l’exemple du scénario suivant :
Vous créez une stratégie à l’aide de PBM dans SQL Server.
Le mode d’évaluation de la stratégie est à l’heure prévue.
L’une des conditions de la stratégie contient la ExecuteSql() fonction.
Dans ce scénario, lorsque le travail de l’agent SQL Server est exécuté, l’agent génère de fausses alertes et le
message d’erreur suivant est consigné dans le fichier journal d’erreurs SQL Server :
NOTE
Ce problème ne se produit pas lorsque vous exécutez ce travail manuellement.
Cause
Ce problème se produit en raison de la violation d’une stratégie PBM créée. PbM place les messages de violation
de stratégie dans le journal des erreurs comme mécanisme de suivi. Cela indique que vous devez examiner la
configuration du serveur pour déterminer pourquoi la stratégie est enfreinte.
Le problème est dû à l’utilisation de la ExecuteSql() fonction dans la stratégie. Cette fonction permet à l’auteur
de la stratégie de créer une condition exprimée dans Transact-SQL et peut également exécuter n’importe quel
code Transact-SQL dans PBM. Par conséquent, par défaut, le contexte de sécurité sous lequel le code s’exécute est
un compte à faibles privilèges MS_PolicyTsqlExecutionLogin. Le compte MS_PolicyTsqlExecutionLogin n’a pas
d’autorisations pour une base de données en plus de la msdb base de données. Toutefois, lorsqu’un travail
programmé s’exécute, l’une des premières instructions ajoutées automatiquement est l’instruction use [
<DBName> ] . Cette instruction entraîne l’échec de la vérification de stratégie.
Lorsque vous exécutez ce travail manuellement, SQL Server utilise votre contexte de sécurité actuel. Tant que
vous êtes autorisé à exécuter les requêtes dans la stratégie, ce travail sera évalué correctement.
Solution de contournement
Pour résoudre ce problème, accordez au compte MS_PolicyTsqlExecutionLogin les droits corrects pour exécuter
les instructions nécessaires.
Par exemple, le rôle public est suffisamment bon pour que certaines requêtes s’exécutent. Ce rôle peut être
modifié si nécessaire en fonction des besoins de l’entreprise et des stratégies de l’entreprise. Toutefois, il est peu
probable qu’il change, car ce comportement est destiné à des raisons de sécurité.
La restauration ou la récupération peut échouer ou
prendre beaucoup de temps si la notification de
requête est utilisée dans une base de données
14/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème où la restauration ou la récupération peut échouer ou prendre
beaucoup de temps si la notification de requête est utilisée dans une base de données.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2483090
Symptômes
Vous remarquerez peut-être un ou plusieurs des symptômes suivants avec une base de données configurée
pour les abonnements aux notifications de requête :
Symptôme 1 : la restauration de la base de données à partir de sa sauvegarde peut échouer avec le
message d’erreur 1205 si NEW_BROKER option est spécifiée pendant l’opération de restauration. En
outre, les fichiers de vidage sont générés dans SQL Server dossier Errorlog de l’utilisateur.
Symptôme 2 : la restauration de la base de données à partir de sa sauvegarde échoue et la base de
données est déconnectée. En outre, les messages suivants sont enregistrés dans le journal SQL
Server’erreurs :
Date Time SPID Query notification delivery could not send message on dialog '{ Dialog ID }.'. La
remise a échoué pour la notification ' ? <qn:QueryNotification
xmlns:qn="https://schemas.microsoft.com/SQL/Notifications/QueryNotification" id="2881"
type="change" source="database" info="restart" database_id="7"
sid="0x010500000000000515000000FA48F22A6990BA52422C73DFF9030000"> <qn:Message>
4a4c696b-645c-40fd-bfef-4f2bc7c599b4;eb99973e-3cc9-4c7e-b4b9 -47d8cf590c43</qn:Message>
</qn:QueryNotification>' because of the following error in service broker: 'The conversation handle
<Conversation Handler> " « is not found.'
NOTE
Vous pouvez rencontrer le problème lors de la phase de récupération de la base de données. La récupération est
également exécuté sur une base de données lorsque la base de données est mise en ligne, que le serveur est
redémarré, etc.
Cause
Cause du symptôme 1 : lorsque vous spécifiez une option NEW_BROKER lors de l’opération de restauration,
SQL Server tente de tronqué toutes les tables liées au Service Broker. La troncation nécessite SCH_M verrouiller
l’objet tronqué. La transaction principale contient donc un SCH_M sur sysdesend. Lorsqu’une base de données
est récupérée ou restaurée, par défaut, SQL Server tente de tirer toutes les notifications de requête en suspens,
ce qui nécessite l’insertion de lignes (messages) dans une table sysdesend. Cette opération nécessite un
verrouillage SCH_S la table. Toutefois, cette opération se produit sur une autre transaction et la tentative
d’acquisition SCH_S verrou est bloquée par le verrou SCH_M la première transaction. Par conséquent, le thread
qui exécute la restauration est désormais bloqué sur une ressource qu’il possède, une situation appelée blocage
autonome. Le blocage est détecté par le moniteur de blocage et le thread est interrompu, ce qui met fin à
l’opération de restauration.
Pour plus d’informations sur les verrous, voir Modes de verrouillage. Les autres symptômes mentionnés dans la
section Symptômes sont dus à des problèmes connus documentés dans les articles de résolution mentionnés
dans la section Résolution ci-dessous.
Résolution
Solution de contournement pour Symptôme 1 : vous pouvez contourner le problème en activant l’indicateur de
suivi au niveau de la session 9109 avant de tenter l’opération de restauration. Un exemple de script est illustré
ci-dessous :
dbcc traceon (9109)
go
RESTORE DATABASE [Test]
FROM DISK = N'C:\TestBackup.bak' WITH FILE = 1,
MOVE N'test_Data' TO N'C:\test.mdf',
MOVE N'test_Log' TO N'C:\test_1.ldf',
NOUNLOAD,
STATS = 1,
NEW_BROKER
go
dbcc traceoff (9109)
go
NOTE
Une fois la base de données entièrement restaurée ou récupérée, il est vivement recommandé de vérifier que les
notifications de requête sont bien tirées. Le moyen le plus simple d’y parvenir consiste à modifier l’état de la base de
données en lecture seule et à la revenir en lecture-écriture. Il existe d’autres façons de vérifier cela, notamment le
détachement et le rattachement de la base de données, le redémarrage SQL Server, etc.
Vous pouvez également éviter le problème en ne spécifiant pas l’option NEW_BROKER sur l’opération de
restauration et en l’utilisez avec l’option NEW_BROKER une fois la base de données ALTER DATABASE restaurée.
Pour plus d’informations, voir DBCC TRACEON - Trace Flags (Transact-SQL).
Exécuter un objet COM basé sur une DLL en dehors
SQL Server processus
14/08/2021 • 9 minutes to read
Cet article explique comment exécuter un objet COM basé sur une DLL en dehors SQL Server processus.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 198891
Résumé
Microsoft SQL Server permet de charger et d’exécuter des objets COM (Component Object Model)
personnalisés par le biais d’un ensemble de procédures stockées OLE Automation ou de procédures stockées
étendues. Par défaut, les objets COM basés sur une DLL sont chargés comme dans le serveur de processus, ce
qui signifie que les objets COM ne sont pas uniquement chargés dans l’espace d’adressa traitement de la
mémoire SQL Server, mais qu’ils ont également un accès complet à cet espace d’adressa visite mémoire. Par
conséquent, un objet COM chargé dans l’espace SQL Server processus doit respecter les mêmes règles que
n’importe quel fichier DLL. Il est possible qu’un objet COM soit en train de SQL Server mémoire ou de fuite de
ressources, ce qui peut provoquer une instabilité.
S’il est suspecté qu’un objet COM affecte la robustesse du processus SQL Server, vous pouvez utiliser les étapes
de cet article pour insérer l’objet COM en dehors de l’espace SQL Server processus. L’implémentation de la
spécification DCOM (Distributed Component Object Model) de transparence de l’emplacement dans le système
d’exploitation a permis d’exécuter un objet COM basé sur DLL en dehors de l’espace SQL Server processus.
Le processus d’exécution d’un objet COM basé sur une DLL en dehors de l’espace d’adressarage de l’application
principale est appelé « remoting ». La remoting nécessite qu’un autre exécutable soit un processus de
substitution à la place du SQL Server exécutable. L’exécutable par défaut utilisé par le Gestionnaire de contrôle
de service DCOM (Rpcss.exe) est nommé Dllhost.exe. La structure de prise en charge DCOM utilise le fichier
Dllhost.exe pour charger la DLL dans son espace de traitement, puis utilise des paires proxy/stub pour marshaler
l’interface demandée de manière transparente au client, qui est dans ce cas le SQL Server. Ce exécutable peut
accepter plusieurs demandes d’interface/méthode simultanément. Une fois l’utilisation de l’interface terminée,
le Gestionnaire de contrôle de service DCOM (SCM) gère le nettoyage et le déchargement du fichier Dllhost.exe.
Il n’est pas prévu que les objets COM conservent les informations d’état entre les ins instantiations.
Les étapes suivantes peuvent s’appliquer à tout objet COM basé sur une DLL créé dans l’espace de traitement
SQL Server, qu’il soit ins instantié par le biais d’une procédure stockée étendue ou par le biais d’une procédure
stockée sp_OACreate étendue.
Plus d’informations
Les informations sur les deux méthodes de base que vous pouvez utiliser pour inssérer l’objet COM hors
processus suivent.
Si l’objet COM est créé dans une procédure stockée étendue, le troisième paramètre de .
CoCreateInstance CoCreateInstanceEx CLSCTX_LOCAL_SERVER Ceci est illustré dans l’exemple de code
suivant à l’aide CoCreateInstance de :
WARNING
Toute modification incorrecte du Registre à l’aide de l’Éditeur du Registre ou d’une autre méthode peut entraîner
des problèmes sérieux. Ces problèmes peuvent nécessiter la réinstallation du système d'exploitation. Microsoft ne
peut pas garantir que ces problèmes puissent être résolus. Vous assumez l’ensemble des risques liés à la
modification du Registre.
1. Obtenez l’identificateur de classe (CLSID) de l’objet COM. Le CLSID est un nombre 128 bits et
considéré comme un identificateur global unique (GUID) utilisé pour identifier de manière unique
le composant, le module ou le fichier qui contient cet objet COM. Lors de la création d’objets COM
à l’aide des procédures stockées OLE Automation, le premier paramètre de la procédure stockée
est un identificateur programmatique ou le ProgID de l’objet OLE est utilisé pour dériver le CLSID.
Cette chaîne de caractères décrit la classe de l’objet OLE et a la forme suivante :
OLEComponent.Object
NOTE
Si vous ajoutez la ThreadingModel valeur, veillez à tester votre objet COM avant de l’implémenter.
{59F929A0-74D8-11D2-8CBC-08005A390B09}
L’identificateur d’application AppID est utilisé par DCOM pour associer la DLL à un fichier
exécutable.
7. Ajoutez une nouvelle sous-clé sous le nom et définissez son nom sur le même identificateur de
classe ou le même numéro GUID avec les HKEY_CLASSES_ROOT\AppID crochets insérés à l’étape
précédente.
8. Mettez en surbrillant le nom du GUID. Dans le menu Edition, cliquez sur Nouveau, puis
sélectionnez Valeur de chaîne. Sous la colonne Nom, tapez : DllSurrogate.
Laissez la colonne Données vide pour cette valeur. Étant donné que la colonne de données est vide,
cela indique à DCOM d’exécuter le fichier exécutable par défaut, Dllhost.exe et de charger l’objet
COM dans son espace de traitement.
9. Fermez l’Éditeur du Registre. Cliquez sur Démarrer , puis sur Exécuter . Dans la boîte de dialogue
Exécuter, tapez : DCOMCNFG.
Appuyez sur la touche Entrée pour ouvrir la boîte de dialogue Propriétés de configuration
COM distribuées. Cliquez sur l’onglet Propriétés par défaut et assurez-vous que l’option
Activer LE COM distribué sur cet ordinateur est sélectionnée. Si ce n’est pas le cas, sélectionnez-
le, puis cliquez sur Appliquer.
10. Assurez-vous que Windows compte d’utilisateur NT sous SQL Server est en cours d’exécution
dispose de l’autorisation Contrôle total sur les clés de Registre pour cet objet. Si les autorisations
ne sont pas suffisantes ou si les clés de Registre sont entrées de manière incorrecte, les erreurs
suivantes peuvent se produire lorsque vous créez l’objet COM :
11. Testez et voyez si cela exécute le fichier Dllhost.exe et charge l’objet COM dans son espace de
traitement. Pour ce faire, le Kit Windows ressources NT se trouve sur Windows ordinateur NT sur
lequel SQL Server’exécution. Ouvrez une invite de commandes et, à partir de l’invite de
commandes, exécutez le fichier Tlist.exe, qui affiche tous les processus et leurs identificateurs de
processus associés, ou identificateurs de processus (PID). Dans le script Transact-SQL qui est
exécuté et après l’exécution de cet appel, mais avant la fin du script, utilisez ce qui suit pour
retarder la fin du script de 20 secondes supplémentaires sp_OACreate :
Références
OLE Automation Stored Procedures (Transact-SQL)
Planifier et automatiser les sauvegardes de bases de
données SQL Server dans SQL Server Express
13/08/2021 • 5 minutes to read
Cet article présente l’utilisation d’un script transact-SQL et d’un programmeur de tâches Windows pour
automatiser les sauvegardes de bases de données SQL Server Express de manière programmée.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2019698
Résumé
SQL Server Express éditions ne proposent aucun moyen de planifier des travaux ou des plans de maintenance,
car le composant agent SQL Server n’est pas inclus dans ces éditions. Par conséquent, vous devez utiliser une
approche différente pour la back up de vos bases de données lorsque vous utilisez ces éditions.
Actuellement, SQL Server Express utilisateurs peuvent back up leurs bases de données à l’aide de l’une des
méthodes suivantes :
Utilisez SQL Server Management Studio ou Azure Data Studio. Pour plus d’informations sur l’utilisation de ces
outils pour la back up d’une base de données, voir les liens suivants :
Créer une sauvegarde de base de données complète
Didacticiel : Back up and restore databases using Azure Data Studio
Utilisez un script transact-SQL qui utilise la famille de commandes BACKUP DATABASE. Pour plus
d’informations, voir BACKUP (Transact-SQL).
Cet article explique comment utiliser un script Transact-SQL avec le Programmeur des tâches pour automatiser
les sauvegardes de bases de données SQL Server Express données de manière programmée.
NOTE
Cela s’applique uniquement SQL Server éditions express et non aux éditions SQL Server Express Base de données locale.
Plus d’informations
Vous devez suivre les quatre étapes suivantes pour SQL Server bases de données de gestion à l’aide Windows
de planification des tâches :
Étape A : créez une procédure stockée pour la back up de vos bases de données.
Connecter à votre instance SQL instance express et créez sp_BackupDatabases procédure stockée dans votre
base de données maître à l’aide du script à l’emplacement suivant :
SQL_Express_Backups
Étape B : Téléchargez l’outil SQLCMD (le cas échéant).
sqlcmd L’utilitaire vous permet d’entrer des instructions Transact-SQL, des procédures système et des fichiers
de script. Dans SQL Server 2014 et versions inférieures, l’utilitaire est livré dans le cadre du produit. À partir
SQL Server 2016, l’utilitaire est sqlcmd proposé en téléchargement séparé. Pour plus d’informations, examinez
l’utilitaire sqlcmd.
Étape C : Créer un fichier de lots à l’aide de l’éditeur de texte.
Dans un éditeur de texte, créez un fichier de lots nommé Sqlbackup.bat, puis copiez le texte de l’un des exemples
suivants dans ce fichier, selon votre scénario :
Tous les scénarios ci-dessous D:\SQLBackups s’utilisent en tant que titulaire d’une place. Le script doit être
ajusté à l’emplacement approprié du lecteur et du dossier de sauvegarde dans votre environnement.
Si vous utilisez l’authentification SQL, assurez-vous que l’accès au dossier est limité aux utilisateurs
autorisés, car les mots de passe sont stockés en texte clair.
NOTE
Le dossier du fichier exécutable se trouve généralement dans les variables Path du serveur une fois SQL Server installé ou
après l’avoir installé en tant SQLCMD qu’outil autonome. Toutefois, si la variable Path ne liste pas ce dossier, vous pouvez
ajouter son emplacement à la variable Path ou spécifier le chemin d’accès complet à l’utilitaire.
Exemple 1 : Sauvegardes complètes de toutes les bases de données dans l’instance nommée locale de
SQLEXPRESS à l’aide de l Windows authentification.
// Sqlbackup.bat
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\', @backupType='F'"
Exemple 2 : Sauvegardes différentielle de toutes les bases de données dans l’instance nommée locale de
SQLEXPRESS à l’aide d’un SQLLogin et de son mot de passe.
// Sqlbackup.bat
sqlcmd -U <YourSQLLogin> -P <StrongPassword> -S .\SQLEXPRESS -Q "EXEC sp_BackupDatabases@backupLocation
='D:\SQLBackups', @BackupType='D'"
NOTE
SQLLogin doit avoir au moins le rôle Opérateur de sauvegarde dans SQL Server.
Exemple 3 : Journal des sauvegardes de toutes les bases de données dans l’instance nommée locale de
SQLEXPRESS à l’aide Windows Authentification unique
// Sqlbackup.bat
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\',@backupType='L'"
Exemple 4 : Sauvegardes complètes de la base de données USERDB dans l’instance nommée locale de
SQLEXPRESS à l’aide de l’authentification Windows données
// Sqlbackup.bat
sqlcmd -S .\SQLEXPRESS -E -Q "EXEC sp_BackupDatabases @backupLocation='D:\SQLBackups\',
@databaseName='USERDB', @backupType='F'"
De même, vous pouvez effectuer une sauvegarde différentielle de USERDB en le césant dans « D » pour le
paramètre et une sauvegarde de journal de USERDB en le césant dans « L » pour @backupType le
@backupType paramètre.
Étape D : Planifier un travail à l’aide Windows de planification des tâches pour exécuter le fichier de lots que
vous avez créé à l’étape B. Pour ce faire, suivez les étapes suivantes :
1. Sur l’ordinateur qui s’SQL Server Express, cliquez sur Démarrer, puis dans la zone de texte tapez
TIP
En tant que test, exécutez le fichier de commandes de l’étape C à partir d’une invite de commandes qui est démarrée avec
le même compte d’utilisateur propriétaire de la tâche.
N’ignorez pas les choses suivantes lorsque vous utilisez la procédure documentée dans cet article :
Le service De planification des tâches doit être en cours d’exécution au moment où le travail est
programmé pour s’exécuter. Nous vous recommandons de définir le type de démarrage pour ce service
commeautomatique . Cela permet de s’assurer que le service sera en cours d’exécution même lors d’un
redémarrage.
Il doit y avoir beaucoup d’espace sur le lecteur sur lequel les sauvegardes sont en cours d’écriture. Nous
vous recommandons de nettoyer régulièrement les anciens fichiers du dossier de sauvegarde pour vous
assurer que vous ne manquez pas d’espace disque. Le script ne contient pas la logique de nettoyage des
anciens fichiers.
Références complémentaires
Vue d’ensemble du Programmeur de tâches
Configurer et dépanner un serveur lié à une base
de données Oracle dans SQL Server
14/08/2021 • 14 minutes to read
Cet article explique comment configurer un serveur lié à partir d’un ordinateur exécutant Microsoft SQL Server
vers une base de données Oracle et fournit des étapes de dépannage de base pour les erreurs courantes que
vous pouvez connaître lorsque vous définissez un serveur lié sur une base de données Oracle.
Version du produit d’origine : Microsoft SQL Server 2005 Édition Standard, Microsoft SQL Server 2005
Developer Edition, Microsoft SQL Server 2005 Êdition Entreprise, Microsoft SQL Server 2005 Express Edition,
Microsoft SQL Server 2005 Workgroup Edition
Numéro de la ko d’origine : 280106
Résumé
Cet article explique comment configurer un serveur lié à partir d’un ordinateur exécutant Microsoft SQL Server
vers une base de données Oracle et fournit des étapes de dépannage de base pour les erreurs courantes que
vous pouvez connaître lorsque vous définissez un serveur lié sur Oracle. La plupart des informations de cet
article s’appliquent aux environnements configurés pour utiliser le fournisseur MICROSOFT OLEDB pour Oracle
(MSDAORA). Évitez d’utiliser cette fonctionnalité dans de nouveaux travaux de développement et prévoyez de
modifier les applications qui utilisent actuellement cette fonctionnalité. Utilisez plutôt le fournisseur OLE DB
d’Oracle.
Pour plus d’informations sur la configuration d’un serveur lié à l’aide du fournisseur OLEDB d’Oracle, voir
Comment être opérationnel avec Oracle et les serveurs liés.
IMPORTANT
La version actuelle du pilote ODBC Microsoft pour Oracle est conforme à la spécification ODBC 2.5, tandis que le
fournisseur OLE DB pour Oracle est un fournisseur d’API OCI Oracle 7 natif. Le pilote et le fournisseur utilisent le client
SQL*Net (ou client Net8 pour Oracle 8x) et la bibliothèque OCI (Oracle Call Interface), ainsi que d’autres composants
clients Oracle, pour se connecter aux bases de données Oracle et récupérer des données. Les composants clients Oracle
sont importants et doivent être configurés correctement pour se connecter correctement aux bases de données Oracle à
l’aide du pilote et du fournisseur.
À partir de Microsoft Data Access Components (MDAC) version 2.5 et versions ultérieures, le pilote ODBC
Microsoft et le fournisseur OLE DB ne viennent en charge que Oracle 7 et Oracle 8i avec les limitations suivantes
:
Les types de données spécifiques à Oracle 8.x, tels que LESB, BLOB, BFILE, NCHAR, NCLOB et
NVARCHAR2, ne sont pas pris en charge.
La fonctionnalité Unicode sur les serveurs Oracle 7.x et 8.x n’est pas prise en charge.
Plusieurs instances de client Oracle, ou plusieurs domiciles Oracle, ne sont pas pris en charge, car elles
reposent sur la première occurrence de la maison Oracle dans la variable SYSTEM PATH.
Le renvoi de plusieurs jeux de résultats à partir d’une procédure stockée ou d’une instruction SQL par lot
n’est pas pris en charge à l’aide d’ADO ou d’OLEDB.
Les jointeurs externes imbrmbrées ne sont pas pris en charge.
La persistance XML n’est pas prise en charge.
La version supérieure à 8i n’est pas prise en charge à l’aide de ces pilotes.
NOTE
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.
Oracle
Client Microsoft Windows 2000 and later versions
--------------------------------------------------------------------------
7.x [HKEY_LOCAL_MACHINE\SOFTWARE
Microsoft\MSDTC\MTxOCI]
"OracleXaLib"="xa73.dll"
"OracleSqlLib"="SQLLib18.dll"
"OracleOciLib"="ociw32.dll"
8.0 [HKEY_LOCAL_MACHINE\SOFTWARE
\Microsoft\MSDTC\MTxOCI]
"OracleXaLib"="xa80.dll"
"OracleSqlLib"="sqllib80.dll"
"OracleOciLib"="oci.dll"
8.1 [HKEY_LOCAL_MACHINE\SOFTWARE
\Microsoft\MSDTC\MTxOCI]
"OracleXaLib"="oraclient8.dll"
"OracleSqlLib"="orasql8.dll"
"OracleOciLib"="oci.dll"
4. Redémarrez l’ordinateur qui s’exécute SQL Server après avoir installé le logiciel client Oracle.
5. Sur l’ordinateur qui exécute SQL Server, définissez un serveur lié à l’aide du script suivant.
NOTE
Si vous utilisez le pilote ODBC Microsoft pour Oracle, vous pouvez utiliser le paramètre @datasrc pour spécifier
un nom de DSN. Pour une connexion sans DSN, la chaîne de fournisseur est fournie par le biais du @provstr
paramètre. Avec Fournisseur Microsoft OLE DB pour Oracle, utilisez l’alias de serveur Oracle configuré dans le
fichier TNSNames.Ora pour le @datasrc paramètre. Pour plus d’informations, voir la rubrique « sp_addlinkedserver
» dans SQL Server Books Online.
Vous pouvez utiliser l’une des deux méthodes suivantes pour récupérer des informations étendues sur les
erreurs que vous pouvez voir lors de l’exécution d’une requête distribuée.
Méthode 1
Connecter à SQL Server l’SQL Server Management Studio et exécutez le code suivant pour activer
l’indicateur de suivi 7300.
DBCC Traceon(7300)
Méthode 2
Capturez l’événement « Erreurs OLEDB » qui se trouve dans la catégorie d’événement « Erreurs et
avertissements » dans SQL Profiler. Le format du message d’erreur est le suivant :
Vous pouvez rechercher du code d’erreur hexadm dans le fichier Oledberr.h inclus dans le Kit de
développement logiciel (SDK) MDAC.
Voici une liste des messages d’erreur courants qui peuvent se produire, ainsi que des informations sur la façon
de résoudre le message d’erreur.
NOTE
Si vous utilisez SQL Server version 2005 ou ultérieure, ces messages d’erreur peuvent être légèrement différents.
Toutefois, les ID d’erreur de ces messages d’erreur sont identiques à ceux des versions antérieures de SQL Server. Par
conséquent, vous pouvez les identifier par les ID d’erreur. Pour les problèmes liés aux performances, recherchez SQL Server
Books Online pour la rubrique Optimiser les requêtes distribuées.
Message 1
Erreur 7399 : le fournisseur OLE DB « %ls » pour le serveur lié « %ls » a signalé une erreur. %ls
Activer l’indicateur de suivi 7300 ou utiliser SQL Profiler pour capturer l’événement Erreurs OLEDB afin
de récupérer des informations d’erreur OLEDB étendues.
Message 2a
Message 2b
« Le client Oracle(tm) et les composants réseau n’ont pas été trouvés. Ces composants sont fournis
par Oracle Corporation et font partie de l’installation logicielle cliente Oracle version 7.3.3 (ou
supérieure) »
Ces erreurs se produisent en cas de problème de connectivité au serveur Oracle. Examinez la section
Techniques pour résoudre les problèmes de connectivité au serveur Oracle ci-dessous pour résoudre
d’autres problèmes.
Message 3
Erreur 7302 : Impossible de créer une instance du fournisseur OLE DB « MSDAORA » pour le serveur
lié « %ls ».
Assurez-vous que MSDAORA.dll fichier est enregistré correctement. (Le MSDAORA.dll est le fournisseur
Microsoft OLE DB pour le fichier Oracle.) Utilisez RegSvr32.exe pour inscrire Fournisseur Microsoft OLE
DB pour Oracle.
NOTE
Si vous utilisez un fournisseur Oracle tiers et que votre fournisseur Oracle ne peut pas s’exécuter en dehors d’un
processus SQL Server, autorisez-le à s’exécuter in-process en modifiant les options du fournisseur. Pour modifier
les options du fournisseur, utilisez l’une des méthodes suivantes.
Méthode 1 Recherchez la clé de Registre suivante. Ensuite, modifiez la valeur de l’entrée AllowInProcess
(DWORD) sur 1. Cette clé de Registre se trouve sous le nom du fournisseur correspondant :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Providers\ProviderName .
Méthode 2 Définissez l’option Autoriser l’inprocesseur directement via SQL Server Entreprise lorsque vous
ajoutez un nouveau serveur lié. Cliquez sur Options du fournisseur, puis cochez la case Autoriser inProcess.
Message 4
Ce message d’erreur indique que le serveur lié n’a pas de mappage de connexion correct. Vous pouvez
exécuter la sp_helplinkedsrvlogin procédure stockée pour définir correctement les informations de
connexion. Vérifiez également que vous avez spécifié les paramètres corrects pour la configuration du
serveur lié.
Message 5
Erreur 7306 : Impossible d’ouvrir la table « %ls » à partir du fournisseur OLE DB « MSDAORA » pour
le serveur lié « %ls ». La table spécifiée n’existe pas. [Message renvoyé par le fournisseur OLE/DB : La
table n’existe pas.] [Message renvoyé par le fournisseur OLE/DB : ORA-00942 : la table ou la vue
n’existe pas] Suivi des erreurs OLE DB [OLE/DB Provider 'MSDAORA' IOpenRowset::OpenRowset
returned 0x80040e37: The specified table does not exist.].
Erreur 7312 : Utilisation incorrecte du schéma et/ou du catalogue pour le fournisseur OLE DB « %ls »
pour le serveur lié « %ls ». Un nom en quatre partie a été fourni, mais le fournisseur n’expose pas les
interfaces nécessaires pour utiliser un catalogue et/ou un schéma.
Erreur 7313 : un schéma ou un catalogue non valide a été spécifié pour le fournisseur « %ls » pour le
serveur lié « %ls ».
Erreur 7314 : le fournisseur OLE DB « %ls » pour le serveur lié « %ls » ne contient pas la table « %ls ».
La table n’existe pas ou l’utilisateur actuel n’a pas d’autorisations sur cette table.
Si vous recevez ces messages d’erreur, il se peut qu’une table soit manquante dans le schéma Oracle ou
que vous ne soyez pas autorisé à le faire. Vérifiez que le nom du schéma a été tapé en minuscules. Le cas
alphabétique du tableau et des colonnes doit être tel que spécifié dans les tables système Oracle.
Côté Oracle, une table ou une colonne créée sans guillemets doubles est stockée en minuscules. Si la
table ou la colonne est entourée de guillemets doubles, la table ou la colonne est stockée telle qu’elle est.
L’appel suivant indique si la table existe dans le schéma Oracle. Cet appel indique également le nom exact
de la table.
sp_tables_ex @table_server=Ora817Link, @table_schema='your_schema_name'
Message 6
Erreur 7413 : Connexion au serveur lié « %ls » (fournisseur OLE DB « %ls »). Activez la délégation ou
utilisez une connexion SQL Server à distance pour l’utilisateur actuel. Msg 18456, Level 14, State 1,
Line 1 Login failed for user ' ' .
Ce message d’erreur indique qu’une requête distribuée est tentée pour une connexion authentifiée
microsoft Windows sans mappage de connexion explicite. Dans un environnement de système
d’exploitation dans lequel la délégation de sécurité n’est pas prise en charge, les connexions authentifiées
par Windows NT ont besoin d’un mappage explicite à une connexion à distance et à un mot de passe
créés à l’aide de sp_addlinkedsrvlogin .
Message 7
Erreur 7391 : L’opération n’a pas pu être effectuée car le fournisseur OLE DB « MSDAORA » pour le
serveur lié « %ls » n’a pas pu commencer une transaction distribuée. OLE DB error trace [OLE/DB
Provider 'MSDAORA' ITransactionJoin::JoinTransaction returned 0x8004d01b]
Vérifiez que les versions OCI sont correctement enregistrées, comme décrit plus tôt dans cet article.
NOTE
Si les entrées de Registre sont correctes, le fichier MtxOCI.dll est chargé. Si le MtxOCI.dll n’est pas chargé, vous ne
pouvez pas effectuer de transactions distribuées sur Oracle à l’aide de Fournisseur Microsoft OLE DB pour Oracle
ou à l’aide du pilote ODBC Microsoft pour Oracle. Si vous utilisez un fournisseur tiers et que vous recevez l’erreur
7391, vérifiez que le fournisseur OLE DB que vous utilisez prend en charge les transactions distribuées. Si le
fournisseur OLE DB prend en charge les transactions distribuées, vérifiez que le MSDTC (Microsoft Distributed
Transaction Coordinator) est en cours d’exécution et que l’accès réseau est activé.
Message 8
Erreur 7392 : Impossible de démarrer une transaction pour le fournisseur OLE DB « MSDAORA »
pour le serveur lié « %ls ». Suivi des erreurs OLE DB [OLE/DB Provider 'MSDAORA'
ITransactionLocal::StartTransaction returned 0x8004d013: ISOLEVEL=4096].
Le fournisseur OLE DB a renvoyé l’erreur 7392, car une seule transaction peut être active pour cette
session. Cette erreur indique qu’une instruction de modification de données est tentée contre un
fournisseur OLE DB lorsque la connexion se trouve dans une transaction explicite ou implicite, et que le
fournisseur OLE DB ne prend pas en charge les transactions imbrmbrées. SQL Server nécessite cette
prise en charge afin que, dans certaines conditions d’erreur, elle puisse mettre fin aux effets de
l’instruction de modification des données tout en continuant la transaction.
Si la valeur est ON, SQL Server ne nécessite pas la prise en charge des SET XACT_ABORT transactions
imbrmbrées du fournisseur OLE DB. Par conséquent, exécutez avant d’exécuter des instructions de
modification de données sur des tables distantes dans SET XACT_ABORT ON une transaction implicite ou
explicite. Faites-le au cas où le fournisseur OLE DB que vous utilisez ne prend pas en charge les
transactions imbrmbrées.
NOTE
Si vous ne pouvez pas vous connecter à Oracle et récupérer des données, vous avez une installation ou une
configuration des composants clients Oracle mauvaise ou vous n’avez pas correctement créé un alias de service
TNS (Transparent Network Substrate) pour le serveur Oracle lorsque vous avez utilisé l’utilitaire de configuration
simple SQL*Net ou Oracle Net8 Easy Configuration. Contactez votre administrateur de base de données Oracle
pour vérifier que les composants Oracle dont vous avez besoin sont correctement installés et configurés.
2. Vérifiez la version du client Oracle (version SQL Net) installée * sur l’ordinateur. Le pilote ODBC Microsoft
pour Oracle et le Fournisseur Microsoft OLE DB pour Oracle nécessitent l’installation de SQL*Net version
2.3 ou ultérieure sur l’ordinateur client.
La connectivité de SQL Plus (l’outil de requête client Oracle) peut sembler fonctionner, mais vous devez
redémarrer votre ordinateur pour que la connectivité ODBC/OLE DB fonctionne correctement.
NOTE
Lorsque vous utilisez Oracle 8i, le fichier .rgs est vide.
3. Si le client Oracle est installé et que vous recevez une erreur qui indique que les composants client Oracle
7.3 ou ultérieur doivent être installés sur l’ordinateur, vérifiez que la variable d’environnement PATH sur
l’ordinateur client contient le dossier dans lequel le client Oracle a été installé, par exemple,
Oracle_Root\Bin. Si vous ne trouvez pas ce dossier, ajoutez-le à la variable PATH pour résoudre l’erreur.
4. Vérifiez que le Ociw32.dll est dans le dossier Oracle_Root\bin. Ce .dll ne peut pas exister à un autre
emplacement sur l’ordinateur client. Assurez-vous que les DLL de composant client Oracle (par exemple,
le fichier Core40.dll et le fichier Ora.dll) n’existent pas en dehors du dossier Oracle_Root ou des * sous-
dossiers.
5. Vérifiez qu’une seule version du client Oracle est installée sur l’ordinateur. Plusieurs versions de SQL*Net
ne peuvent pas exister sur le même ordinateur client avec des interférences et des opérations critiques
(par exemple, recherche de TNS et d’alias).
6. Microsoft recommande d’avoir une installation locale du client Oracle et de ne pas le faire en m mappage
d’un client Oracle distant sur votre ordinateur, puis de l’inclure dans le chemin d’accès du système pour
vous connecter à Oracle via ODBC/OLE DB. Toutefois, le fournisseur et le pilote sont testés avec un client
Oracle installé localement et non sur un partage réseau.
Voir aussi
Historique des pilotes pour Microsoft SQL Server
Serveurs liés (Moteur de base de données)
L’espace utilisé par une table n’est pas
complètement libéré après l’utilisation d’une
instruction DELETE pour supprimer des données de
la table dans SQL Server
14/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème qu’une table utilise ne peut pas être libéré après avoir utilisé une
instruction DELETE pour supprimer toutes les données de la table.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 913399
Symptômes
Après avoir utilisé une instruction DELETE dans Microsoft SQL Server pour supprimer des données d’une table,
vous remarquerez peut-être que l’espace utilisé par la table n’est pas complètement libéré. Lorsque vous essayez
ensuite d’insérer des données dans la base de données, vous pouvez recevoir le message d’erreur suivant :
Could not allocate space for object 'TableName ' in database 'DatabaseName ' because the 'PRIMARY'
filegroup is full.
NOTE
TableName représente le nom de la table. DatabaseName représente le nom de la base de données qui contient la
table.
Cause
Ce problème se produit car SQL Server libère uniquement toutes les pages qu’une table de tas utilise lorsque
les conditions suivantes sont vraies :
Une suppression se produit dans cette table.
Un verrou au niveau de la table est maintenu.
NOTE
Une table de tas est une table qui n’est pas associée à un index en cluster.
Si les pages ne sont pas désattribuées, les autres objets de la base de données ne peuvent pas réutiliser les
pages.
Toutefois, lorsque vous activez un niveau d’isolation de ligne dans une base de données SQL Server 2005, les
pages ne peuvent pas être libérées même si un verrou au niveau de la versioning-based table est maintenu.
Pour plus d’informations sur les niveaux d’isolation des lignes, voir la rubrique « Utilisation des niveaux
d’isolation basés sur le système de version de ligne » dans versioning-based SQL Server 2005 Books Online.
Solution de contournement
Pour contourner ce problème, utilisez l’une des méthodes suivantes :
Incluez un conseil TABLOCK dans l’instruction DELETE si un niveau d’isolation basé sur le contrôle de
version de ligne n’est pas activé. Par exemple, utilisez une instruction semblable à ce qui suit :
NOTE
<TableName> représente le nom de la table.
Utilisez l’instruction TRUNCATE TABLE si vous souhaitez supprimer tous les enregistrements de la table.
Par exemple, utilisez une instruction semblable à ce qui suit :
Créez un index en cluster sur une colonne du tableau. Pour plus d’informations sur la création d’un index
en cluster sur une table, voir la rubrique « Création d’un index en cluster » dans SQL Server Books Online.
Description de la prise en charge SQL Server de
données sur les volumes compressés
15/08/2021 • 4 minutes to read
Cet article décrit le comportement SQL Server de stockage des fichiers de base de données sur les lecteurs
compressés.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 231347
Résumé
SQL Server bases de données ne sont pas pris en charge sur les volumes compressés NTFS ou FAT, sauf dans
des circonstances particulières pour SQL Server 2005 et les versions ultérieures. Un volume compressé ne
garantit pas les écritures alignées sur le secteur, qui sont nécessaires pour garantir la récupération
transactionnelle dans certaines circonstances.
Pour SQL Server versions 2005 et ultérieures, le stockage des fichiers de base de données sur les lecteurs
compressés se comporte comme suit :
Si votre fichier de données appartient à un groupe de fichiers en lecture seule, le fichier est autorisé.
Si votre fichier de données appartient à une base de données en lecture seule, le fichier est autorisé.
Si votre fichier journal des transactions appartient à une base de données en lecture seule, le fichier est
autorisé.
Si vous essayez d’ouvrir une base de données en lecture/écriture avec des fichiers sur un lecteur
compressé, SQL Server génère l’erreur suivante :
Msg 5118, Level 16, State 2, Line 1 The file « < file_name > » is compressed but does not reside in a
read-only database or filegroup. Le fichier doit être décompressé.
Pour plus d’informations sur les exclusions pour les bases de données en lecture seule et les groupes de fichiers
en lecture seule dans SQL Server 2008, consultez le site web MSDN suivant :
Compression et groupes de fichiers en lecture seule
NOTE
Cette rubrique s’applique également SQL Server 2012 et versions ultérieures.
Plus d’informations
Bien qu’il soit physiquement possible d’ajouter SQL Server bases de données sur des volumes compressés, cela
n’est pas recommandé et nous ne le prisent pas en charge. Les raisons sous-jacentes de ce problème sont les
suivantes :
Performances
Les bases de données sur des volumes compressés peuvent entraîner une surcharge de performances
importante. Le montant varie en fonction du volume d’I/S et du rapport entre les écritures et les lectures.
Toutefois, une dégradation de plus de 500 % a été observée dans certaines conditions.
Récupération de base de données
Une récupération transactionnelle fiable de la base de données nécessite des écritures alignées sur le
secteur, et les volumes compressés ne la prisent pas en charge. Un deuxième problème concerne la
gestion de l’espace de récupération interne. SQL Server réserve en interne de l’espace alloué dans les
fichiers de base de données pour les récupérations. Il est possible sur les volumes compressés de
recevoir une erreur d’espace vide sur les fichiers préalloqués, ce qui interfère avec la récupération réussie.
Dans certains scénarios, une sauvegarde SQL Server vers un volume compressé ou un dossier compressé n’est
pas réussie. Lorsque ce problème se produit, vous recevez l’un des messages d’erreur suivants.
Dans Windows Vista et les versions ultérieures de Windows
Pour plus d’informations sur ce problème, voir un fichier fortement fragmenté dans un volume NTFS peut ne
pas croître au-delà d’une certaine taille.
NOTE
Le correctif logiciel pour Windows Vista et les versions ultérieures de Windows décrits dans l’article de la 967351 de la
Ko peut ne pas résoudre le problème des sauvegardes SQL Server qui ne sont pas réussies sur un volume compressé
ou sur un dossier compressé. Toutefois, ce correctif vous aidera à médiationr le problème.
Après avoir appliqué le correctif logiciel décrit dans l’article de la base de 967351, vous devez mettre en forme le
lecteur sur lequel la compression est activée à l’aide du /L paramètre. Lorsque vous formatez le lecteur sur lequel la
compression est activée à l’aide du paramètre, le segment Octets par enregistrement de fichier passe de 1 024 octets à
/L 4 096 octets.
SQL Server sauvegardes sur des volumes compressés peuvent économiser de l’espace disque. Toutefois, ils
peuvent augmenter l’utilisation du processeur pendant l’opération de sauvegarde. Nous vous recommandons
toujours d’utiliser les installations de sommes de contrôle BACKUP pour garantir l’intégrité des données.
SQL Server systèmes doivent prendre en charge la distribution garantie sur des supports stables, comme
indiqué dans la SQL Serverdes programmes de fiabilité des SQL Server'
Pour plus d’informations sur les exigences en matière d’entrée et de sortie pour le moteur de base de données
SQL Server, voir Moteur de base de données Microsoft SQL Server d’entrée/sortie requises
Description de la prise en charge des fichiers de
base de données réseau dans SQL Server
15/08/2021 • 10 minutes to read
Cet article décrit la prise en charge des fichiers de base de données réseau dans SQL Server et explique
comment configurer SQL Server pour stocker une base de données sur un serveur réseau ou un serveur de
stockage NAS.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 304261
Résumé
Microsoft recommande généralement d’utiliser un réseau san (Stockage Area Network) ou un disque connecté
localement pour le stockage de vos fichiers de base de données Microsoft SQL Server, car cette configuration
optimise les performances SQL Server et la fiabilité. Par défaut, l’utilisation de fichiers de base de données
réseau stockés sur un serveur réseau ou un serveur NAS (Network Attached Stockage) n’est pas activée pour les
SQL Server.
Toutefois, vous pouvez configurer SQL Server pour stocker une base de données sur un serveur réseau ou un
serveur NAS. Les serveurs utilisés à cet effet doivent respecter SQL Server conditions requises pour l’ordre
d’écriture des données et les garanties d’écriture par écriture. Ces informations sont détaillées dans la section
Plus d’informations.
Les conditions suivantes décrivent l’utilisation des fichiers de base de données réseau stockés sur un serveur
réseau ou un serveur NAS :
Cette utilisation est activée par défaut dans Microsoft SQL Server 2008 R2 et versions ultérieures.
Cette utilisation nécessite que l’indicateur de suivi de démarrage -T1807 fonctionne dans Microsoft SQL
Server 2008 et versions antérieures. Pour plus d’informations sur la façon d’activer les indicateurs de
suivi de démarrage, Moteur de base de données options de démarrage du service.
NOTE
Pour être prise en charge par SQL Server, la solution de stockage NAS doit également répondre à toutes les conditions
requises répertoriées dans le document de téléchargement : SQL Server programme de fiabilité des entrées et des
produits .
Autres appareils
Si vous utilisez un périphérique de stockage non qualifié WHQL avec des SQL Server qui prend en charge les
garanties d’opérations d’I/S pour l’utilisation des bases de données transactionnelles décrites dans cet article,
Microsoft prend entièrement en charge les applications SQL Server et SQL Server. Toutefois, les problèmes avec
l’appareil ou son sous-système de stockage, ou causés par celui-ci, sont renvoyés au fabricant de l’appareil. Si
vous utilisez un dispositif de stockage non qualifié WHQL qui ne prend pas en charge les garanties d’opérations
d’opérations d’exploitation pour l’utilisation des bases de données transactionnelles décrites dans cet article,
Microsoft ne peut pas assurer la prise en charge des applications basées sur SQL Server ou SQL Server. Pour
déterminer si votre périphérique de stockage non qualifié WHQL prend en charge les garanties d’opérations
d’I/S d’utilisation des bases de données transactionnelles décrites dans cet article ou conçues pour une
utilisation de base de données, consultez le fournisseur de votre appareil. En outre, contactez le fournisseur de
votre appareil pour vérifier que vous avez correctement déployé et configuré l’appareil pour une utilisation de
base de données transactionnelle.
Plus d’informations
Par défaut, dans SQL Server 2008 et les versions antérieures, vous ne pouvez pas créer une base de données
SQL Server sur un partage de fichiers réseau. Toute tentative de création d’un fichier de base de données sur un
emplacement réseau mappé ou UNC génère l’un des messages d’erreur suivants :
Message d'erreur 1
Message d'erreur 2
5110 « Le fichier « file_name » se trouve sur un périphérique réseau non pris en charge pour les
fichiers de base de données. »
Ce comportement est normal. L’indicateur de suivi 1807 contourne la vérification et vous permet de configurer
SQL Server des fichiers de base de données réseau. SQL Server et la plupart des autres systèmes de base de
données d’entreprise utilisent un journal des transactions et la logique de récupération associée pour maintenir
la cohérence de la base de données transactionnelle en cas de défaillance du système ou d’arrêt non ingérable.
Ces protocoles de récupération s’appuient sur la possibilité d’écrire directement sur le support disque afin que
lorsqu’une demande d’écriture d’entrée/sortie du système d’exploitation soit revenir au gestionnaire de base de
données, le système de récupération peut s’assurer que l’écriture est terminée ou que l’exécution de l’écriture
peut être garantie. Toute défaillance d’un composant logiciel ou matériel respectant ce protocole peut entraîner
une perte de données partielle ou totale ou une altération en cas de défaillance du système. Pour plus
d’informations sur ces aspects des protocoles de journalisation et de récupération dans SQL Server, voir
Description des algorithmesde journalisation et de stockage de données qui étendent la fiabilité des données
dans SQL Server .
Microsoft ne prend pas en charge SQL Server fichiers de base de données en réseau sur des serveurs NAS ou
de stockage réseau qui ne répondent pas à ces exigences d’écriture et d’écriture.
En raison des risques d’erreurs réseau qui compromettent l’intégrité de la base de données, ainsi que des
implications éventuelles en matière de performances qui peuvent résulter de l’utilisation de partages de fichiers
réseau pour stocker des bases de données, Microsoft recommande de stocker les fichiers de base de données
sur des sous-systèmes de disque locaux ou sur des réseaux sans (SAN) Stockage.
Un système NAS (Network Attached Storage) est un système de stockage basé sur des fichiers que les clients
attachent via le redirecteur réseau à l’aide d’un protocole réseau (tel que TCP/IP). Par défaut, si l’accès à une
ressource de disque nécessite qu’un partage soit mappé, ou si la ressource disque apparaît en tant que serveur
distant via un chemin UNC (par exemple, Nom_serveur\Nom_Share) sur le réseau, le système de stockage de
disque n’est pas pris en charge comme emplacement pour les bases de données \ SQL Server.
Problèmes de performances
SQL Server, comme d’autres systèmes de base de données d’entreprise, peut placer une charge importante sur
un sous-système d’O/S. Dans la plupart des applications de base de données de grande taille, la configuration et
l’optimisation des O/S physiques jouent un rôle important dans les performances globales du système. Il existe
trois principaux facteurs de performances des opérations d’opérations d’entreprise à prendre en compte :
Bande passante d’I/S : bande passante agrégée, généralement mesurée en mégaoctets par seconde et qui
peut être soutenue par un périphérique de base de données.
Latence d’O/S : la latence, généralement mesurée en millisecondes, entre une demande d’I/S par le système
de base de données et le point où la demande d’O/S est terminée.
Coût de l’UC : coût de l’UC hôte, généralement mesuré en microsecondes processeur, pour que le système de
base de données remplisse une seule unité d’UC.
L’un de ces facteurs d’O/S peut devenir un goulot d’étranglement et vous devez tenir compte de tous ces
facteurs lorsque vous concevez un système d’O/S pour une application de base de données.
Dans sa forme la plus simple, une solution NAS utilise une pile logicielle de redirecteur réseau standard, une
carte d’interface réseau standard et des composants Ethernet standard. L’inconvénient de cette configuration est
que tous les fichiers D/S sont traitées via la pile réseau et sont soumis aux limites de bande passante du réseau
lui-même. Cela peut créer des problèmes de performances et de fiabilité des données, en particulier dans les
programmes qui nécessitent des niveaux élevés d’I/S de fichier, tels que SQL Server. Dans certaines
configurations NAS testées par Microsoft, le débit d’E/S était d’un tiers (1/3) celui d’une solution de stockage
directement attachée sur le même serveur. Dans cette même configuration, le coût processeur pour effectuer
une O/S via le périphérique NAS était deux fois plus élevé que celui d’une unité d’UC locale. À mesure que les
périphériques NAS et l’infrastructure réseau évoluent, ces ratios peuvent également s’améliorer par rapport au
stockage connecté direct ou aux réseaux sans. En outre, si vos données d’application sont principalement mises
en cache dans le pool de mémoires tampons de base de données et que vous ne rencontrez aucun des goulots
d’étranglement d’O/S décrits, les performances sur un système NAS sont probablement adéquates pour votre
application.
Vous pouvez être en état d’altération de la base de données dans la sauvegarde si vous utilisez des technologies
de sauvegarde NAS sans SQL Server prise en charge VDI. Ce type d’altération inclut des pages corrompues ou
des incohérences entre les fichiers journaux et de données s’ils sont stockés sur des appareils distincts. SQL
Server pouvez pas détecter les pages ou les incohérences tant que vous n’avez pas restauré la base de données
et accédez aux données endommagées. Microsoft ne prend pas en charge l’utilisation de technologies de
sauvegarde NAS qui ne sont pas coordonnées avec SQL Server.
La prise en charge des sauvegardes et la prise en charge des fournisseurs NAS pour SQL Server VDI varient.
Pour plus d’informations sur la prise en charge VDI, consultez vos fournisseurs de logiciels NAS et de
sauvegarde.
Microsoft invite les clients qui envisagent de déployer une solution NAS pour les bases de données SQL Server
à consulter leur fournisseur NAS pour s’assurer que la conception de la solution de bout en bout est pour une
utilisation de base de données. De nombreux fournisseurs NAS ont des guides de meilleures pratiques et des
configurations certifiées pour cette utilisation. Microsoft recommande également aux clients de comparer leurs
performances d’O/S pour s’assurer qu’aucun des facteurs d’O/S mentionnés précédemment ne provoque un
goulot d’étranglement dans leur application.
La liste suivante décrit la prise en charge des fichiers basés sur le réseau sur SQL clusters de failover :
SQL Server 2008 R2 et versions antérieures : non pris en charge
SQL Server 2012 et versions ultérieures : pris en charge
Pour plus d’informations, consultez la rubrique SQL Server Books Online suivante :
Installer les SQL Server avec le stockage de partage de fichiers SMB
Notes supplémentaires
Une utilisation incorrecte du logiciel de base de données avec un produit NAS, ou une utilisation de base de
données avec un produit NAS mal configuré, peut entraîner une perte de données, y compris la perte totale de
base de données. Si le périphérique NAS ou le logiciel réseau ne respectent pas complètement les garanties de
données, telles que l’écriture ou l’écriture, le matériel, les logiciels ou même les pannes d’alimentation peuvent
sérieusement compromettre l’intégrité des données.
Références
Informations sur l’utilisation de caches de disque avec des SQL Server que chaque administrateur de
base de données doit connaître
DBCC TRACEON - Trace Flags (Transact-SQL)
SQL Server Conditions requises pour le programme de fiabilité des entrées et des services d’entreprise.
SQL Server Moteur de base de données’entrée/sortie requises
Prise en charge SQL Server sur les composants de
technologie iSCSI
15/08/2021 • 2 minutes to read
Cet article présente la prise en charge des SQL Server sur les composants de technologie iSCSI.
Version du produit d’origine : SQL Server 2014, SQL Server 2012, SQL Server 2008, SQL Server 2005
Numéro de la ko d’origine : 833770
Résumé
Microsoft prend en charge Microsoft SQL Server lorsqu’il est déployé sur des composants technologiques iSCSI
(Internet Small Computer System Interface) qui ont reçu la qualification du programme Designed for Windows
Logo Program. SQL Server installations qui utilisent iSCSI nécessiteront ces périphériques matériels iSCSI en
plus des cartes réseau requises pour les communications réseau classiques.
Plus d’informations
iSCSI est un protocole de transport SCSI pour le mappage des données de stockage orientées bloc sur des
réseaux TCP/IP. Lorsque vous déployez SQL Server dans un environnement iSCSI, Microsoft vous recommande
d’utiliser la prudence appropriée. L’implication d’un réseau peut introduire des composants qui ne sont
généralement pas vus comme des chemins d’accès d’I/S haut débit.
Les systèmes d’exploitation Microsoft présentent les appareils iSCSI sous forme de lecteurs ordinaires. Pour les
utilisateurs et les applications, y SQL Server, la destination distante est encapsulée. Pour optimiser le débit,
veillez à vous assurer que l’ordinateur exécutant SQL Server est configuré pour optimiser les activités de mise
en cache et assurez-vous que la latence impliquée dans le trafic iSCSI est réduite.
SQL Server systèmes doivent prendre en charge la « distribution garantie sur les supports stables » comme
indiqué dans la SQL Server des programmes de fiabilité des SQL Server’entreprise. Pour plus d’informations sur
les exigences en matière d’entrée et de sortie pour le moteur de base de données SQL Server, voir Moteur de
base de données Microsoft SQL Server’entrée/sortie requises.
Erreur « La transaction n’est plus valide » lorsque le
courrier de la base de données ne parvient pas à
envoyer un message SQL Server
12/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème où le courrier de base de données ne parvient pas à envoyer un
message.
Version du produit d’origine : SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server 2017 sur
Linux, SQL Server 2017 sur Windows
Numéro de la ko d’origine : 4502457
Symptômes
Supposons qu’un utilisateur qui exécute Microsoft SQL Server ne peut pas envoyer de courrier de base de
données. Dans ce cas, le journal de messagerie de base de données (sysmail_event_log) affiche l’entrée suivante
:
NOTE
L’expression qui n’est plus valide apparaît ainsi dans le champ Message pour signifier que la transaction n’est plus
valide.
Vous pouvez voir le même message dans le journal des applications. Le message électronique restera à l’état «
nouvelle tentative » et ne sera pas envoyé tant que le programme DatabaseMail.exe externe ne pourra
sysmail_unsentitems pas s’exécuter correctement.
Cause
L SQL Server de connexion par défaut utilise SET NUMERIC_ARITHABORT ON . Lorsque vous sp_send_dbmail
exécutez , le message électronique est mis en file d’attente vers ExternalMailQueue . Lorsqu’un message
apparaît dans la file d’attente, la procédure stockée d’activation déclenche DatabaseMail.exe exécutable externe.
Lorsque DatabaseMail.exe est connecté à SQL Server, il s’exécute afin de lire les messages de sp_readrequest
la file d’attente. Pendant l’exécution sp_readrequest de , vous pouvez remarquer que l’exception se produit.
L’instruction suivante est exécuté (vous devez collecter le suivi au niveau de SELECT l’instruction pour voir cette
sp_readrequest SELECT instruction) :
AS MailRequest(Properties)
If SET NUMERIC_ARITHABORT ON is set as default connection option, this SELECT statement will encounter error
1934 and an exception will occur:
Lorsque DatabaseMail.exe rencontre l’exception, une récupération est tentée, mais échoue. L’exception entraîne
la sortie de l’étendue de la transaction. Pour cette raison, un message de transaction qui n’est plus valide est
consigné dans le journal de messagerie de la base de données.
Toutefois, la cause première du problème est que l’erreur 1934 se produit en raison d’une option SET
incompatible lorsque la méthode de type de données XML ( ) est utilisée dans
MailRequest.Properties.value('(MailItemId)[1]', 'int') l’instruction. SELECT
Résolution
Pour résoudre ce problème, modifiez l’option de connexion par défaut sur SET NUMERIC_ROUNDABORT
OFF .
Le SQL Server journal des transactions de la base
de données n’augmente pas par rapport à la valeur
de croissance de fichier configurée
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème où le fichier journal des transactions de SQL Server base de
données n’augmente pas par la valeur de croissance de fichier configurée.
Version du produit d’origine : SQL Server 2008, SQL Server 2008 R2
Numéro de la ko d’origine : 2633151
Symptômes
La valeur de croissance de fichier configurée pour le fichier journal des transactions de la base de données SQL
Server est de 4 gigaoctets (Go) ou de multiples (par exemple, 8 Go, 12 Go, et ainsi de suite). Toutefois, le fichier
journal des transactions n’augmente pas de cette valeur. Au lieu de cela, le fichier journal des transactions
augmente par incréments de 250 kilo-octets (Ko). En outre, vous remarquerez qu’il y a beaucoup de fichiers
journaux virtuels dans le fichier journal des transactions.
Résolution
Pour SQL Ser ver 2008 R2
Le correctif de ce problème a été publié pour la première fois dans la base de données KB2633145
(package de mise à jour cumulative 11 pour SQL Server 2008 R2).
NOTE
Étant donné que les builds sont cumulatives, chaque nouvelle version de correctif contient tous les correctifs et
tous les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008 R2. Nous vous
recommandons d’envisager d’appliquer la version de correctif la plus récente qui contient ce correctif. Pour plus
d’informations, voir les builds SQL Server 2008 R2 publiées après SQL Server version 2008 R2.
NOTE
Étant donné que les builds sont cumulatives, chaque nouvelle version de correctif contient tous les correctifs et
tous les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008 R2. Nous vous
recommandons d’envisager d’appliquer la version de correctif la plus récente qui contient ce correctif. Pour plus
d’informations, voir les builds SQL Server 2008 R2 publiées après SQL Server version 2008 R2.
Solution de contournement
Modifiez la valeur de croissance du fichier SQL Server journal des transactions de la base de données de façon à
ce qu’il ne soit pas divisible de 4 Go.
Plus d’informations
Vous pouvez utiliser la requête suivante pour identifier le fichier journal des transactions SQL Server base de
données de données :
Pour plus d’informations sur les produits ou outils qui vérifient automatiquement la croissance des fichiers de 4
Go ou de multiples sur votre instance de SQL Server et sur les versions du produit SQL Server, consultez le
tableau suivant :
VERSIO N S DE P RO DUIT S
P O UR L ESQ UEL L ES L A
LO GIC IEL DE RÈGL E T IT RE DE L A RÈGL E DESC RIP T IO N DE L A RÈGL E RÈGL E EST ÉVA L UÉE
System Center Advisor SQL Server de base de System Center Le conseiller SQL Server 2008, SQL
données peut ne pas détermine si le fichier Server 2008 R2
augmenter à l’aide de la journal des transactions de
valeur de croissance la base de données SQL
configurée Server est configuré pour
une valeur de croissance de
4 Go ou plusieurs et génère
un avertissement si c’est le
cas. Examinez les
informations fournies dans
la section Informations
collectées de l’avertissement
et a apporté les
modifications nécessaires au
journal des transactions
concerné.
Si le journal des transactions contient un grand nombre de fichiers journaux virtuels, vous rencontrerez une
récupération de base de données longue. Pour plus d’informations, voir Les opérations de base de données
prennent beaucoup de temps, ou elles déclenchent des erreurs lorsque le journal des transactions contient de
nombreux fichiers journaux virtuels.
Résoudre les erreurs de cohérence de base de
données signalées par DBCC CHECKB
13/08/2021 • 6 minutes to read
Cet article explique comment résoudre les erreurs signalées par la commande DBCC CHECKDB.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2015748
Symptômes
Lorsque le DBCC CHECKDB (ou d’autres commandes similaires telles que CHECKTABLE) est exécuté, un message
comme le suivant est écrit dans le SQL Server ERRORLOG :
Date/Heure spid53 DBCC CHECKDB (mydb) exécuté par MYDOMAIN\theuser a trouvé 15 erreurs et réparé
les erreurs. Durée écoulée : 0 heure 0 minute 0 seconde. La capture instantanée de base de données interne
a un point de fractionnement LSN = 00000026:0000089d:0001 et le premier LSN =
00000026:0000089c:0001. Il s’agit d’un message d’information uniquement. Aucune action de l’utilisateur
n’est requise.
Ce message indique le nombre d’erreurs de cohérence de base de données trouvées et le nombre d’erreurs
réparées (si une option de réparation a été utilisée avec la commande). Ce message est également écrit dans le
journal des événements de l’application Windows en tant que message de niveau Informations avec
EventID=8957 (même si des erreurs sont signalées, ce message est un message de niveau Informations).
Informations dans le message commençant par « capture instantanée de base de données interne... » s’affiche
uniquement si DBCC CHECKDB a été exécuté en ligne, dans lequel la base de données n’est pas en SINGLE_USER
mode. En effet, pour une base de données CHECKDB DBCC en ligne, une capture instantanée de base de
données interne est utilisée pour présenter un ensemble cohérent de données à vérifier.
Cet article n’explique pas comment résoudre chaque erreur spécifique signalée par DBCC CHECKDB, mais plutôt
l’approche générale si des erreurs sont signalées. Toute référence à CHECKDB dans cet article s’applique
également DBCC CHECKTABLE et CHECKFILEGROUP sauf mention.
Cause
DBCC CHECKDB vérifie la cohérence physique et logique des pages de base de données, des lignes, des pages
d’allocation, des relations d’index, de l’intégrité référentielle des tables système et d’autres vérifications de
structure. Si l’une de ces vérifications échoue (selon les options que vous avez choisies), des erreurs sont
signalées dans le cadre de la commande.
La cause de ces problèmes peut varier en raison de l’altération du système de fichiers, des problèmes du
système matériel sous-jacent, des problèmes de pilotes, des pages endommagées en mémoire ou des
problèmes liés au moteur SQL Server. Consultez la section Résolution pour plus d’informations sur la recherche
de la cause des erreurs signalées.
Résolution
La première solution, la meilleure si le DBCC CHECKDB signale des erreurs de cohérence, consiste à restaurer à
partir d’une sauvegarde appropriée connue. Toutefois, si vous ne pouvez pas restaurer à partir d’une
sauvegarde, CHECKDB fournit une fonctionnalité pour réparer les erreurs. Si des problèmes au niveau du
système, tels que le système de fichiers ou le matériel, peuvent être à l’origine de ces problèmes, nous vous
recommandons de les corriger d’abord avant de restaurer ou d’exécutez la réparation.
Lorsque vous exécutez DBCC CHECKDB, une recommandation est fournie pour indiquer l’option de réparation
minimale requise pour réparer toutes les erreurs. Ces messages peuvent ressembler à ce qui suit :
CHECKDB a trouvé 0 erreur d’allocation et 15 erreurs de cohérence dans la base de données « mydb ».
repair_allow_data_loss est le niveau de réparation minimal pour les erreurs trouvées par DBCC CHECKDB
(mydb).
La recommandation de réparation est le niveau minimal de réparation pour tenter de résoudre toutes les
erreurs de CHECKDB. Cela ne signifie pas que cette option de réparation corrigera en réalité toutes les erreurs.
En outre, toutes les erreurs signalées ne peuvent pas nécessiter ce niveau de réparation pour résoudre l’erreur.
Cela signifie que toutes les erreurs signalées par CHECKDB lorsqu’elles sont recommandées
repair_allow_data_loss entraînent une perte de données. La réparation doit être exécuté pour déterminer si la
résolution d’une erreur entraîne une perte de données. Une technique permettant d’affiner le niveau de
réparation de chaque table consiste à utiliser DBCC CHECKTABLE pour toute table signalant une erreur. Cela
indique le niveau minimal de réparation pour un tableau donné.
Pour trouver la cause des erreurs de cohérence de base de données, envisagez les méthodes ci-après :
Vérifiez la Windows journal des événements système pour les erreurs de niveau système, de pilote ou de
disque.
Vérifiez l’intégrité du système de fichiers avec chkdsk.
Exécutez les diagnostics fournis par vos fabricants de matériel pour l’ordinateur et/ou le système de disque.
Travaillez avec votre fournisseur de matériel ou votre fabricant d’appareils pour vous assurer que :
Les périphériques matériels et la configuration s’Moteur de base de données Microsoft SQL Server
aux exigences d’entrée/sortie.
Les pilotes de périphérique et les autres composants logiciels de prise en charge de tous les appareils
dans le chemin d’accès d’I/S sont mis à jour.
Envisagez d’utiliser un utilitaire tel que SQLIOSim sur le même lecteur que les bases de données qui ont
signalé les erreurs de cohérence. SQLIOSim est un outil indépendant du moteur SQL Server pour tester
l’intégrité des O/S pour le système de disque. SQLIOSim est SQL Server 2008 et ne nécessite pas de
téléchargement séparé.
Recherchez les autres erreurs signalées par SQL Server telles que les violations d’accès ou les assertions.
Assurez-vous que vos bases de données utilisent PAGE_VERIFY CHECKSUM l’option. Si des erreurs de sommes
de contrôle sont signalées, il s’agit d’indicateurs qui indiquent que les erreurs de cohérence se sont produites
après que SQL Server a écrit des pages sur le disque afin que votre système de disque soit minutieusement
vérifié, voir Comment résoudre les problèmes de Msg 824 dans SQL Server pour plus d’informations sur les
erreurs de sommes de contrôle.
Recherchez les erreurs Msg 832 dans ERRORLOG. Ces indicateurs montrent que les pages peuvent être
endommagées lorsqu’elles sont en cache avant d’être écrites sur le disque. Pour plus d’informations, voir
comment résoudre les problèmes de Msg 832 SQL Server.
Essayez de restaurer une sauvegarde de base de données dont vous savez qu’elle est « propre » (aucune
erreur provenant de CHECKDB) et que les sauvegardes du journal des transactions que vous connaissez
s’étendent pendant toute la durée de l’erreur. Si vous pouvez « relire » ce problème en restaurant une
sauvegarde de base de données « propre » et des journaux des transactions, contactez le Support technique
Microsoft pour obtenir de l’aide.
Les erreurs de collecte de données peuvent être un problème lors de l’insertion ou de la mise à jour de
données non valides dans SQL Server tables. Pour plus d’informations sur la résolution des erreurs de
collecte de données, voir Troubleshooting DBCC Error 2570 in SQL server 2005.
Plus d’informations
Pour plus d’informations sur la syntaxe de DBCC CHECKDB et des informations/options sur l’exécution de la
commande, voir DBCC CHECKDB (Transact-SQL).
Si des erreurs ont été trouvées par CHECKDB, des messages supplémentaires tels que les suivants sont signalés
dans le journal d’erreurs à des fins de rapport d’erreurs :
Date/Heure spid7s CHECKDB pour la base de données « master » terminée sans erreurs
onDate/Time22:11:11.417 (heure locale). Il s’agit d’un message d’information uniquement . aucune action de
l’utilisateur n’est requise
Message d’erreur : le fournisseur OLE DB
SQLOLEDB n’a pas pu commencer une transaction
distribuée
13/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème que le message d’erreur du fournisseur OLE DB SQLOLEDB n’a
pas pu commencer une transaction distribuée.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 816701
Symptômes
Lorsque vous essayez d’utiliser Microsoft SQL Server pour démarrer une transaction distribuée entre des
serveurs liés exécutant Windows Server, vous pouvez recevoir le message d’erreur suivant :
La nouvelle transaction ne peut pas être inscrite dans le coordinateur de transaction spécifié.
Cause
Ce comportement se produit si le service DTS (Distributed Transaction Coordinator) est désactivé ou si l’accès
DTC réseau est désactivé. Par défaut, l’accès DTC réseau est désactivé dans Windows Server.
Solution de contournement
Pour contourner ce problème, installez l’accès DTC réseau sur les deux serveurs :
1. Cliquez sur Démarrer , puis sur Panneau de configuration .
2. Cliquez sur Ajouter ou supprimer des programmes, puis sur Ajouter/Supprimer Windows
composants.
3. Dans la zone Composants, cliquez sur Ser veur d’applications, puis sur Détails.
4. Cliquez pour activer la case à cocher Activer l’accès DTC réseau, puis cliquez sur OK.
5. Cliquez sur Suivant, puis suivez les instructions qui apparaissent à l’écran pour terminer le processus
d’installation.
6. Arrêtez, puis redémarrez le service Coordinateur des transactions distribuées.
7. Arrêtez puis redémarrez tous les services de gestionnaire de ressources qui participent à la transaction
distribuée (par exemple, Microsoft SQL Server serveur de files d’attente de messages Microsoft).
L’utilisation de pilotes d’hôte virtuel peut entraîner
SQL Server Moteur de base de données problèmes
de cohérence des données
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où l’utilisation de pilotes d’hôte virtuel peut entraîner SQL Server
Moteur de base de données problèmes de cohérence des données.
Version du produit d’origine : SQL Server 2008
Numéro de la ko d’origine : 2600089
Symptômes
Vous pouvez remarquer qu’une instance de Microsoft SQL Server signale un ou plusieurs des messages d’erreur
suivants dans le journal des erreurs SQL Server et dans le journal des événements d’application :
Message d’erreur 1
Erreur 824 : SQL Server détecté une erreur d’E/S logique basée sur la cohérence : pageid incorrect
(prévu 1:425920 ; 65535:0). Elle s’est produite lors d’une lecture de page (1:425920) dans l’ID de base
de données 2 au décalage 0x000000cff80000 dans le fichier « D:\DBName.mdf ». Des messages
supplémentaires dans le SQL Server d’erreurs ou le journal des événements système peuvent fournir
plus de détails. Il s’agit d’une condition d’erreur grave qui menace l’intégrité de la base de données et
doit être corrigée immédiatement. Effectuer une vérification de la cohérence de base de données
complète (DBCC CHECKDB). Cette erreur peut être causée par de nombreux facteurs . Pour plus
d’informations, voir SQL Server Books Online.
Message d’erreur 2
2011-02-24 00:20:32.55 Erreur spid65 : 605, Gravité : 21, État : 3. 2011-02-24 00:20:32.55 spid65
Échec de la tentative d’extraction de la page logique (1:17479052) dans la base de données 8. Il
appartient à l’unité d’allocation 0 et non à 72057610609819648.
Message d’erreur 3
Erreur 823 Le système d’exploitation a renvoyé l’erreur pageid incorrecte (prévue 1:306208 ; 65535:0)
à SQL Server lors d’une lecture au 0x00000095840000 décalage dans le fichier « R:\DBName.mdf ».
Des messages supplémentaires dans le SQL Server d’erreurs et le journal des événements système
peuvent fournir plus de détails. Il s’agit d’une condition d’erreur grave au niveau du système qui
menace l’intégrité de la base de données et qui doit être corrigée immédiatement. Effectuer une
vérification de la cohérence de base de données complète (DBCC CHECKDB). Cette erreur peut être
causée par de nombreux facteurs . Pour plus d’informations, voir SQL Server Books Online.
Message d’erreur 4
Erreur 18400 Le thread de point de contrôle en arrière-plan a rencontré une erreur irrécable. Le
processus de point de contrôle se termine afin que le thread puisse nettoyer ses ressources. Il s’agit
d’un message d’information uniquement. Aucune action de l’utilisateur n’est requise.
Message d’erreur 5
La sauvegarde a détecté une altération du journal dans la base de données DBName. Le contexte est
FirstSector. LogFile : 2 'R:\DBName.LDF' VLF SeqNo: x3c1c3 VLFBase: x6a850000 LogBlockOffset:
x6bbcde00 SectorStatus : 2 LogBlock.StartLsn.SeqNo: x560053 LogBlock.StartLsn.Blk: x2d0043 Size:
x53 PrevSize: x5c.
Vous pouvez également remarquer que la commande DBCC CHECKDB signale des problèmes de cohérence de
base de données.
Cause
L’équipe du support technique et des services client (CSS) de Microsoft a déterminé que le pilote d’hôte virtuel
suivant peut provoquer le comportement :
Nom du pilote : C:\WINDOWS\SYSTEM32\DRIVERS\XGVHBA.SYS
Nom du fournisseur : Xsigo Systems
Xsigo Systems (fournisseur du pilote d’hôte virtuel) indique qu’il s’agit d’un problème avec le pilote d’hôte
virtuel XGVHBA.SYS lorsque la version est entre 2.6.0.0 et 2.7.1.0.
Résolution
Contactez Xsigo Systems pour obtenir une version du pilote qui est corrigée. La version fixe est la version 2.7.3.0
et les versions ultérieures. Ensuite, configurez les adaptateurs Xsigo Virtual HBA pour utiliser les pilotes mis à
jour.
Plus d’informations
MSSQLSERVER_824
MSSQLSERVER_823
Exclusion de responsabilité de tiers
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.
Les mots qui ont des points décimaux non plus ne
sont pas renvoyés par un sécateur de mots anglais
dans SQL Server
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème où une recherche à l’aide d’un sécateur de mots anglais ne
retourne pas les mots qui ont des points décimaux de début dans SQL Server 2017 sur Windows, SQL Server
2016, 2014 et 2012.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 3191316
Symptômes
Dans un sécateur de mots en anglais, vous utilisez un index de texte intégral pour indexer le contenu qui
contient des mots qui ont des points décimaux de début, tels .325 que , .434 . .646 Lorsque vous essayez de
localiser des lignes dans l’index en recherchant la valeur décimale (par exemple, ), aucune ligne .325 n’est
renvoyée.
Solution de contournement
Pour contourner ce problème, utilisez l’une des méthodes suivantes :
Utilisez l’inserreur de mots neutre.
Placez un zéro devant la virgule décimale lorsque vous utilisez un sécateur de mots anglais. Par exemple,
utilisez 0.325 plutôt que dans votre .325 recherche. L’décomposeur de mots anglais gère correctement
l’indexation et la recherche lorsqu’il rencontre des zéros non élevés.
Résultats
O C C URREN C SP EC IA L _T ER DISP L AY _T ER
M OT C L É GRO UP _ID P H RA SE_ID E M M REM A RQ UES
Select * from sys.dm_fts_parser('.325', 1033, 0,0) Using English word breaker to specify the ".325"
search term.
NOTE
Nous n’avons pas de correspondance.
Résultats
O C C URREN C SP EC IA L _T ER DISP L AY _T ER
M OT C L É GRO UP _ID P H RA SE_ID E M M REM A RQ UES
Résultats
O C C URREN C SP EC IA L _T ER DISP L AY _T ER
M OT C L É GRO UP _ID P H RA SE_ID E M M REM A RQ UES
Résultats
O C C URREN C SP EC IA L _T ER DISP L AY _T ER
M OT C L É GRO UP _ID P H RA SE_ID E M M REM A RQ UES
Sur un ordinateur Windows avec les pilotes ODBC 17 et ODBC 13 installés, la désinstallation de l’un ou l’autre
de ces pilotes laisse les restes de la version désinstallée. Cet article fournit plus d’informations sur le problème
et la résolution du problème.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 4460005
Symptômes
Supposons que le pilote ODBC Microsoft 13/13.1 pour SQL Server et le pilote ODBC 17/17.1 pour SQL Server
sont installés sur le même ordinateur Windows. Si vous désinstallez l’une ou l’autre version, le pilote désinstallé
reste visible, mais devient inutilisable dans l’administrateur de source de données ODBC (odbcad32.exe). En
outre, certaines entrées de Registre correspondantes restent sous la sous-clé de Registre suivante :
HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI
Cause
Ce problème se produit en raison d’un problème de programme d’installation ODBC 17/17.1.
Résolution
Ce problème a été résolu dans le pilote ODBC 17.2. Pour résoudre ce problème :
1. Désinstallez le pilote ODBC 17/17.1.
2. Installez ODBC 17.2ou une version ultérieure du pilote.
Référence
Pilote ODBC Microsoft 17.2 SQL Server publié
Les utilisateurs peuvent ne pas être en mesure de se
connecter à distance SQL serveur à l’aide du
protocole TCP/IP
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où vous ne pouvez pas vous connecter à distance à SQL à l’aide du
protocole TCP/IP.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2018930
Symptômes
Lorsque vous utilisez Microsoft SQL Server, vous pouvez voir un ou plusieurs des symptômes suivants :
Seuls les utilisateurs qui ont l’autorisation CONTROL SERVER (par exemple, les membres du rôle serveur
fixe syadmin) peuvent se connecter via TCP/IP. Les utilisateurs qui n’ont pas cette autorisation ne peuvent
pas se connecter à distance via le protocole TCP/IP à l’aide Windows ou SQL Server’authentification.
NOTE
Vous remarquerez que les connexions utilisateur élevées s’afficheront uniquement en mode gestion dynamique
sys.dm_exec_sessions (Transact-SQL), mais pas en mode sys.dm_exec_connections (Transact-SQL).
Les connexions locales et distantes utilisant le protocole Named Pipes, ainsi que les connexions locales
utilisant le protocole de mémoire partagée continuent de fonctionner parfaitement.
En outre, les messages suivants sont enregistrés dans le fichier SQL Server Errorlog :
À SQL Server démarrer :
Cause
L’erreur se produit lorsque vous configurez un point de terminaison TCP pour Service Broker à l’aide du port
que l’instance SQL Server est configurée pour utiliser. Vous pouvez obtenir la liste des points de terminaison en
exécutant la requête suivante :
NOTE
Comme expliqué dans la rubrique Books Online sur sys.tcp_endpoints (Transact-SQL),cet affichage ne contient pas
d’informations sur les ports et protocoles que l’instance SQL Server est actuellement configurée pour utiliser. Pour
rechercher ces informations, utilisez Gestionnaire de configuration SQL Server.
Résolution
Méthode 1 : déposer le point de terminaison à l’origine du problème à l’aide de la commande DROP
ENDPOINT (Transact-SQL).
Par exemple, pour déposer un point de terminaison TestEP nommé, vous pouvez utiliser la commande
suivante :
Méthode 2 : modifier le point de terminaison pour utiliser un autre port à l’aide de la commande ALTER
ENDPOINT (Transact-SQL).
Par exemple, pour modifier un point de terminaison nommé TestEP pour utiliser un autre port, vous
pouvez utiliser la commande suivante :
Plus d’informations
Des problèmes similaires peuvent également se produire avec d’autres points de terminaison TCP tels que ceux
créés pour la mise en miroir de base de données et les messages d’erreur au démarrage SQL Server changent
en conséquence.
Kerberos Configuration Manager pour SQL Server
est disponible
13/08/2021 • 3 minutes to read
Cet article décrit l’outil de diagnostic Microsoft Kerberos Configuration Manager pour SQL Server.
S’applique à : SQL Server
Numéro de la ko d’origine : 2985455
Plus d’informations
Cet outil permet de résoudre les exceptions suivantes :
401
NOTE
Ce message d’erreur est pour les erreurs http, les erreurs SSRS et d’autres erreurs similaires.
NOTE
Pour résoudre le problème de connectivité avec SSRS, démarrez la fenêtre de ligne de commande en tant
qu’administrateur.
Cet article vous aide à résoudre différents problèmes de connectivité SQL serveur.
NOTE
Pour une visite guidée de cet article, voir Résolution des erreurs de connectivité SQL Server.
Conditions préalables
Pour utiliser efficacement cet dépannage, vous pouvez collecter les informations suivantes.
1. Texte complet du message d’erreur avec les codes d’erreur et si l’erreur est intermittente (se produit
uniquement parfois) ou cohérente (se produit tout le temps).
2. Leslogs d’SQL Server à partir des lesquels vous pouvez noter les remarques suivantes :
a. Nom de domaine complet (FQDN) de l’ordinateur SQL Server ou en cas d’installations en cluster,
nom virtuel du nom de domaine complet. Si vous utilisez une instance nommée, notez le nom de
l’instance.
NOTE
Vous pouvez rechercher la chaîne « Nom du serveur » pour obtenir ces informations dans lelog des
erreurs.
b. Bibliothèques réseau et ports sur SQL instance est à l’écoute. Exemples de messages :
Canaux nommés : le fournisseur de connexion local du serveur est prêt à accepter la connexion
sur [ \ \ .\pipe\sql\query ]. TCP/IP et numéro de port : le serveur est à l’écoute sur [ ::1 1433].
Liste de vérification
Assurez SQL le serveur est démarré et que le message suivant s’SQL Server ErrorLog :
SQL Server est maintenant prêt pour les connexions client. Il s’agit d’un message d’information ;
aucune action de l’utilisateur n’est requise.
Une erreur liée au réseau ou à l’instance s’est produite lors de l’établissement d’une connexion SQL
Server. Le serveur n’a pas été trouvé ou n’est pas accessible. Vérifiez que le nom de l’instance est correct
et que SQL Server est configuré pour autoriser les connexions distantes.
Une erreur liée au réseau ou à l’instance s’est produite lors de l’établissement d’une connexion SQL
Server. Le serveur n’a pas été trouvé ou n’est pas accessible. Vérifiez que le nom de l’instance est correct
et que SQL Server est configuré pour autoriser les connexions distantes.
provider: Named Pipes Provider, error:40 - Could not open a connection to SQL Server
Microsoft SQL Server, Erreur :53
Le chemin d’accès réseau est in trouvé
[Microsoft] [SQL Server Native Client 11.0] Fournisseur TCP : aucune connexion n’a pu être réalisée
car l’ordinateur cible l’a activement refusée.
[Microsoft] [SQL Server Native Client 11.0] Expiration du délai d’expiration de la connexion
[Microsoft] [SQL Server Native Client 11.0] Une erreur liée au réseau ou à l’instance s’est produite
lors de l’établissement d’une connexion SQL Server. Le serveur n’est pas trouvé ou n’est pas
accessible. Vérifiez si le nom de l’instance est correct et si SQL Server est configuré pour autoriser les
connexions à distance. Pour plus d’informations, voir SQL Server Books Online.
Vous pouvez commencer à résoudre les problèmes à partir de cette section : Causes courantes de divers
problèmes de connexion.
Causes courantes de divers problèmes de connexion
Recherchez chacune des causes applicables à votre instance ci-dessous et, pour chacune des causes applicables,
essayez les résolutions correspondantes.
Cause 1 : nom de serveur incorrect spécifié dans la chaîne de connexion ou dans la boîte de dialogue nom du serveur
Pour confirmer :
Assurez-vous que le nom du serveur que vous spécifiez correspond à ce que vous avez dans le journal
des erreurs.
Accédez au fichier Editing ASP.NET Configuration Files pour votre application et assurez-vous que la
section Chaînes de connexion pointe vers le nom de serveur approprié et utilise les chaînes de
connexion SQL Server correctes pour les applications Web ASP.NET.
NOTE
Pour obtenir par programme les chaînes de connexion à partir de votre application, reportez-vous à l’exemple
dans la procédure : Lire les chaînes de connexion à partir du Web.config .
Cause 3 (instance par défaut) : pare-feu entre le client et le serveur bloquant le port SQL Server instance est à l’écoute sur
Instance par défaut : une instance par défaut s’exécute généralement sur le port 1433. Certaines installations
utilisent également un port non standard (autre que 1433) pour l’exécution SQL instances. Le pare-feu peut
bloquer l’un d’eux.
Points à essayer :
Déterminez le numéro de port SQL instance est en cours d’exécution. Si l’instance par défaut de votre
serveur SQL utilise un port non standard, consultez l’SQL Server Exécution de l’instance « Par défaut »
sur un port TCP non par défaut (ou non standard): : conseils pour que la connectivité des applications
fonctionne.
Essayez d’attendre le numéro de port SQL Server au nom du serveur en utilisant le format
<servername> , numéro de port et voir si cela fonctionne. Par exemple, si votre nom d’instance SQL est
MySQLDefaultinstance et qu’il s’exécute sur le port 2000, spécifiez le nom du serveur en tant que
MySQLServer, 2000 et voyez si cela fonctionne. Si elle fonctionne, cela indique que le pare-feu bloque le
port.
S’il est confirmé, ajoutez le port à la liste d’exclusions du pare-feu. Pour obtenir des instructions, déplacez-
vous vers la section Configuration des pare-feu.
Cause 4(instance nommée) : SQL navigateur n’est pas démarré
Les applications clientes qui se connectent à une instance nommée de SQL Server utilisent le service navigateur
SQL sur le système sur lequel SQL est en cours d’exécution pour édifier le port sur lequel SQL est à l’écoute. Si le
service de navigateur n’est pas démarré, les connexions échouent.
Points à essayer :
Sur le système exécutant votre instance SQL Server, utilisez le gestionnaire de configuration SQL Server ou
l’applet Services dans le Panneau de configuration et démarrez le service SQL Browser s’il n’est pas déjà
démarré. Pour plus d’informations, voir How to: Start and Stop the SQL Server Browser Service
Cause 5 (instance nommée) : le port UDP 1434 utilisé par SQL navigateur est bloqué sur le réseau
Si votre instance SQL est une instance nommée, elle peut avoir été configurée pour utiliser des ports
dynamiques ou un port statique. Dans les deux cas, les bibliothèques réseau sous-jacentes interrogent le service
de navigateur SQL qui s’exécute sur votre ordinateur SQL Server via le port UDP 1434 pour éumer le numéro
de port de l’instance nommée. Si un pare-feu entre le client et le serveur bloque ce port UDP, la bibliothèque
cliente ne peut pas déterminer le port (une exigence de connexion) et la connexion échoue.
Pour confirmer :
Méthode 1 :
1. Notez le port sur SQL instance est à l’écoute à partir du SQL Server Errorlog.
2. Essayez de vous connecter à l’instance nommée en utilisant le numéro de port qui est appendé au
nom du serveur en utilisant le format <nom_serveur\nom_instance>, numéro_port et voir si cela
fonctionne. Si elle fonctionne, cela indique que le pare-feu bloque le port UDP 1434. Par exemple, si le
nom de votre instance SQL est MySQL\Namedinstance et qu’elle s’exécute sur le port 3000, spécifiez
le nom du serveur en tant que MySQL\Namedinstance, 3000 et voyez si cela fonctionne. Si elle
fonctionne, cela peut signifier que le port UDP 1434 est bloqué ou que le port statique est bloqué ou
les deux. Pour vérifier s’il s’agit du port UDP ou du port statique à l’aide de Portqry à partir de la
méthode 2 ci-dessous.
Méthode 2 :
1. Utilisez l’outil PortqryUI avec votre instance nommée et observez la sortie qui en résulte. Si le
message vous indique que le port UDP 1434 est filtré, cela indique que le port est bloqué sur le
réseau. Pour obtenir des instructions sur l’utilisation de l’outil, utilisez l’outil PortqryUI avec SQL Server
section.
Points à essayer :
Déterminez d’abord si SQL Server instance est à l’écoute sur un port dynamique ou statique et utilisez la
procédure qui est pertinente pour votre scénario. Pour savoir si SQL est à l’écoute sur les ports dynamiques et
statiques, déplacez-vous vers Indiquer si SQL est à l’écoute dans la section Ports dynamiques ou statiques.
Cas 1 : ports dynamiques. Dans ce cas, vous devez vous assurer que le service de navigateur SQL est bien
démarré et que le port UDP 1434 n’est pas bloqué sur le pare-feu entre le client et le serveur. Si vous ne
pouvez pas faire l’une ou l’autre d’entre elles, vous devez basculer votre instance SQL Server pour utiliser
un port statique et utiliser la procédure documentée dans Configurer un serveur pour écouter sur un
port TCP spécifique.
Cas 2 : la configuration du port statique et SQL navigateur ne sont pas en cours d’exécution ou UDP 1434
ne peut pas être ouvert sur le pare-feu. Dans ce cas, vous devez vous assurer que le port statique est
spécifié dans votre chaîne de connexion et que ce port n’est pas bloqué par le pare-feu. Pour obtenir des
instructions, déplacez-vous vers la section Configuration des pare-feu.
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
Configuration des pare -feu
Si vous utilisez un pare-Windows, utilisez la procédure documentée dans la rubrique SQL Server Books
Online :
Configurez un pare-Windows pour Moteur de base de données Access.
Si vous utilisez un pare-feu personnalisé, travaillez avec votre administrateur réseau pour ouvrir les ports
nécessaires.
Vous trouverez ci-dessous quelques captures d’écran rapides montrant la configuration requise d’un pare-feu
Windows pour les connexions réussies à une instance par défaut et à une instance nommée.
Instance par défaut de SQL Server à l’écoute sur le port par défaut 1433 sur Windows 2012 R2. Dans ce
scénario, vous devez vous assurer qu’une exception est ajoutée au port TCP 1433 dans le pare-feu
Windows.
1. Ouvrez Windows pare-feu sur le système hébergeant SQL instance par défaut du serveur et
cliquez sur Nouvelle règle sous Règles de trafic entrant.
2. Sélectionnez l’option Port, puis cliquez sur Suivant.
4. Dans l’écran suivant, sélectionnez Autoriser la connexion, puis cliquez sur Suivant.
5. Dans l’écran suivant, sélectionnez l’option qui convient le mieux à votre environnement, puis
cliquez sur Suivant.
6. Dans l’écran suivant, donnez le nom à votre règle et fournissez une description claire pour
référence ultérieure, puis cliquez sur Terminer.
7. Une fois l’option effectuée, vous devez voir que la règle est créée et activée par défaut.
Ajout d’une exception au port UDP 1434 pour activer les connexions à une instance nommée de SQL
serveur :
1. Ouvrez Windows pare-feu sur le système hébergeant SQL instance par défaut du serveur et
cliquez sur Nouvelle règle sous Règles de trafic entrant.
4. Dans l’écran suivant, sélectionnez Autoriser la connexion, puis cliquez sur Suivant.
5. Dans l’écran suivant, sélectionnez l’option qui convient le mieux à votre environnement, puis
cliquez sur Suivant.
6. Dans l’écran suivant, donnez le nom à votre règle et fournissez une description claire pour
référence ultérieure, puis cliquez sur Terminer.
7. Une fois l’option effectuée, vous devez voir que la règle est créée et activée par défaut.
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
Utilisation de l’outil PortqryUI avec SQL Server
Emplacement de téléchargement : PortqryUI
1. Lancez l’outil PortqryUI sur votre ordinateur client. (l’ordinateur sur lequel vous avez des problèmes de
connexion, pour les applications web, il peut s’y avoir le serveur IIS)
2. Spécifiez le nom de serveur de SQL Server instance de SQL ou le nom de serveur de SQL dans l’adresse IP
ou le nom de domaine complet de destination à interroger.
3. Sélectionnez Ser vice de requête prédéféré et sélectionnez SQL service dans la liste liste.
4. Cliquez sur Requête, examinez la sortie et utilisez le tableau suivant pour obtenir des pointeurs
supplémentaires.
Instance par défaut Port TCP 1433 (service ms- Indique l’une des Assurez-vous SQL
sql-s) : NON À L’ÉCOUTE informations suivantes : est démarré.
SQL n’est pas Vérifiez SQL journal
démarré. d’erreurs pour le
Le protocole TCP/IP numéro de port et
n’est pas activé SQL utilisez-le dans vos
liste de protocoles chaînes de
du serveur. connexion au format
SQL est à l’écoute <servername> ,
sur un port autre numéro de port.
que le port par Travaillez avec votre
défaut. (vérifier lelog administrateur
des erreurs) réseau/windows
Le pare-feu entre le pour vous assurer
client et le serveur que le port TCP
bloque le port. 1433 n’est pas
bloqué par un pare-
feu sur le réseau ou
par le pare-feu
Windows sur le
système SQL Server.
Remarque Si vous
souhaitez résoudre un
problème de pare-feu,
déplacez-vous vers la
section Configuration des
pare-feu.
Instance par défaut Port TCP 1433 (service ms- La bibliothèque Vérifiez si le nom du
sql-s) : LISTENING cliente peut se serveur est
connecter à correctement
l’ordinateur SQL spécifié dans la
serveur, mais un chaîne de connexion.
autre problème dans Si la chaîne de
la couche connexion utilise le
d’application peut numéro de port, elle
être à l’origine du est correctement
problème. spécifiée dans la
chaîne de connexion.
Tous les anciens alias
définis dans la zone.
C A USES P OT EN T IEL L ES DES
P RO B L ÈM ES DE
T Y P E D’IN STA N C E SO RT IE DE P O RTQ RY C O N N EXIO N Q UE FA IRE ?
Instance nommée Port UDP 1434 (service ms- Indique l’une des Le service est
sql-m) : FILTRÉ informations suivantes : démarré.
SQL instance SQL service de
nommée n’est pas navigateur est
démarrée. démarré.
SQL navigateur n’a Travaillez avec votre
pas démarré sur le administrateur
système hébergeant réseau/windows
SQL instance. pour vous assurer
Le port UDP 1434 que le port UDP
est bloqué par un 1434 n’est pas
pare-feu sur le bloqué par un pare-
serveur SQL ou sur feu sur le réseau ou
le réseau entre le par le pare-feu
client et le serveur. Windows sur le
système SQL Server.
Remarque Si vous
souhaitez résoudre un
problème de pare-feu,
déplacez-vous vers la
section Configuration des
pare-feu.
Exemples de sorties :
Instance par défaut sur le port par défaut : scénario de travail
Instance par défaut sur le port par défaut : scénario de non-travail
Instance nommée : scénario de travail : (nom de l’instance : SQL 2014, nom d’hôte : SQLCONNVM)
Instance nommée : Scénario de non-travail : (nom de l’instance : SQL 2014, nom d’hôte : SQLCONNVM)
Pour plus d’informations, voir la section Configuration des pare-feu.
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
Savoir si SQL est à l’écoute sur les ports dynamiques et statiques
1. Dans Gestionnaire de configuration SQL Server, dans le volet console, développez SQL Server
Configuration réseau, développez Protocoles pour, puis double-cliquez sur TCP/IP .
2. Dans la boîte de dialogue Propriétés TCP/IP, sous l’onglet Adresses IP, plusieurs adresses IP
apparaissent au format IP1 , IP2 , jusqu’à IPAll . L’une d’elles est pour l’adresse IP de l’adaptateur de
boucle, 127.0.0.1. Des adresses IP supplémentaires apparaissent pour chaque adresse IP sur l’ordinateur.
(Vous verrez probablement les adresses IP version 4 et IP version 6.) Cliquez avec le bouton droit sur
chaque adresse, puis cliquez sur Propriétés pour identifier l’adresse IP à configurer.
3. Si la boîte de dialogue Ports dynamiques TCP contient 0, cela indique que le Moteur de base de données
est à l’écoute sur les ports dynamiques. S’il contient un nombre spécifique, cela signifie que l’instance de
base de données est à l’écoute sur un port statique.
Pour plus d’informations, voir Configurer un serveur pour écouter sur un port TCP spécifique.
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
[Microsoft] [SQL Server Native Client 11.0] Fournisseur TCP : aucune connexion n’a pu être réalisée car
l’ordinateur cible l’a activement refusée.
[Microsoft] [SQL Server Native Client 11.0] Expiration du délai d’expiration de la connexion.
[Microsoft] [SQL Server Native Client 11.0] Une erreur liée au réseau ou à l’instance s’est produite lors de
l’établissement d’une connexion SQL Server. Le serveur n’est pas trouvé ou n’est pas accessible. Vérifiez si le
nom de l’instance est correct et si SQL Server est configuré pour autoriser les connexions à distance. Pour
plus d’informations, voir SQL Server Books Online.
Vous pouvez commencer à résoudre les problèmes à partir de cette section : Causes courantes de divers
problèmes de connexion.
T Y P E DE P RO B L ÈM E RÉSO L UT IO N S SUGGÉRÉES
SQL Comptes de service non fiables pour la délégation. Si Utilisez l’onglet délégation du Gestionnaire de
vous utilisez un compte système local, le serveur configurationKerberos pour confirmer et travailler avec votre
intermédiaire doit être approuvé pour la délégation dans administrateur Active Directory afin d’activer la délégation
Active Directory. pour le compte. Consultez l’utilisation du Gestionnaire de
configuration Kerberos pour diagnostiquer et résoudre les
problèmes de SPN et de délégation pour plus d’informations
dans le paragraphe suivant.
T Y P E DE P RO B L ÈM E RÉSO L UT IO N S SUGGÉRÉES
Résolution de nom incorrecte : le nom de votre serveur peut ping -a <your_target_machine> (utiliser -4 et -6 pour
se résoudre en une adresse IP différente de celle inscrite par IPv4 et IPv6 spécifiquement)
le serveur DNS de votre réseau. ping -a <Your_remote_IPAddress> nslookup (tapez
votre nom d’ordinateur local et distant et votre adresse IP
plusieurs fois)
Pare-feu ou autres périphériques réseau empêchant les Pour plus d’informations, consultez les liens suivants :
connexions entre le client et le contrôleur de domaine : les Conditions requises pour les ports d’Active Directory
SSN sont stockés dans Active Directory et si les clients ne et des services de domaine Active Directory
parviennent pas à communiquer avec aD, la connexion ne Outils et outils d’authentification Kerberos
peut pas poursuivre. Paramètres
NOTE
1. Lorsqu’une instance du SQL Server Moteur de base de données démarre, SQL Server tente d’inscrire le SPN pour
le service SQL Server service. Lorsque l’instance est arrêtée, SQL Server tente d’désinsser le SPN. Pour ce faire, le
compte SQL service nécessite des droits ReadSer vicePrincipalName et WriteSer vicePrincipalName dans
l’annuaire actif. Toutefois, si le compte de service ne comprend pas ces droits, l’inscription automatique au SPN ne
se produit pas et vous devez travailler avec votre administrateur Active Directory pour les inscrire pour les
instances SQL afin d’activer l’authentification Kerberos. Dans ce scénario, si vous utilisez une instance nommée, il
sera plus pratique d’utiliser un port statique pour cette instance. Si vous utilisez des ports dynamiques, le numéro
de port peut changer chaque fois que le service est redémarré et que le SPN enregistré manuellement pour
l’instance n’est plus valide. Pour plus d’informations, voir Register a Service Principal Name for Kerberos
Connections.
2. Dans les environnements où SQL est regroupée, l’inscription automatique des SPN n’est pas recommandée, car
l’inscription du SPN dans Active Directory peut prendre plus de temps que le temps nécessaire à la mise en ligne
de SQL. Si l’inscription du SPN ne se produit pas dans le temps, cela peut empêcher SQL de se connecter, car
l’administrateur de cluster n’est pas en mesure de se connecter SQL serveur.
Utilisation du Gestionnaire de configuration Kerberos pour diagnostiquer et résoudre les problèmes de SPN et de délégation
1. Téléchargez Microsoft® Kerberos Configuration Manager pour SQL Server® et installez-le sur un
ordinateur client.
2. Lancez l’outil à l’aide d’un compte de domaine de préférence avec un compte qui dispose de privilèges
suffisants pour créer des noms de service dans votre annuaire Active Directory. Consultez l’image ci-
dessous :
3. Connecter à SQL Server vous souhaitez collecter les informations relatives aux erreurs Kerberos :
4. Une fois connecté, vous pouvez voir différents onglets comme indiqué ci-dessous :
Système : dispose des informations système de base.
SPN : Fournit au SPN des informations sur les instances de chacune des instances de SQL
trouvées sur le serveur cible et fournit différentes options, comme indiqué ci-dessous. Utilisez cet
onglet pour rechercher les SNS manquants ou mal configurés et les boutons Générer ou Corriger
pour résoudre ces problèmes.
L’option Générer vous permet de créer le script de génération de SPN. Cliquez sur le
bouton Générer pour lancer la boîte de dialogue suivante :
Cette option crée un fichier cmd, qui peut être exécuté à partir de l’invite de commandes
pour générer le SPN.
Le contenu des generateSPNs sera similaire à ce qui suit :
:: This script is generated by the Microsoft(c) SQL Server(c) Kerberos Configuration
Manager tool.
:: The script may update the system information, SPN settings and Delegation
configurations of a given server.
:: SPN and Delegation configuration updates require Windows Domain Administrator
permission to execute.
:: A Domain Admin should review the configurations recommended by this tool and take
appropriate actions to enable Kerberos authentication.
:: Please contact Microsoft Support if Kerberos connection problem persists.
:: The file is intended to be run in domain "<DomainName>.com"
:: Corrections for MSSQLSvc/<HostName>.<DomainName>.com **SetSPN -s
MSSQLSvc/<HostName>.<DomainName>.com UserName**
Il utilise simplement l’option SetSPN pour créer un SPN sous le compte de service pour
SQL Server.
L’option de correction ajoute le SPN tant que vous avez le droit d’ajouter le SPN et affiche
l’info-conseil suivante :
NOTE
L’outil fournit uniquement les options Fix et Generate pour les instances par défaut et les
instances nommées avec des ports statiques. Pour les instances nommées utilisant le port
dynamique, il est recommandé de passer de ports dynamiques à statiques ou de donner au
compte de service les autorisations nécessaires pour enregistrer et désinsser le SPN chaque fois
que le service est démarré. Dans le cas contraire, vous devez désins inscrire et réenregistrer
manuellement les SNS correspondants chaque fois que SQL service est démarré.
5. Une fois que vous avez corrigé les SPN, réexécutez l’outil Gestionnaire de configuration Kerberos et
assurez-vous que les onglets SPN et Délégation ne signalent plus les messages d’erreur et retentent la
connexion à partir de votre application.
Pour plus d’informations, examinez les liens suivants :
SQL Server Référence rapide kerberos et SPN
Kerberos Configuration Manager pour SQL Server est disponible
Supplément technique Kerberos pour Windows
Comment être opérationnel avec Oracle et les serveurs liés
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
Scénarios de double saut sur le même ordinateur : vous Pour les scénarios de double saut sur le même ordinateur,
essayez d’utiliser un double saut, mais les informations ajoutez des entrées de Registre DisableLoopbackCheck ou
d’identification NTLM sont utilisées à la place de Kerberos. BackConnectionHostNames comme suit :
DisableLoopbackCheck. Permet d’y faire les choses de
la bonne façon
Scénarios de double saut sur plusieurs ordinateurs : l’erreur Passer à la section : Résolution des problèmes
peut se produire en cas d’échec des connexions Kerberos en d’authentification en raison de problèmes Kerberos en bas
raison de problèmes de SPN. pour voir les détails.
Aucun double saut n’est impliqué. Si aucun double saut n’est impliqué, cela peut également
signifier qu’il existe des SNS dupliqués et que le client
s’exécute en tant que LocalSystem ou un autre compte
d’ordinateur qui obtient les informations d’identification
NTLM au lieu des informations d’identification Kerberos.
Windows stratégie de sécurité locale a peut-être été Sur Windows 2008 R2/Windows 7 et ultérieures, la sécurité
configurée pour empêcher l’utilisation du compte réseau des options de sécurité des stratégies de sécurité
d’ordinateur pour les comptes locaux. locales peut être configurée pour ne pas utiliser le compte
d’ordinateur pour les comptes locaux et utiliser les
informations d’identification anonymes à la | | place.
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
Échec de connexion pour le message de l’utilisateur « (null) »
Cela signifie que LSASS n’a pas pu déchiffrer le jeton de sécurité à l’aide des informations d SQL Server de
compte de service. La raison principale est que le SPN est associé à un compte erroné.
Pour diagnostiquer et résoudre ces problèmes de SPN, déplacez-vous vers la section Résolution des problèmes
d’authentification en raison des problèmes Kerberos.
Échec de connexion pour l’utilisateur est vide
Par exemple, vous pouvez voir une erreur semblable à ce qui suit :
Source: NETLOGON
Date: 8/12/2012 8:22:16 PM
Event ID: 5719
Task Category: None
Level: Error
Keywords: Classic
User: N/A
Computer: <computer name>
Description:This computer was not able to set up a secure session with a domain controller in domain due to
the following: The remote procedure call was cancelled. This may lead to authentication problems. Make sure
that this computer is connected to the network. If the problem persists, please contact your domain
administrator.
Empty string means that SQL tried to hand-off the credentials to LSASS but there was some problem. Either
LSASS was not available or the domain controller could not be contacted.
Check the event logs on the client and the server machines to see if there are any network or Active
Directory related messages around the time of failure and if you do, work with your domain administrator to
fix the issues.
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
La connexion a échoué pour <username> l’utilisateur ' ou la connexion a échoué pour l’utilisateur <domain> \
<username> ' '
Si le nom de domaine n’est pas spécifié, il s’agit d’un SQL connexion. S’il est spécifié, il s’agit d’une connexion
Windows-Integrated défaut. Examinez le tableau suivant pour déterminer les causes et les résolutions
potentielles.
La base de données demandée est hors ligne ou n’est pas Vérifiez les autorisations et la disponibilité de la base de
disponible. données dans SQL Server Management Studio.
L’utilisateur n’a pas d’autorisations sur la base de données Essayez de vous connecter en tant qu’autre utilisateur
demandée. dispose de droits sysadmin.
Pour obtenir des conseils supplémentaires, examinez la résolution des problèmes : Échec de connexion pour
l’utilisateur « x».
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
Échec de la connexion de l’utilisateur <domaine\nom_ordinateur$>'
Vous pouvez également le voir avec les applications IIS qui utilisent la connexion anonyme ou la connexion de
formulaire où le compte d’utilisateur n’est pas usurpé. Le compte iis anonyme (IUSR) ou le compte du pool
d’applications est à la place emprunt d’identité. Le compte IUSR est un compte local et le compte du pool
d’applications peut également être un compte local.
Cette erreur se produit généralement si l’utilisateur est connecté avec un compte local plutôt qu’un compte de
domaine. Si la connexion aux services est hors zone, les informations d’identification de l’ordinateur peuvent
être transmises. Dans certains cas, vous pouvez ajouter ce compte en tant que connexion sur le serveur
principal. Dans d’autres cas, vous pouvez vous connecter avec un compte de domaine et lui fournir les
autorisations appropriées pour accéder au service distant.
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
Expiration du délai d’expiration. Le délai d’expiration s’est produit avant la fin de l’opération ou le serveur ne
répond pas.
NOTE
Les deuxième et troisième messages d’erreur se produisent lorsque .Net Framework 4.5 ou supérieur est installé.
Vous pouvez commencer à résoudre les problèmes à partir de la section suivante : Résolution des messages
expirés de délai d’expiration.
Résolution des problèmes de messages expirés
Un délai d’délai est le moment où un quelque chose prend plus de temps qu’il n’est autorisé. Nous abandonnons
essentiellement ce que nous essayions de faire pour ne pas attendre indéfiniment et éventuellement bloquer
d’autres éléments et bloquer une application. Du point de vue de la connectivité, dans sa forme de base, nous
pouvons voir cela de deux manières. L’un est un délai de connectivité, l’autre un délai d’accès à la requête. Vous
devez donc d’abord examiner la pile d’appels complète du message d’erreur pour déterminer s’il s’agit d’un délai
d’accès ou d’un délai d’accès à une commande.
NOTE
Les valeurs par défaut de ces paramètres qui peuvent être définies par le biais du code, de la chaîne de connexion et
d’autres méthodes sont les suivantes :
Délai de connexion : 15 secondes
Délai d’out de requête ou de commande : 30 secondes
Étapes de résolution : ces deux problèmes peuvent être liés à l’environnement SQL Server problèmes. Par
exemple, il peut s’agit d’un réseau lent ou d’un problème de performances de requête. Il n’existe pas de règles
strictes et rapides, car ce qui pourrait être fait ici et d’autres enquêtes peuvent être nécessaires quant à ce qui
pourrait être à l’origine du problème. Il est beaucoup plus courant d’augmenter le délai d’out de requête que
d’augmenter le délai de connexion. En effet, lorsque vous essayez de vous connecter à une source de données, la
connexion se produit généralement rapidement (généralement en quelques millisecondes).
Délai de connexion
1. Augmentez ConnectionTimout dans votre application.
2. Vérifiez si le port utilisé par SQL est bloqué sur le réseau à
l’aide d’un outil tel que Por tqr y . Pour obtenir des
instructions sur son utilisation, SQL Server à l’aide de l’outil
PortqryUI.
Pour plus d’conseils et de suggestions, consultez : Résolution des problèmes : Expiration du délai d’expiration.
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
Cela peut être dû au fait que toutes les connexions en pool étaient en cours d’utilisation et que la taille maximale
du pool a été atteinte. Cela peut généralement être évité par expiration du délai d’expiration. Le délai d’attente
s’est écoulé avant l’obtention d’une connexion à partir du pool.
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
2. Accédez au dossier dans lequel vous souhaitez créer le fichier de liaison de données universelle (.udl) (par
exemple c:\temp)
3. Créez un fichier texte (sqlconn.txt) et renommez l’extension .txt .udl. (cliquez sur Oui pour le message
d’avertissement concernant la modification de l’extension de nom de fichier)
4. Double-cliquez sur le fichier .udl de l’étape 3 et faites ce qui suit :
a. Dans l’onglet Fournisseur, sélectionnez le fournisseur que vous utilisez dans votre application (par
exemple, SQL Server Native Client)
b. Dans l’onglet Connexion, sélectionnez ou entrez votre SQL Server et le reste des paramètres
pertinents pour votre application
5. Cliquez ensuite sur Tester la connexion.
Pour plus d’informations et de captures d’écran, consultez le billet de blog suivant sur MSDN :
Informations de base : « Test UDL »
Si cela ne résout pas votre problème, déplacez-vous vers la section Toujours avoir des problèmes.
Encore des problèmes
Nous sommes désolés que ce guide ne vous ait pas permis de résoudre votre problème. Nous vous
recommandons d’aller au SQL Community Microsoft pour obtenir de l’aide. Voici quelques ressources
supplémentaires que vous pourriez trouver utiles :
Étapes à suivre pour résoudre SQL problèmes de connectivité
Résolution des problèmes de connexion au serveur et à la base de données
Résoudre les problèmes de connexion au SQL Server Moteur de base de données
Le certificat reçu du serveur distant a été émis par
une erreur d’autorité de certification non SQL
Server
13/08/2021 • 5 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’établir une connexion
chiffrée à SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2007728
Symptômes
Lorsque vous vous connectez SQL Server, vous pouvez recevoir le message d’erreur suivant :
Une connexion a été établie avec succès avec le serveur, mais une erreur s’est produite lors du processus de
connexion. (fournisseur : fournisseur SSL, erreur : 0 - La chaîne de certificats a été émise par une autorité qui
n’est pas fiable.) (.Net SqlClient Fournisseur de données)
En outre, le message d’erreur suivant est consigné dans le journal des Windows système
Cause
Cette erreur se produit lorsque vous essayez d’établir une connexion chiffrée à SQL Server à l’aide d’un certificat
non vérifiable. Cela peut se produire dans les scénarios suivants :
A UTO RIT É
ÉM ET T RIC E DE
C ERT IF IC AT
P RÉSEN T E DA N S L E
M A GA SIN
A UTO RIT ÉS DE
C ERT IF IC AT IO N
C H IF F REM EN T C ÔT É C H IF F REM EN T C ÔT É RA C IN ES DE
SC ÉN A RIO SERVEUR C L IEN T T Y P E DE C ERT IF IC AT C O N F IA N C E
A UTO RIT É
ÉM ET T RIC E DE
C ERT IF IC AT
P RÉSEN T E DA N S L E
M A GA SIN
A UTO RIT ÉS DE
C ERT IF IC AT IO N
C H IF F REM EN T C ÔT É C H IF F REM EN T C ÔT É RA C IN ES DE
SC ÉN A RIO SERVEUR C L IEN T T Y P E DE C ERT IF IC AT C O N F IA N C E
Lors de l’établissement de connexions chiffrées à SQL Server, le canal sécurisé (Schannel) crée la liste des
autorités de certification de confiance en recherchant le magasin Autorités de certification racines de confiance
sur l’ordinateur local. Pendant la mise en relation TLS, le serveur envoie son certificat de clé publique au client.
L’émetteur d’un certificat de clé publique est appelé autorité de certification. Le client doit s’assurer que
l’autorité de certification est une autorité de certification en qui le client a confiance. Pour ce faire, vous
connaîtrez à l’avance la clé publique des CAs de confiance. Lorsque Schannel détecte un certificat émis par une
autorité de certification non habilitée, comme dans les deux cas ci-dessus, vous obtenez le message d’erreur
répertorié dans la section Symptômes.
Résolution
Si vous utilisez intentionnellement un certificat provenant d’une autorité non fiable ou un certificat auto-signé
pour chiffrer les connexions à SQL Server, vous pouvez utiliser l’une des options suivantes :
Pour le scénario 1 : ajoutez l’autorité de certification au magasin Autorités de certification racines de confiance
sur l’ordinateur client qui lance une connexion chiffrée. Pour ce faire, complétez le certificat de serveur et
installez l’autorité de certification racine sur les procédures de l’ordinateur client répertoriées ci-dessous dans
cette séquence.
Exporte le certificat de serveur.
L’exemple utilise un fichier nommé caCert.cer comme fichier de certificat. Vous devez obtenir ce fichier de
certificat à partir du serveur. Les étapes suivantes expliquent comment exporter le certificat de serveur vers un
fichier :
1. Cliquez sur Démarrer, puis Exécutez, puis tapez MMC. (MMC est un acronyme de Microsoft
Management Console.)
2. Dans MMC, ouvrez les cer tificats.
3. Développez Personnel, puis Cer tificats.
4. Cliquez avec le bouton droit sur le certificat de serveur, puis sélectionnez Toutes les tâches\Expor ter.
5. Cliquez sur Suivant pour aller au-delà de la boîte de dialogue d’accueil de l’Assistant Exportation de
certificat.
6. Confirmez que non, n’expor tez pas la clé privée est sélectionnée, puis cliquez sur Suivant .
7. Assurez-vous que le fichier binaire X.509 codé DER (. CER) ou X.509 codé en base 64 (. CER) est
sélectionné, puis cliquez sur Suivant .
8. Entrez un nom de fichier d’exportation.
9. Cliquez sur Suivant, puis sur Terminer pour exporter le certificat.
Installer l’autorité de certification racine sur l’ordinateur client
1. Démarrez le logiciel en snap-in Certificats pour la MMC sur l’ordinateur client, puis ajoutez le logiciel en
snap-in Certificats.
2. Dans la boîte de dialogue Certificats en ligne, sélectionnez Compte d’ordinateur, puis suivant .
3. Dans le volet Sélectionner un ordinateur, choisissez Ordinateur local : (l’ordinateur sur qui cette console
est en cours d’exécution), puis choisissez Terminer .
4. Choisissez OK pour fermer la boîte de dialogue Ajouter ou supprimer des snap-ins.
5. Dans le volet gauche de la MMC, développez le nœudCer tificats (ordinateur local).
6. Développezle nœud Autorités de certification racines de confiance, cliquez avec le bouton droit sur le
sous-foldeur Certificats, sélectionnez Toutes les tâches, puis sélectionnezImpor ter.
7. Dans l’Assistant Impor tation de certificat, sur la page d’accueil, choisissez Suivant .
8. On the File to Import page, chooseBrowse .
9. Accédez à l’emplacement du fichier de certificat caCert.cer, sélectionnez le fichier, puis choisissezOuvrir .
10. Dans la page Fichier à importer, choisissezSuivant .
11. Dans la page Magasin de certificats, acceptez la sélection par défaut, puis choisissezSuivant .
12. On the Completing the Cer tificate Impor t Wizard page, choose Finish .
Pour les scénarios 1 et 2 : définissez le paramètre Cer tificat de serveur de confiance sur true dans votre
application cliente.
Pour plus d’informations sur la façon de le faire, voir les rubriques suivantes :
Utilisation du chiffrement sans validation dans SQL Server Native Client.
Connexion avec chiffrement à l’aide du pilote JDBC Microsoft pour SQL Server.
Utilisation du chiffrement avec Sqlclient.
NOTE
Si vous utilisez SQL Server Management Studio, vous pouvez cliquer sur l’onglet Options et cocher la case Option de
certificat ser veur de confiance sous l’onglet Propriétés de connexion.
Attention : Les connexions SSL chiffrées à l’aide d’un certificat auto-signé ne fournissent pas une sécurité
renforcée. Elles sont exposées aux man-in-the-middle attaques. Vous ne devez pas vous appuyer sur SSL à l’aide
de certificats auto-signés dans un environnement de production ou sur des serveurs connectés à Internet.
Si la configuration abordée dans les sections précédentes de cet article n’est pas souhaitée, vous pouvez utiliser
l’une des options suivantes pour résoudre ce problème :
Configurer le moteur de base de données pour qu’il utilise le chiffrement selon la procédure dans Activer
les connexions chiffrées au Moteur de base de données
Si le chiffrement n’est pas requis :
Désactivez les paramètres de chiffrement (le cas caser) dans votre application cliente.
Désactivez le chiffrement côté serveur à l’SQL Server Configuration Manager. Pour plus
d’informations sur la façon de faire, voir Configurer le serveur.
Il se peut que vous ne soyez pas en mesure d’établir
une connexion distante SQL Server à partir d’un
déclencheur CLR
14/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème dans lequel vous ne pouvez pas établir de connexion distante SQL
Server à partir d’un déclencheur CLR.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2000373
Symptômes
Lorsque vous déployez un déclencheur CLR qui accède aux données à partir d’une SQL Server distante à l’aide
de l’authentification Windows après avoir usurpé l’identité du compte d’utilisateur à l’aide de
WindowsImpersonationContext, vous obtenez le message d’erreur suivant lors de l’exécution du déclencheur.
Résolution
Si vous avez besoin de la fonctionnalité d’emprunt d’identité de l’appelant à l’intérieur d’un déclencheur CLR
SQL, gérez les transactions explicitement dans votre code. Utilisez la méthode pour supprimer l’SQL gestion des
transactions et gérer la transaction distante avec validation ou rollback en conformité
TransactionScopeOption.Supress avec vos besoins. Reportez-vous à la section Étapes à reproduire ci-dessous
pour obtenir un exemple sur la façon de reproduire ce problème et pour obtenir un exemple sur l’utilisation de
la méthode ci-dessus pour résoudre le problème.
Plus d’informations
Ouvrez SQL Server Management Studio, puis connectez-vous à votre instance de SQL Server 2008.
Créez une base de données de test à l’aide du script suivant.
reconfigure
GO
Dans Microsoft Visual Studio 2008, créez un projet Visual C# à l’aide SQL Server Project modèle.
Nommez le projet SQLCLRTriggerProject.
Dans le menu Project, sélectionnez Propriétés SQLCLRTriggerProject et configurez la section Base de
données pour qu’elle pointe vers la base de données créée précédemment dans la procédure
(dbTriggerTest) et définissez le niveau d’autorisation sur Externe.
Dans le menu Project, sélectionnez Ajouter un nouvel élément.
Sélectionnez Déclencheur dans la boîte de dialogue Ajouter un nouvel élément.
Tapez un nom pour le nouveau déclencheur.
Remplacez le code du déclencheur nouvellement créé par l’exemple de code suivant.
Liste de code problématique:
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
using System.Security.Principal;
try
{
try
{
impersonatedUser = clientId.Impersonate();
if (impersonatedUser != null)
{
SqlConnection conn = new SqlConnection(@"Data Source=<Your server name>;Initial
Catalog=master;Integrated Security=SSPI");
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "select * from sys.sysobjects";
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
}
}
finally
{
// Undo impersonation.
if (impersonatedUser != null)
impersonatedUser.Undo();
}
}
catch
{
throw;
}
}
}
Déployez le projet dans la base de données créée à l’étape 2 à l’aide de l’option Déployer Project SQLCLR
dans le menu Build.
Ouvrez SQL Server Management Studio, puis connectez-vous à l’instance de SQL Server 2008 où le
déclencheur est déployé.
Vous devriez voir les deux éléments suivants créés sous la base de données de dbTriggerTest test.
Déclencheurs - mytrigger
Assemblys - SQLCLRTriggerProject
Vérifiez que l’autorisation définie sur l’assembly est définie sur Accès externe à l’aide du volet de
propriétés de SQLCLRTriggerProject l’assembly dans Management Studio.
Exécutez l’instruction suivante pour reproduire le problème.
insert into t values (1)
Remplacez la liste de code problématique par l’exemple de code suivant pour résoudre le problème.
Liste de codes fixes :
using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;
using System.Security.Principal;
using System.Transactions;
Cet article vous aide à contourner le problème où une procédure stockée dans une base de données qui utilise
la fonctionnalité Magasin de données de requête échoue régulièrement.
Version du produit d’origine : SQL Server 2016
Numéro de la ko d’origine : 4465511
Symptômes
Prenons l’exemple du scénario suivant :
Vous disposez d Microsoft SQL Server base de données 2016 qui utilise la fonctionnalité magasin de
données de requête.
Vous avez une procédure stockée qui effectue un appel à une autre procédure stockée à l’aideINSERT...EXE
syntaxe C.
Le magasin de données de requête exécute régulièrement un nettoyage automatique à mesure que la taille
augmente jusqu’à sa taille maximale configurée et que le magasin de données de requête change
fromREAD_WRITEtoREAD_ONLY d’état.
Dans ce scénario, l’exécution de procédure stockée parente échoue régulièrement et vous recevez un message
d’erreur semblable à ce qui suit :
Cause
Lorsque le magasin de données de requête exécute un nettoyage automatique, ce purge est prévu hors du
magasin de données de requête. La requête rencontre une opération de recompilage, car le plan est absent du
magasin de données de requête, mais le plan est toujours présent dans le cache des procédures. Par conception,
lorsque l’opération de recompiler se produit, SQL Server envoie l’erreur 556 pour empêcher l’exécution en
double de la procédure enfant, ce qui entraînerait le retour de résultats incorrects.
Solution de contournement
Pour contourner ce problème, suivez les étapes suivantes :
1. Augmentez la taille du magasin de données de requête. Cela permet de réduire la fréquence ou la probabilité
que le magasin de données de requête efface le plan et entre en READ_ONLY mode d’exploitation.
2. Ajoutez la gestion des erreurs à votre code pour capturer l’erreur 556, puis resoumettre INSERT EXEC la
requête.
3. Effacer le cache de procédure lorsque le magasin de données de requête revient à READ_WRITE l’état à partir
READ_ONLY de .
Informations supplémentaires
En raison des modifications apportées au magasin de données de requête en Microsoft SQL Server 2017, ce
problème ne se produit pas SQL Server 2017. This issue won’t be fixed in SQL Server 2016.
L’exécution SQL Server CLR échoue avec
TypeInitializationException
13/08/2021 • 4 minutes to read
Cet article vous aide à contourner le problème où l’exécution d’objets CLR SQL Server échoue et renvoie une
exception System.TypeInitializationException.
S’applique à : SQL Server
Numéro de la ko d’origine : 4576575
Symptômes
IMPORTANT
Cet article contient des informations qui vous montrent comment réduire les paramètres de sécurité ou désactiver les
fonctionnalités de sécurité sur un ordinateur. Vous pouvez apporter ces modifications pour contourner un problème
spécifique. Avant d’apporter ces modifications, nous vous recommandons d’évaluer les risques associés à l’implémentation
de cette solution de contournement dans votre environnement particulier. Si vous implémentez cette solution de
contournement, prenez les mesures supplémentaires appropriées pour protéger l’ordinateur.
Après avoir installé une mise à jour .NET Framework applicable pour corriger une vulnérabilité décrite dans
CVE-2020-1147,l’exécution d’objets de base de données de création avec l’intégration CLR (Common Language
Runtime) qui lisent le XML dans des objets d’aide à la sécurité DataSet et DataTable échoue. Cela se produit en
raison d’une exception System.TypeInitializationException qui a une exception FileNotFoundException
imbrique. Ce problème indique que l’assembly System.Drawing n’a pas pu être chargé.
Pour référence, voir l’exemple suivant :
Msg 6522, Level 16, State 1, Procedure [your CLR object], Line 0 [Batch Start Line 0] A .NET Framework error
occurred during execution of user-defined routine or aggregate « your CLR object »:
System.TypeInitializationException : l’initialiseur de type pour « Scope » a lancé une exception. --->
System.IO.FileNotFoundException: Could not load file or assembly 'System.Drawing, Version=4.0.0.0,
Culture=neutral, PublicKeyToken= <Token> ' or one of its dependencies. Le fichier spécifié est introuvable.
System.TypeInitializationException :
at System.Data.TypeLimiter.Scope.IsTypeUnconditionallyAllowed(Type type)
at System.Data.TypeLimiter.Scope.IsAllowedType(Type type)
at System.Data.TypeLimiter.EnsureTypeIsAllowed(Type, TypeLimiter capturedLimiter) at
System.Data.DataColumn.UpdateColumnType(Type type, StorageType typeCode)
chez System.Data.DataColumn.. ctor(String columnName, Type dataType, String expr, MappingType type)
at System.Data.XSDSchema.HandleElementColumn(XmlSchemaElement elem, DataTable table, Boolean
isBase)
at System.Data.XSDSchema.HandleParticle(XmlSchemaParticle pt, DataTable table, ArrayList tableChildren,
Boolean isBase)
at System.Data.XSDSchema.HandleComplexType(XmlSchemaComplexType ct, DataTable table, ArrayList
tableChildren, Boolean isNillable)
at System.Data.XSDSchema.InstantiateTable(XmlSchemaElement node, XmlSchemaComplexType typeNode,
Boolean isRef)
at System.Data.XSDSchema.HandleTable(XmlSchemaElement node)
at System.Data.XSDSchema.HandleParticle(XmlSchemaParticle pt, DataTable table, ArrayList tableChildren,
Boolean isBase)
at System.Data.XSDSchema.HandleComplexType(XmlSchemaComplexType ct, DataTable table, ArrayList
tableChildren, Boolean isNillable)
at System.Data.XSDSchema.InstantiateTable(XmlSchemaElement node, XmlSchemaComplexType typeNode,
Boolean isRef)
at System.Data.XSDSchema.HandleTable(XmlSchemaElement node)
at System.Data.XSDSchema.LoadSchema(XmlSchemaSet schemaSet, DataSet ds)
at System.Data.DataSet.InferSchema(XmlDocument xdoc, String[] excludedNamespaces, XmlReadMode
mode)
at System.Data.Data...
Résolution
This issue has been fixed in the October 13, 2020 republishing of the .NET Framework July 2020 Security-Only
Updates.
Pour plus d’informations, notamment sur la façon d’obtenir le correctif, voir .NET Framework republishing of
July 2020 Security Only Updates.
Solution de contournement
WARNING
Cette solution de contournement peut rendre un ordinateur ou un réseau plus vulnérable aux attaques par des
utilisateurs malveillants ou par des logiciels malveillants tels que des virus. Nous ne recommandons pas cette solution de
contournement, mais fournissons ces informations afin que vous pouvez implémenter cette solution de contournement à
votre propre discrétion. Son utilisation relève de votre responsabilité.
Pour les applications qui désérialisent des données XML nontrues dans une instance de l’un ou l’autre des
objets, nous vous recommandons d’utiliser une autre méthode pour accéder DataSet DataTable aux données.
Pour les applications qui lisent uniquement des données XML fiables, vous pouvez essayer l’une des solutions
de contournement suivantes.
NOTE
Les solutions de contournement 1 et 2 sont privilégiées, car les modifications sont apportées localement. La solution de
contournement 3 est à l’échelle du système.
WARNING
Ces solutions de contournement suppriment les restrictions de type pour désérialiser le XML en instances et DataSet
DataTable objets. Cela peut ouvrir un vide de sécurité si l’application lit des entrées non confiance.
IMPORTANT
Nous ne pouvons pas garantir que cette modification ne sera pas écrasée par SQL Server mises à jour ou mises à
niveau d’instances. Nous vous recommandons de déterminer si la modification persiste après une mise à jour ou
une mise à niveau d’instance.
1. Recherchez leSqlservr.exe.config dans les emplacements de fichiers des instances par défaut et
nommées de SQL Server:
%ProgramFiles%\Microsoft SQL Server\<Instance_ID>.<Instance Name>\MSSQL\Binn\
2. Dans le nœud, mais en dehors des nœuds <runtime> imbrmbrés, ajoutez la ligne suivante :
<AppContextSwitchOverrides value="Switch.System.Data.
AllowArbitraryDataSetTypeInstantiation=true"/>
Cette solution de contournement affecte toutes les applications .NET sur le serveur. Par conséquent, vous
ne devez utiliser cette méthode qu’en dernier recours si vous ne pouvez pas utiliser les autres solutions
de contournement.
1. Ouvrez l’Éditeur du Registre.
2. Recherchez la sous-clé suivante :
KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AppContext
SW ITC H . SY ST EM .
DATA . A L LO WA RB IT RA RY DATA SET T Y P EIN STA N T IAT IO
NOM N
Valeur true
Plus d’informations
Ce problème est dû à l’action d’une mise à jour de sécurité .NET Framework récente pour corriger la validation
du .NET Framework de contenu XML. SQL Server Les objets CLR qui ne lisent pas le XML dans les instances de
l’un ou l’autre des objets DataSet DataTable ne seront pas affectés.
Un index filtré que vous créez avec le prédicat IS
NULL n’est pas utilisé dans SQL Server
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous créez l’index avec l’expression de
prédicat Column IS NULL dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 3051225
Symptômes
Prenons l’exemple du scénario suivant :
Vous créez un index filtré avec l’expression de prédicat Column IS NULL dans SQL Server.
Le champ Colonne n’est pas inclus dans la structure d’index. (Autrement dit, le champ Colonne n’est pas
une clé ou une colonne incluse dans la définition d’index filtrée.)
Par exemple, vous créez la requête suivante :
NOTE
Cette requête n’utilise pas l’index filtré suivant :
Dans ce scénario, l’index filtré n’est pas utilisé. Au lieu de cela, l’index en cluster est utilisé.
Résolution
Pour résoudre ce problème, incluez la colonne testée comme NULL dans les colonnes renvoyées. Vous pouvez
également ajouter cette colonne en tant qu’inclure des colonnes dans l’index.
Cet article explique comment les structures persistantes dans votre base de données SQL Server peuvent être
validées dans le cadre du niveau de compatibilité de mise à niveau, et comment les structures affectées peuvent
être reconstruites après la mise à niveau du niveau de compatibilité.
Version du produit d’origine : SQL Server 2017, SQL Server 2016
Numéro de la ko d’origine : 4010261
Le moteur de base de données Microsoft SQL Server 2016 et Azure SQL Database comprend des améliorations
dans les conversions de types de données et plusieurs autres opérations. La plupart de ces améliorations offrent
une plus grande précision lorsque vous travaillez avec des types à pointe flottante et avec des types date/heure
classiques.
Ces améliorations sont toutes disponibles lorsque vous utilisez un niveau de compatibilité de base de données
d’au moins 130. Cela signifie que pour certaines expressions (pour la plupart rares), vous pouvez voir des
résultats différents pour certaines valeurs d’entrée après avoir mis à niveau la base de données vers le niveau de
compatibilité 130 ou un paramètre supérieur. Ces résultats peuvent être reflétés dans :
structures persistantes dans la base de données ;
données de table incluses soumises aux contraintes CHECK
colonnes calculées persistantes
index de référencement de colonnes calculées
index filtrés et vues indexées.
Si vous avez une base de données créée dans une version antérieure de SQL Server, nous vous recommandons
d’une validation supplémentaire après la mise à niveau vers SQL Server 2016 ou version ultérieure et avant de
modifier le niveau de compatibilité de la base de données.
Si vous constatez que l’une des structures persistantes de votre base de données est affectée par ces
modifications, nous vous recommandons de reconstruire les structures affectées après avoir mis à niveau le
niveau de compatibilité de la base de données. En faisant cela, vous bénéficierez de ces améliorations dans SQL
Server 2016 ou ultérieure.
Cet article explique comment les structures persistantes dans votre base de données peuvent être validées dans
le cadre de la mise à niveau vers le niveau de compatibilité 130 ou un paramètre supérieur, et comment les
structures affectées peuvent être reconstruites après avoir changé le niveau de compatibilité.
NOTE
Indicateur de suivi 139 dans SQL Server
L’indicateur de suivi global 139 est introduit dans SQL Server 2016 CU3 et Service Pack (SP) 1 pour forcer une
sémantique de conversion correcte dans l’étendue des commandes de vérification DBCC telles que **DBCC
CHECKDB,**DBCC CHECKTABLE et DBCC CHECKCONSTRAINTS lorsque vous analysez la logique de conversion et de
précision améliorée introduite avec le niveau de compatibilité 130 sur une base de données ayant un niveau de
compatibilité précédent.
WARNING
L’indicateur de suivi 139 n’est pas destiné à être activé en continu dans un environnement de production et doit être
utilisé dans le seul but d’effectuer les vérifications de validation de base de données décrites dans cet article. Par
conséquent, il doit être désactivé à l’aide du suivi dbcc (139, -1) dans la même session, une fois les vérifications de
validation terminées.
L’indicateur de suivi 139 est pris en charge à SQL Server 2016 CU3 et SQL Server 2016 SP1.
Pour mettre à niveau le niveau de compatibilité, suivez les étapes suivantes :
1. Effectuez la validation pour identifier les structures persistantes affectées :
a. Activez l’indicateur de suivi 139 en exécutant DBCC TRACEON(139, -1).
b. Exécutez les commandes DBCC CHECKDB/TABLE et CHECKCONSTRAINTS.
c. Désactivez l’indicateur de suivi 139 en exécutant DBCC TRACEOFF(139, -1).
2. Modifiez le niveau de compatibilité des bases de données sur 130 (pour SQL Server 2016) ou 140 (pour SQL
Server 2017 et Azure SQL Database).
3. Reconstruire toutes les structures que vous avez identifiées à l’étape 1.
NOTE
Les indicateurs de suivi Azure SQL Database les indicateurs de suivi de paramètres ne sont pas pris en charge dans Azure
SQL Database. Par conséquent, vous devez modifier le niveau de compatibilité avant d’effectuer la validation :
L’Annexe A contient une liste détaillée de toutes les améliorations apportées à la précision et fournit un
exemple pour chacune d’elles.
L’annexe B contient un processus détaillé pas à pas pour valider et reconstruire les structures affectées.
Les annexes C et D contiennent des scripts pour aider à identifier les objets potentiellement affectés
dans la base de données. Par conséquent, vous pouvez étendue vos validations et générer des scripts
correspondants pour exécuter les vérifications. Pour déterminer plus facilement si des structures
persistantes dans vos bases de données sont affectées par les améliorations de précision apportées au
niveau de compatibilité 130, exécutez le script de l’Annexe D afin de générer les vérifications de validation
correctes, puis exécutez ce script pour la validation.
RÉSULTAT P O UR RÉSULTAT P O UR
L E N IVEA U DE L E N IVEA U DE
EXEM P L E DE C O M PAT IB IL IT É C O M PAT IB IL IT É
DE À REM P L A C EZ REQ UÊT E < 130 = 130
RÉSULTAT P O UR RÉSULTAT P O UR
L E N IVEA U DE L E N IVEA U DE
EXEM P L E DE C O M PAT IB IL IT É C O M PAT IB IL IT É
DE À REM P L A C EZ REQ UÊT E < 130 = 130
Opération
RÉSULTAT P O UR L E RÉSULTAT P O UR L E
EXEM P L E DE N IVEA U DE N IVEA U DE
O P ÉRAT IO N REM P L A C EZ REQ UÊT E C O M PAT IB IL IT É <130 C O M PAT IB IL IT É 130
DATEDIFF qui utilise La valeur n’est plus DECLARE @d1 3000 3333
l’option tronquée au niveau DATETIME = '1900-
microsecondes ou de la milliseconde 01-01 00:00:00.003'
nanosecondes, avec avant la conversion DECLARE @d2
le type de données en micro ou DATETIME = '1900-
date/heure. nanosecondes. 01-01 00:00:00.007'
SELECT
DATEDIFF(MICROSEC
OND, @d1 , @d2 )
USE [database_name]
GO
GO
DBCC CHECKCONSTRAINTS
GO
GO
L’utilisation de l’indicateur de suivi permet de s’assurer que les vérifications sont effectuées à l’aide de la logique
de précision et de conversion améliorée, qui est dans le niveau de compatibilité 130, forçant la sémantique de
conversion correcte même lorsque le niveau de compatibilité de la base de données est inférieur.
Si l’instruction CHECKCONSTRAINTS est terminée et ne retourne pas de jeu de résultats, aucune action
supplémentaire n’est nécessaire.
Si l’instruction retourne un jeu de résultats, chaque ligne des résultats indique une violation d’une contrainte et
inclut également les valeurs qui enfreignent la contrainte.
Enregistrez les noms des tables et des contraintes, ainsi que les valeurs à l’origine de la violation (colonne «
Where » dans le jeu de résultats).
L’exemple suivant montre un tableau avec une contrainte CHECK et une seule ligne qui satisfait à la contrainte
sous des niveaux de compatibilité inférieurs, mais qui enfreint la contrainte sous le niveau de compatibilité 130.
GO
c2 datetime,
c3 datetime,
c4 int,
GO
(
convert(datetime, '1900-01-01 00:00:00.997'),
GO
GO
DBCC CHECKCONSTRAINTS
GO
GO
Ce résultat indique que la contrainte [chk1] est enfreinte pour la combinaison de valeurs de colonnes dans le «
Where ».
DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS
DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS valide toutes les structures persistantes dans la base
de données. Il s’agit de l’option la plus pratique, car une instruction unique valide toutes les structures de la base
de données. Toutefois, cette option n’est pas adaptée aux bases de données de grande taille en raison de
l’utilisation prévue de l’instruction.
Utilisez le script suivant pour valider la base de données entière :
USE [database_name]
GO
GO
GO
GO
L’utilisation de l’indicateur de suivi permet de s’assurer que les vérifications sont effectuées à l’aide de la logique
de précision et de conversion améliorée, qui est dans le niveau de compatibilité 130, forçant la sémantique de
conversion correcte même lorsque le niveau de compatibilité de la base de données est inférieur.
Si l’instruction CHECKDB est terminée correctement, aucune action supplémentaire n’est nécessaire.
Si l’instruction est terminée par des erreurs, suivez les étapes suivantes :
1. Enregistrez les résultats de l’exécution de l’instruction DBCC, trouvée dans le volet des messages de SQL
Server Management Studio (SSMS), dans un fichier.
2. Vérifier que l’une des erreurs signalées est liée à des structures persistantes
Tableau 1 : Structures persistantes et messages d’erreur correspondants pour les incohérences
Colonnes calculées persistantes Msg 2537, Level 16 Table error: object ID d'<object_id>'objet et ID d’index
ID <object_id> , index ID <index_id> , <index_id>
. Échec de la vérification
d’enregistrement (colonne calculée
valide). Les valeurs sont .
T Y P E DE ST RUC T URE A F F EC T É M ESSA GES D’ERREUR O B SERVÉS P REN EZ N OT E DE
Index référencing des colonnes Erreur de tableau Msg 8951 : table ID d'<object_id>'objet et ID d’index
calculées dans la clé ou colonnes '<table_name>' (ID <object_id>). La <index_id>
incluses Index filtrés ligne de données n’a pas de ligne
d’index correspondante dans l’index «
<index_name> » (ID <index_id>) Et/ou
erreur de tableau Msg 8952 : table '
<table_name> ' (ID <table_name>). La
ligne d’index dans l’index '' (ID
<index_id>) ne correspond à aucune
ligne de données. En outre, il peut y
avoir des erreurs secondaires 8955
et/ou 8956. Il contient des détails sur
les lignes exactes impactées. Ceux-ci
peuvent être ignorés pour cet exercice.
Une fois que vous avez terminé la validation au niveau de la base de données, allez à l’étape 3.
Validation au niveau de l’objet
Pour les bases de données plus volumineuses, il est utile de valider les structures et les contraintes d’une table
ou d’une vue à la fois pour réduire la taille des fenêtres de maintenance ou pour limiter les contrôles logiques
étendus uniquement aux objets potentiellement affectés.
Utilisez les requêtes de la section Annexe C pour identifier les tableaux potentiellement affectés. Le script de la
section Annexe D peut être utilisé pour générer des contraintes CHECKTABLE et CHECKCONSTRAINTS
basées sur les requêtes répertoriées dans la section Annexe C.
DBCC CHECKCONSTRAINTS
Pour valider les contraintes liées à une seule table ou vue, utilisez le script suivant :
USE [database_name]
GO
GO
DBCC CHECKCONSTRAINTS()
GO
GO
L’utilisation de l’indicateur de suivi permet de s’assurer que les vérifications sont effectuées à l’aide de la logique
de précision et de conversion améliorée, qui est dans le niveau de compatibilité 130, forçant la sémantique
améliorée même lorsque le niveau de compatibilité de la base de données est inférieur.
Si l’instruction CHECKCONSTRAINTS est terminée et ne retourne pas de jeu de résultats, aucune action
supplémentaire n’est nécessaire.
Si l’instruction retourne un jeu de résultats, chaque ligne des résultats indique une violation d’une contrainte et
fournit également les valeurs qui enfreignent la contrainte.
Enregistrez les noms des tables et des contraintes, ainsi que les valeurs à l’origine de la violation (colonne
Where dans le jeu de résultats).
DBCC CHECKTABLE WITH EXTENDED_LOGICAL_CHECKS
Pour valider les structures persistantes liées à une seule table ou vue, utilisez le script suivant :
USE [database_name]
GO
GO
GO
GO
Si l’instruction CHECKTABLE est terminée correctement, aucune action supplémentaire n’est nécessaire.
Si l’instruction est terminée par des erreurs, suivez les étapes suivantes :
1. Enregistrez les résultats de l’exécution de l’instruction DBCC, trouvée dans le volet des messages SSMS, dans
un fichier.
2. Vérifiez que les erreurs signalées sont liées à des structures persistantes, comme indiqué dans le tableau 1.
Une fois que vous avez terminé la validation au niveau du tableau, allez à l’étape 3.
Étape 3 : Mise à niveau vers le niveau de compatibilité 130
Si le niveau de compatibilité de la base de données est déjà de 130, vous pouvez ignorer cette étape.
Le niveau de compatibilité de la base de données peut être modifié en 130 à l’aide du script suivant :
USE [database_name]
GO
GO
NOTE
Étant donné que des modifications sont apportées à l’optimiseur de requête sous le niveau de compatibilité 130, nous
vous recommandons d’activer le magasin de requêtes avant de modifier le niveau de compatibilité. Pour plus
d’informations, voir la section Conserver la stabilité des performances lors de la mise à niveau vers des SQL Server plus
nouvelles dans les scénarios d’utilisation du magasin de requêtes.
Étape 4 : Mettre à jour les structures persistantes
Si aucune incohérence n’a été trouvée lors de la validation effectuée à l’étape 2, vous avez terminé la mise à
niveau et pouvez ignorer cette étape. Si des incohérences ont été trouvées à l’étape 2, des actions
supplémentaires sont requises pour supprimer les incohérences de la base de données. Les actions requises
dépendent du type de structure concerné.
IMPORTANT
Ne faites les actions de réparation de cette étape qu’une fois le niveau de compatibilité de base de données passé à 130.
Pour inspecter les lignes de tableau affectées, vous pouvez utiliser les informations Where précédemment
renvoyées par l’instruction DBCC CHECKCONSTRAINTS :
SELECT *
FROM [schema_name].[table_name]
WHERE Where_clause
Vous devez mettre à jour les lignes affectées ou modifier la définition de contrainte pour vous assurer que la
contrainte n’est pas violée.
Mise à jour des données de table
Il n’existe aucune règle en dur indiquant comment les données doivent être mises à jour. En règle générale, pour
chaque instruction Where différente renvoyée par DBCC CHECKCONSTRAINTS, vous exécutez l’instruction de
mise à jour suivante :
WHERE Where_clause
Prenons l’exemple de tableau suivant avec une contrainte et une ligne qui ne respecte pas la contrainte dans le
niveau de compatibilité 130 :
ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL=120
go
c2 datetime,
c3 datetime,
c4 int,
GO
GO
Dans cet exemple, la contrainte est simple : la colonne c4 doit être égale à une expression impliquant c2 et c3.
Pour mettre à jour le tableau, affectez cette valeur à c4 :
GO
WHERE [c2] = '1900-01-01 00:00:00.997' AND [c3] = '1900-01-01 00:00:01.000' AND [c4] = '3'
GO
Notez que la clause WHERE utilisée dans l’instruction de mise à jour correspond aux informations Where
renvoyées par DBCC CHECKCONSTRAINTS .
Mise à jour de la contrainte CHECK
Pour modifier une contrainte CHECK, vous devez la déposer et la créer à nouveau. Nous vous recommandons
de faire les deux dans la même transaction, juste au cas où il existe des problèmes avec la définition de
contrainte mise à jour. Vous pouvez utiliser le transact-SQL :
BEGIN TRANSACTION
CHECK (new_constraint_definition)
COMMIT
GO
BEGIN TRANSACTION
COMMIT
GO
3. Exécutez une instruction UPDATE impliquant l’une des colonnes référencés pour déclencher une mise à
jour de la colonne calculée :
L’instruction suivante déclenche une mise à jour de la colonne référencé par la colonne calculée et
déclenche également une mise à jour de la colonne calculée.
UPDATE [schema_name].[table_name]
SET referenced_column_name=ISNULL(referenced_column_name, referenced_column_name)
L’expression ISNULL dans l’instruction est conçue de telle sorte que la valeur de la colonne
d’origine ne soit pas modifiée, tout en s’assure que la colonne calculée est mise à jour à l’aide de la
logique d’évaluation des expressions du niveau de compatibilité DB 130.
Sachez que pour les très grandes tables, vous ne souhaitez peut-être pas mettre à jour toutes les
lignes d’une seule transaction. Dans ce cas, vous pouvez exécuter la mise à jour par lots en
ajoutant une clause WHERE à l’instruction update qui identifie une plage de lignes ; basée sur la clé
primaire, par exemple .
4. Identifiez les index qui font référence à la colonne calculée.
Cette requête identifie les index qui font référence à la colonne calculée persistante. Tout index de ce type doit
être reconstruit. Pour ce faire, suivez les étapes de la section suivante.
Index, index filtrés et vues indexées
Les incohérences dans les index correspondent aux erreurs 8951 et 8952 (pour les tables) ou 8907 et 8908
(pour les affichages) dans la sortie DBCC CHECK* de l’étape 2.
Pour réparer ces incohérences, exécutez DBCC CHECKTABLE avec REPAIR_REBUILD. Cela répare les structures
d’index sans perte de données. Toutefois, la base de données doit être en mode utilisateur unique et n’est donc
pas disponible pour les autres utilisateurs pendant la réparation.
Vous pouvez également reconstruire manuellement les index affectés. Cette option doit être utilisée si la charge
de travail ne peut pas être mise hors connexion, car la reconstruction d’index peut être effectuée en tant
qu’opération EN LIGNE (dans les éditions prises en charge de SQL Server).
Reconstruire les index
Si la définition de la base de données en mode utilisateur unique n’est pas une option, vous pouvez reconstruire
individuellement les index à l’aide de ALTER INDEX REBUILD, pour chaque index identifié à l’étape 2.
Utilisez la requête suivante pour obtenir les noms de table et d’index pour une object_id données index_id.
NOTE
Si vous utilisez des éditions Standard, Web ou Express, la build d’index en ligne n’est pas prise en charge. Par conséquent,
l’option WITH (ONLINE=ON) doit être supprimée de l’instruction ALTER INDEX.
GO
c2 datetime,
c3 float
GO
GO
WHERE (c2=-0.00138344907407406)
GO
ALTER DATABASE CURRENT SET COMPATIBILITY_LEVEL=130GOALTER INDEX ix_1 ON [dbo].[table2] REBUILD WITH
(ONLINE=ON)
GO
Si vous avez des plans de maintenance réguliers, nous vous recommandons d’inclure cette reconstruction
d’index dans le cadre de votre maintenance programmée.
Réparer à l’aide du DBCC
Pour chaque (object_id) liées à un index avec des incohérences que vous avez notées à l’étape 2, exécutez le
script suivant pour effectuer la réparation. Ce script définit la base de données en mode utilisateur unique pour
l’opération de réparation. Dans le pire des cas, la réparation effectue une reconstruction complète de l’index.
USE [database_name]
GO
GO
GO
GO
-- if the data type is numeric, integer, or money, the only cases that warrent additional checks
-- with DBCC is if the view definition contains a float or datetime value, or a conversion to such value
s.definition
( 59 --real
, 62 --float
, 58 --smalldatetime
, 61 --datetime
, 60 --money
, 122 --smallmoney
, 106 --decimal
, 108 --numeric
, 56 --int
, 48 --tinyint
, 52 -- smallint
, 41 --time
, 127 --bigint
-- if the data type is numeric, integer, or money, the only cases that warrent additional checks
-- with DBCC is if the column definition contains a float or datetime value, or a conversion to such value
c1.definition
AND (c2.system_type_id IN
( 59 --real
, 62 --float
, 58 --smalldatetime
, 61 --datetime
, 60 --money
, 122 --smallmoney
, 106 --decimal
, 108 --numeric
, 56 --int
, 48 --tinyint
, 52 -- smallint
, 41 --time
, 127 --bigint
AND (
c1.is_persisted=1
)
Index filtrés
La requête suivante renvoie toutes les tables avec index filtrés qui font référence à des colonnes dans la
condition de filtre qui ont des types de données affectés :
-- if the data type is numeric, integer, or money, the only cases that warrent additional checks
-- with DBCC is where the filter condition contains a float or datetime value
, 62 --float
, 58 --smalldatetime
, 61 --datetime
, 60 --money
, 122 --smallmoney
, 106 --decimal
, 108 --numeric
, 56 --int
, 48 --tinyint
, 52 -- smallint
, 41 --time
, 127 --bigint
( 59 --real
, 62 --float
, 58 --smalldatetime
, 61 --datetime
, 60 --money
, 122 --smallmoney
, 106 --decimal
, 108 --numeric
, 56 --int
, 48 --tinyint
, 52 -- smallint
, 41 --time
, 127 --bigint)
UNION
UNION
--indexed views
SELECT DISTINCT QUOTENAME(sed.referenced_schema_name) + N'.' + QUOTENAME(sed.referenced_entity_name) AS
'object_for_checktable'
FROM sys.sql_expression_dependencies AS sed
INNER JOIN sys.indexes AS i ON sed.referencing_id = i.object_id AND sed.referencing_minor_id = i.index_id
INNER JOIN sys.columns AS c ON sed.referenced_id = c.object_id AND sed.referenced_minor_id = c.column_id
INNER JOIN sys.types AS t ON c.system_type_id = t.system_type_id
WHERE referencing_class = 7 AND referenced_class = 1 AND i.has_filter = 1
AND c.system_type_id IN (
59 --real
, 62 --float
, 58 --smalldatetime
, 61 --datetime
, 60 --money
, 122 --smallmoney
, 106 --decimal
, 108 --numeric
, 56 --int
, 48 --tinyint
, 52 -- smallint
, 41 --time
, 127 --bigint
)) AS a
PRINT @sql;
Cet article décrit différentes méthodes que vous pouvez utiliser pour itérer dans un jeu de résultats à l’aide de
Transact-SQL dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 111401
Résumé
Cet article décrit différentes méthodes que vous pouvez utiliser pour simuler une logique FETCH-NEXT de types
de curseur dans une procédure stockée, un déclencheur ou un lot SQL transaction.
set rowcount 0
select * into #mytemp from authors
set rowcount 1
begin
set rowcount 0
select * from #mytemp where au_id = @au_id
delete #mytemp where au_id = @au_id
set rowcount 1
select @au_id = au_id from #mytemp<BR/>
end
set rowcount 0
Une deuxième méthode consiste à utiliser la fonction pour parcourir un tableau une ligne min à la fois. Cette
méthode capture les nouvelles lignes qui ont été ajoutées après le début de l’exécution de la procédure stockée,
à condition que la nouvelle ligne possède un identificateur unique supérieur à la ligne actuelle en cours de
traitement dans la requête. Par exemple :
/********** example 2 **********/
declare @au_id char( 11 )
begin
select * from authors where au_id = @au_id
select @au_id = min( au_id ) from authors where au_id > @au_id
end
NOTE
Les exemples 1 et 2 supposent qu’il existe un identificateur unique pour chaque ligne du tableau source. Dans certains
cas, il n’existe aucun identificateur unique. Si c’est le cas, vous pouvez modifier la méthode de table temp pour utiliser une
colonne de clé nouvellement créée. Par exemple :
set rowcount 1
update #mytemp set mykey = 1
Références
ROW_NUMBER (Transact-SQL)
Stratégie de prise en charge des assemblys .NET
Framework non testés dans l’environnement
hébergé SQL Server CLR
15/08/2021 • 3 minutes to read
Cet article décrit la stratégie de prise en charge des assemblys Microsoft .NET Framework non testés dans
l’environnement hébergé par le CLR (Common Language Runtime) .NET Framework dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 922672
WARNING
L’assembly AssemblyName .Net Frameworks que vous enregistrez n’est pas entièrement testé dans SQL
Server’environnement hébergé.
Le message signifie que l’assembly .NET Framework n’a pas été testé dans l SQL Server de l’environnement
hébergé par le CLR. Par conséquent, l’assembly n’est pas pris en charge dans SQL Server environnement
hébergé par le CLR.
Un assembly .NET Framework non testé peut quitter son processus hôte lorsqu’une condition critique telle
qu’une condition de faible mémoire se produit. Vous pouvez utiliser l’assembly dans l SQL Server de
l’environnement hébergé par le CLR à vos propres risques. Toutefois, SQL Server services de support client
(CSS) ne vous aideront pas à utiliser et à résoudre les problèmes associés à un assembly de .NET Framework
non pris en charge. Si CSS détermine qu’un assembly particulier non pris en SQL Server des problèmes, vous
pouvez être invité à arrêter d’utiliser l’assembly. En outre, vous pouvez être invité à arrêter temporairement
d’utiliser l’assembly lorsque CSS dépannera un problème SQL Server si nécessaire.
Inscription de l’assembly
Il existe deux types d’assemblys .NET : pure et mixte. Les assemblys .NET purs contiennent uniquement des
instructions MSIL. Les assemblys mixtes contiennent des instructions d’ordinateur nonmanagées et des
instructions MSIL. Les assemblys mixtes sont généralement compilés dans un compilateur C++ à l’aide du
commutateur « clr » et contiennent également des instructions d’ordinateur conçues à partir du code C++ natif.
Lorsque vous utilisez un assembly .NET Framework qui ne figure pas dans la liste prise en charge, vous devez
utiliser l’instruction CREATE ASSEMBLY pour inscrire l’assembly et les assemblys référencés dans la base de
données SQL Server. L SQL Server CREATE ASSEMBLY permet uniquement l’enregistrement .NET Framework
assemblys pures. Si l’assembly ou tout assembly référencé n’est pas un assembly .NET Framework pur (et, par
conséquent, est un assembly mixte), vous recevez le message d’erreur suivant :
Dans ce cas, vous ne pouvez pas utiliser l’assembly .NET Framework avec SQL CLR, sauf si l’assembly se trouve
dans la liste prise en charge documentée dans cet article. En outre, un assembly .NET Framework peut changer
d’assembly pur à un assembly mixte entre les versions. Si vous utilisez un assembly qui ne figure pas dans la
liste prise en charge, il se peut que l’assembly fonctionne dans une version du .NET Framework mais pas dans
une autre. Cette restriction ne s’applique pas aux assemblys de la liste prise en charge, car ces assemblys ne
doivent pas être enregistrés à l’aide de l’instruction CREATE ASSEMBLY.
En outre, vous devez gérer ces assemblys après avoir mis à niveau .NET Framework. Message d’erreur lorsque
vous exécutez une routine CLR ou utilisez un assembly dans SQL Server :
Assembly in host store has a different signature than assembly in GAC. (Exception de HRESULT :
0x80131050)
Cet article vous aide à résoudre le problème qui se produit lorsqu’une instruction contient une ou plusieurs
clauses définies pour une colonne Unicode et qui permettent de taper la colonne Unicode dans un autre IN Or
classement collate binaire.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 3053639
Symptômes
Vous avez une table dans une base SQL Server de données dans laquelle les conditions suivantes sont vraies :
Le tableau contient une colonne Unicode. Par exemple, le tableau possède une colonne nchar(5).
Le classement de la colonne Unicode est Latin1_General_BIN .
La même colonne Unicode fait partie d’un index. Toutefois, les instructions T-SQL qui sont exécutés sur ce
tableau peuvent renvoyer des résultats incorrects. Ce problème se produit lorsque les conditions suivantes
sont remplies :
L’instruction T-SQL contient une ou plusieurs clauses définies IN pour la même colonne Or Unicode.
L’instruction T-SQL contient pour taper la colonne collate Unicode dans un autre classement binaire.
Exemple de requête :
GO
select * from Table_1 where Col1 = 1 and Col2 = '1' and Col3 collate Chinese_PRC_BIN IN (N'1' ,N'2') --
This statement using "IN" and "collate" might give incorrect results.
go
select * from Table_1 where Col1 = 1 and Col2 = '1' and (Col3 collate Chinese_PRC_BIN = N'1' or Col3 collate
Chinese_PRC_BIN = N'2') -- This statement using "OR" and "collate" might give incorrect results.
go
Solution de contournement
Pour contourner ce problème, assurez-vous que la colonne Unicode (Col3 dans l’exemple de requête de la
section Symptômes) répond à l’une des conditions suivantes :
Est du type de données char(5) ou nvarchar(5).
Est défini à l’aide du même classement pour lequel le classement est souhaité (sachez que ce n’est qu’un
exemple ; d’autres Chinese_PROC_BIN Chinese_PROC_BIN classements binaires s’appliquent également).
Est d’un classement autre que Latin1_General_BIN .
Est compilé sur le classement CI. Par exemple : collate Chinese_PRC_90_CI_AI IN (N'1 ', N'2 ') .
Est comparé à une constante qui correspond à la longueur de colonne. Par exemple,
collate Chinese_PRC_BIN IN (N'1 ', N'2 ') .
Ne fait pas partie de l’index, ou une analyse de tableau est forcée à l’aide de l’indicateur FORCESCAN de
tableau.
Fonctions telles que RTRIM et utilisées pour forcer une analyse de LTRIM tableau.
Plus d’informations
Pour reproduire ce problème, exécutez le script suivant :
CREATE DATABASE Test_DB
GO
use Test_DB
go
CONSTRAINT [PK__Table_1] PRIMARY KEY CLUSTERED -- Primary Key on all the 3 columns
([Col1] ASC,
[Col2] ASC,
[Col3] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
declare @x as int
declare @y as int
set @x=1
set @y=1
while (@x<=2)
begin
while (@y<=1000)
begin
insert into Table_1 values (@x,@y,@y)
set @y=@y+1
end
set @x=@x +1
end
go
select * from Table_1 where Col1 = 1 and Col2 = '1' and Col3 collate Chinese_PRC_BIN = N'1' -- Expected
output of one row.
go
select * from Table_1 where Col1 = 1 and Col2 = '1' and Col3 collate Chinese_PRC_BIN in (N'1' ,N'2') -- No
rows returned when output for Col3= N'1' is expected.
go
select * from Table_1 where Col1 = 1 and Col2 = '1' and (Col3 collate Chinese_PRC_BIN = N'1' or Col3 collate
Chinese_PRC_BIN = N'2') -- No rows returned when output for Col3= N'1' is expected.
go
S’applique à
SQL Server 2014 Business Intelligence
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Express
SQL Server 2014 Standard
SQL Server Web 2014
SQL Server 2012 Business Intelligence
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Parallel Data Warehouse
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server 2008 Developer
SQL Server 2008 Enterprise
SQL Server 2008 Express
SQL Server 2008 Standard
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2005 Developer Edition
SQL Server 2005 Enterprise Edition
SQL Server 2005 Express Edition
SQL Server 2005 Édition Standard
SQL Server 2005 Standard X64 Edition
SQL Server 2005 Workgroup Edition
Supprimer des lignes en double d’une table SQL
Server à l’aide d’un script
13/08/2021 • 2 minutes to read
Cet article fournit un script que vous pouvez utiliser pour supprimer des lignes en double d’un tableau dans
Microsoft SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 70956
Résumé
Il existe deux méthodes courantes que vous pouvez utiliser pour supprimer des enregistrements en double
d’SQL Server table. Pour la démonstration, commencez par créer un exemple de table et de données :
Ensuite, essayez les méthodes suivantes pour supprimer les lignes en double du tableau.
Méthode 1
Exécutez le script suivant :
SELECT DISTINCT *
INTO duplicate_table
FROM original_table
GROUP BY key_value
HAVING COUNT(key_value) > 1
DELETE original_table
WHERE key_value
IN (SELECT key_value
FROM duplicate_table)
INSERT original_table
SELECT *
FROM duplicate_table
DELETE T
FROM
(
SELECT *
, DupRank = ROW_NUMBER() OVER (
PARTITION BY key_value
ORDER BY (SELECT NULL)
)
FROM original_table
) AS T
WHERE DupRank > 1
Plus d’informations
La méthode 2 est simple et efficace pour les raisons suivantes :
Il n’est pas nécessaire de copier temporairement les enregistrements en double dans une autre table.
Il n’est pas nécessaire de joindre la table d’origine à elle-même (par exemple, à l’aide d’une sous-demande
qui renvoie tous les enregistrements en double à l’aide d’une combinaison de GROUP BY et HAVING).
Pour de meilleures performances, vous devez avoir dans la table un index correspondant qui utilise la clé
d’index et inclut toutes les colonnes de tri que vous avez peut-être utilisées dans key_value l’expression
ORDER BY.
Toutefois, cette méthode ne fonctionne pas dans les versions obsolètes de SQL Server qui ne prend pas en
charge la fonction ROW_NUMBER. Dans ce cas, vous devez utiliser la méthode 1 ou une méthode similaire à la
place.
Faire pivoter un tableau dans SQL Server
14/08/2021 • 2 minutes to read
Cet article explique comment faire pivoter un tableau dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 175574
Résumé
Cet article explique comment faire pivoter un SQL Server tableau. Supposons que vous avez une table nommée
QTRSALES . Le tableau possède les colonnes et les données YEAR QUARTER au format AMOUNT suivant.
NOTE
Il n’existe aucune ligne pour le quatrième trimestre de 1996 :
Y EA R T RIM EST RE M O N TA N T
1995 1 125,000.90
1995 2 136,000.75
1995 3 212,000.34
1995 4 328,000.82
1996 3 728,000.35
1996 2 422,000.13
1996 1 328,000.82
À présent, supposons que vous vouliez faire pivoter la table afin de pouvoir voir les données au format suivant :
Y EA R Q1 Q2 Q3 Q4
La requête que vous utiliseriez pour faire pivoter la table se trouve dans la section suivante de cet article.
year=q.year,
SUM(CASE quarter WHEN 1 THEN amount ELSE 0 END) as Q1,
SUM(CASE quarter WHEN 2 THEN amount ELSE 0 END) as Q2,
SUM(CASE quarter WHEN 3 THEN amount ELSE 0 END) as Q3,
SUM(CASE quarter WHEN 4 THEN amount ELSE 0 END) as Q4
FROM qtrsales q
GROUP BY year
Référence
FROM - Utilisation de PIVOT et UNPIVOT
Vous pouvez faire face à des problèmes de délai
d’SQL des objets CLR via Visual Studio
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème de délai d’SQL lors du déploiement d’objets CLR Visual Studio.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2011805
Symptômes
Lorsque vous déployez SQL objets CLR de Visual Studio à SQL Server, vous pouvez être en mesure de faire face
à diverses erreurs similaires à ce qui suit :
Message d’erreur 1 :
Message d’erreur 2 :
Toutefois, si vous déployez les mêmes objets CLR à l’aide de la commande SQL Server Management Studio vous
CREATE ASSEMBLY n’avez aucun problème.
Cause
Le problème se produit lorsque les objets CLR SQL sont si importants qu’il faut beaucoup de temps pour les
déployer sur SQL Server. La valeur de délai d’avance par défaut pour les connexions est de 15 secondes et de 30
secondes pour les requêtes, respectivement. Lors du déploiement d’assemblys de grande taille, l’instruction
exécutée sur le système SQL Server backend peut prendre plus de 30 secondes pour renvoyer l’erreur décrite
dans la CREATE ASSEMBLY section Symptômes.
Résolution
Augmentez les valeurs de délai d’Visual Studio requête et de connexion à l’aide des procédures documentées ci-
dessous.
Modification du délai d’out de la requête
1. In Visual Studio IDE, navigate to Tools -> Options -> Database Tools -> Quer y and View Designers .
2. Vous pouvez soit décocher l’option Annuler la requête longue, soit modifier la valeur d’Annuler après
l’option **** en une valeur supérieure.
Modification du délai de connexion
1. Dans Visual Studio IDE, activez l’Explorateur de serveurs en naviguant jusqu’à -> l’Explorateur de
ser veurs.
2. Dans l’Explorateur de serveurs, cliquez avec le bouton droit sur la connexion SQL Server où les objets
CLR sont déployés et choisissez Modifier la connexion.
3. Cliquez sur le bouton Avancé dans la fenêtre Modifier la connexion.
4. Dans la fenêtre Propriétés avancées, modifiez la valeur Connecter délai d’Connecter section
Initialisation à une valeur supérieure.
L’utilisation de procédures stockées étendues ou
SP_OA procédures stockées pour charger le CLR
dans SQL Server n’est pas prise en charge
13/08/2021 • 2 minutes to read
Résumé
SQL Server 2005 et versions ultérieures hébergent le CLR (Common Language Runtime) et des procédures,
fonctions, déclencheurs, types et agrégats de prise en charge écrits dans des langages CLR. Dans ces versions,
vous ne pouvez pas charger CLR à l’aide de procédures stockées étendues ou sp_OA de procédures stockées.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 322884
Plus d’informations
L.NET Framework assembly fournit un environnement robuste pour l’facturation d’assemblys à
System.Runtime.InteropServices partir de code nonmanaté. Toutefois, il existe plusieurs dissensions techniques
entre les implémentations internes du CLR et SQL Server :
Threading
Pour améliorer les performances, le CLR implémente thread local Stockage.
En outre, le CLR utilise uniquement la planification basée sur les threads et ne prend pas en charge la
planification en mode fibre. Toutefois, SQL Server peut utiliser la planification en mode fibre. Pour configurer
cette propriété, exécutez la procédure stockée à l’aide de sp_configure l’option de regroupement léger. Pour
plus d’informations sur cette rubrique, examinez l’option de configurationdu serveur de regroupement léger.
Mémoire
L’utilisation de procédures stockées étendues et d’OLE Automation s’exécutent dans l’espace d’adressare de la
mémoire virtuelle de la SQL Server. La mémoire SQL Server par défaut n’est qu’une fraction de la mémoire que
les SQL Server peuvent potentiellement utiliser et le CLR est en concurrence avec les implémentations
existantes pour ces ressources mémoire.
Interopérabilité COM
Cette section traite spécifiquement de l’utilisation d’OLE Automation dans SQL Server et s’applique aux objets
COM in-process et out-of-process. Assembly meta data for function interfaces implements a typed mechanism
for any invocations.
Dans le cadre de cette conception, le wrapper COM Callable pour un assembly doit utiliser un mécanisme
externe de mappage d’un ClassID à un membre d’une classe gérée. En raison de ce mappage explicite, il n’est
pas possible d’établir une liste racine d’interfaces disponibles du point de vue nonmanage.
La procédure stockée étendue utilise l’interface pour déterminer la prise en charge sp_oaCreate
IUnknown::QueryInterface de l’objet pour une interface particulière. L’interopérabilité entre le CLR et le code
nonmanadé repose sur l’interface IDispatch pour implémenter les interfaces. Étant donné qu’il n’existe pas
d’équivalent à une méthode à un assembly CLR, vous ne pouvez pas créer QueryInterface une instance de
l’objet.
Erreur 9002. Le journal des transactions de la base
de données est plein en raison
AVAILABILITY_REPLICA message d’erreur SQL
Server
15/08/2021 • 6 minutes to read
Cet article vous aide à résoudre l’erreur 9002 qui se produit lorsque le journal des transactions devient grand ou
à court d’espace dans SQL Server.
Version du produit d’origine : SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012
Numéro de la ko d’origine : 2922898
Symptômes
Prenons l’exemple du scénario suivant :
Vous avez Microsoft SQL Server 2012 ou une version ultérieure installée sur un serveur.
L’instance de SQL Server est un réplica principal dans l’environnement des groupes de disponibilité
AlwaysOn.
L’option de connexion automatique pour les fichiers journaux de transactions est définie dans SQL
Server.
Dans ce scénario, le journal des transactions peut devenir important et ne plus avoir assez d’espace disque ou
dépasser l’option MaxSize définie pour le journal des transactions au niveau du réplica principal et vous recevez
un message d’erreur semblable à ce qui suit :
Erreur : 9002, Gravité : 17, État : 9. Le journal des transactions de la base de données '%.*ls' est plein en
raison de la AVAILABILITY_REPLICA'
Cause
Cela se produit lorsque les modifications consignées dans le réplica principal ne sont pas encore renforcés sur le
réplica secondaire. Pour plus d’informations sur le processus de synchronisation des données dans
l’environnement AlwaysOn, vous pouvez passer en revue :
Processus de synchronisation des données
Par exemple, exécutez la requête suivante sur le réplica principal afin de signaler le réplica avec la
première truncation_lsn et est la limite supérieure que le principal peut récupérer dans son propre
journal des transactions :
Les mesures correctives peuvent inclure, sans s’y limiter, les actions suivantes :
Assurez-vous qu’il n’y a pas de goulot d’étranglement de ressources ou de performances au niveau
du secondaire.
Assurez-vous que le thread Redo n’est pas bloqué au niveau du secondaire. Utilisez l’événement
étendu pour identifier le moment où cela se produit et sur quels objets le lock_redo_blocked thread
de redo est bloqué.
Solution de contournement
Après avoir identifié la base de données secondaire qui se produit, essayez une ou plusieurs des méthodes
suivantes pour contourner ce problème temporairement :
Sortir la base de données du groupe de disponibilité pour le secondaire en cause.
NOTE
Cette méthode entraîne la perte du scénario haute disponibilité/récupération d’urgence pour le secondaire. Vous
de devez peut-être configurer à nouveau le groupe de disponibilité à l’avenir.
NOTE
Cela empêche les utilisateurs de lire les données dans le réplica secondaire qui est la cause première du blocage.
Une fois que la file d’attente de retour à la normale a été réduite à une taille acceptable, envisagez d’activer à
nouveau la fonctionnalité.
Activez le paramètre derow automatique s’il est désactivé et s’il y a de l’espace disque disponible.
Augmentez la valeur MaxSize pour le fichier journal des transactions s’il a été atteint et s’il y a de l’espace
disque disponible.
Ajoutez un fichier journal des transactions supplémentaire si le fichier actuel a atteint la valeur système
maximale de 2 To ou si de l’espace supplémentaire est disponible sur un autre volume disponible.
Plus d’informations
Pour plus d’informations sur la raison pour laquelle un journal des transactions augmente de façon
inattendue ou devient plein dans SQL Server, voir : Troubleshoot a Full Transaction Log (SQL Server Error
9002)
Pour plus d’informations sur le problème de blocage des opérations de redoin, voir : AlwaysON -
HADRON Learning Series: lock_redo_blocked/redo worker Blocked on Secondary Replica
Pour plus d’informations AVAILABILITY_REPLICA colonnes log_reuse_wait basées sur un journal, voir :
Facteurs qui peuvent retarder la troncation des journaux
Pour plus d’informations sur sys.dm_hadr_database_replica_states l’affichage, voir :
sys.dm_hadr_database_replica_states (Transact-SQL)
Pour plus d’informations sur la surveillance et le dépannage des modifications consignées qui n’arrivent
pas et ne sont pas appliquées en temps voulu, voir : Surveiller les performances pour les groupes de
disponibilité AlwaysOn
S’applique à
SQL Server 2012 Enterprise
SQL Server 2014 Enterprise
SQL Server 2014 Business Intelligence
SQL Server 2014 Standard
SQL Server 2016 Enterprise
SQL Server 2016 Standard
SQL Server 2017 Enterprise
SQL Server 2017 Standard Windows
Résoudre les problèmes des bases de données de
disponibilité AlwaysOn dans l’état Récupération en
attente ou Suspect dans SQL Server
14/08/2021 • 12 minutes to read
Cet article décrit les erreurs et les limitations d’une base de données de disponibilité dans Microsoft SQL Server
qui est dans un état ou dans un état et comment restaurer la base de données à toutes les fonctionnalités d’un
groupe de Recovery Pending Suspect disponibilité.
Version du produit d’origine : SQL Server 2012
Numéro de la ko d’origine : 2857849
Résumé
Supposons qu’une base de données de disponibilité définie dans un groupe de disponibilité AlwaysOn passe à
un Recovery Pending ou à un état Suspect SQL Server. Si cela se produit sur le réplica principal du groupe de
disponibilité, la disponibilité de la base de données est affectée. Dans ce cas, vous ne pouvez pas accéder à la
base de données via les applications clientes. En outre, vous ne pouvez pas supprimer ou supprimer la base de
données du groupe de disponibilité.
Par exemple, supposons SQL Server est en cours d’exécution et qu’une base de données de disponibilité est
définie sur Recovery Pending l’état Suspect ou l’état. Lorsque vous interrogez les vues de gestion dynamique
(DMV) sur le réplica principal à l’aide du script SQL suivant, la base de données peut être signalée dans un état
ou dans un état comme suit NOT_HEALTHY RECOVERY_PENDING SUSPECT :
SELECT
dc.database_name,
d.synchronization_health_desc,
d.synchronization_state_desc,
d.database_state_desc
From
sys.dm_hadr_database_replica_states d
JOIN sys.availability_databases_cluster dc ON d.group_database_id = dc.group_database_id
AND d.is_local = 1
Lorsque la base de données est définie dans un groupe de disponibilité, elle ne peut pas être abandonnée ou
restaurée. Par conséquent, vous devez prendre des mesures spécifiques pour récupérer la base de données et la
remettre en production.
Plus d’informations
Le contenu suivant décrit les erreurs et les limitations d’une base de données de disponibilité qui se trouve dans
un état En attente de récupération dans différentes situations.
L’état de la base de données empêche la restauration de la base de données
Vous essayez d’exécuter le script de SQL suivant afin de restaurer la base de données qui possède le
RECOVERY paramètre :
Lorsque vous exécutez ce script, vous recevez le message d’erreur suivant, car la base de données est
définie dans un groupe de disponibilité :
Lorsque vous exécutez ce script, vous recevez le message d’erreur suivant, car la base de données est
définie dans un groupe de disponibilité :
Lorsque vous essayez d’exécuter ce script, vous recevez le message d’erreur suivant, car la base de
données de disponibilité appartient au réplica principal :
En raison de ce message d’erreur, vous pouvez être contraint de faire échouer la base de données. Une
fois la base de données échouée, le réplica propriétaire de la base de données de récupération en attente
est dans le rôle secondaire. Dans ce cas, essayez à nouveau d’exécuter le script SQL suivant afin de
supprimer la base de données du groupe de disponibilité sur le réplica secondaire :
Toutefois, vous ne pouvez toujours pas supprimer la base de données du groupe de disponibilité et vous
recevez le message d’erreur suivant, car la base de données est toujours dans l’état Récupération en
attente :
3. Exécutez le script SQL pour supprimer le réplica qui héberge la base de données endommagée du groupe
de disponibilité :
ALTER AVAILABILITY GROUP AvailabilityGroupName REMOVE REPLICA ON '<SQLServerNodeName>'
4. Résolvez tous les problèmes sur le serveur qui exécute SQL Server et qui peuvent contribuer à la
défaillance de la base de données.
5. Ajoutez de nouveau le réplica au groupe de disponibilité.
À ce stade, vous pouvez essayer de récupérer la base de données problématique. Vous pouvez également
restaurer la base de données à partir de la dernière copie de sauvegarde de bonne qualité connue.
USE master
GO
CREATE AVAILABILITY GROUP ag FOR REPLICA ON 'sqlnode1' WITH (
ENDPOINT_URL = 'tcp://sqlnode1:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL
)
2. Démarrez le Gestionnaire du cluster de failover, puis cliquez sur Rôles dans le volet gauche. Dans le volet
qui répertorie les rôles, sélectionnez le groupe de disponibilité d’origine.
3. Dans le volet du milieu inférieur sous l’onglet Ressources, cliquez avec le bouton droit sur la ressource du
groupe de disponibilité, puis cliquez sur Propriétés. Cliquez sur l’onglet Dépendances, supprimez la
dépendance à l’écoute, puis cliquez sur OK.
4. Sous les ressources, cliquez avec le bouton droit sur l’écoute, cliquez sur Autres actions, puis cliquez sur
Affecter à un autre rôle.
5. Dans la boîte de dialogue Affecter la source au rôle, sélectionnez le nouveau groupe de
disponibilité, puis cliquez sur OK.
6. Dans le volet Rôles, sélectionnez le nouveau groupe de disponibilité. Dans le volet du milieu inférieur,
sous l’onglet Ressources, vous devez maintenant voir le nouveau groupe de disponibilité et la ressource
d’écoute. Cliquez avec le bouton droit sur la nouvelle ressource de groupe de disponibilité, puis cliquez
sur Propriétés.
7. Cliquez sur l’onglet Dépendances, sélectionnez la ressource d’écoute dans la zone de dépôt, puis
cliquez sur OK.
8. Dans SQL Server Management Studio, utilisez l’Explorateur d’objets pour vous connecter à l’instance de
SQL Server qui héberge le réplica principal du nouveau groupe de disponibilité. Cliquez sur Haute
disponibilité AlwaysOn, cliquez sur le nouveau groupe de disponibilité, puis sur Écouteurs de
groupe de disponibilité. Vous devez trouver l’écoute.
9. Cliquez avec le bouton droit sur l’port d’écoute, cliquez sur Propriétés, tapez le numéro de port
approprié pour l’port d’écoute, puis cliquez sur OK.
Cela permet de s’assurer que les applications qui utilisent l’écoute peuvent toujours l’utiliser pour se connecter à
l’instance de SQL Server qui héberge les bases de données de production sans interruption. Le groupe de
disponibilité d’origine peut maintenant être complètement supprimé et re-créé. Les bases de données et les
réplicas peuvent également être ajoutés au nouveau groupe de disponibilité.
Si vous re-créez le groupe de disponibilité d’origine, vous devez réaffecter l’écoute au rôle de groupe de
disponibilité, configurer la dépendance entre la nouvelle ressource du groupe de disponibilité et l’port d’écoute,
puis réaffecter le port à l’écoute. Pour cela, procédez comme suit :
1. Démarrez le Gestionnaire du cluster de failover, puis cliquez sur Rôles dans le volet gauche. Dans le volet qui
répertorie les rôles, cliquez sur le nouveau groupe de disponibilité qui héberge l’écoute.
2. Dans le volet du milieu inférieur sous l’onglet Ressources, cliquez avec le bouton droit sur l’écoute, cliquez
sur Autres actions, puis cliquez sur Affecter à un autre rôle. Dans la boîte de dialogue, choisissez le groupe
de disponibilité re-créé, puis cliquez sur OK.
3. Dans le volet Rôles, cliquez sur le groupe de disponibilité re-créé. Dans le volet du milieu inférieur, sous
l’onglet Ressources, vous devez maintenant voir le groupe de disponibilité re-créé et la ressource d’écoute.
Cliquez avec le bouton droit sur la ressource de groupe de disponibilité re-créée, puis cliquez sur
Propriétés.
4. Cliquez sur l’onglet Dépendances, sélectionnez la ressource d’écoute dans la zone de dépôt, puis cliquez
sur OK.
5. Dans SQL Server Management Studio, utilisez l’Explorateur d’objets pour vous connecter à l’instance de SQL
Server qui héberge le réplica principal du groupe de disponibilité re-créé. Cliquez sur Haute disponibilité
AlwaysOn, cliquez sur le nouveau groupe de disponibilité, puis sur Écouteurs de groupe de
disponibilité. Vous devez trouver l’écoute.
6. Cliquez avec le bouton droit sur l’port d’écoute, cliquez sur Propriétés, tapez le numéro de port approprié
pour l’port d’écoute, puis cliquez sur OK.
Méthode 2 : associer l’écoute à une instance de cluster de SQL Server existante (SQLFCI )
Si vous hébergez votre groupe de disponibilité sur une instance SQL Server de clustering de failover (SQLFCI),
vous pouvez associer la ressource en cluster d’écoute au groupe de ressources en cluster SQLFCI pendant que
vous déposez et re-créez le groupe de disponibilité.
1. Démarrez le Gestionnaire du cluster de failover, puis cliquez sur Rôles dans le volet gauche.
2. Dans le volet qui répertorie les rôles, sélectionnez le groupe de disponibilité d’origine.
3. Dans le volet du milieu inférieur sous l’onglet Ressources, cliquez avec le bouton droit sur la ressource du
groupe de disponibilité, puis cliquez sur Propriétés.
4. Cliquez sur l’onglet Dépendances, supprimez la dépendance à l’écoute, puis cliquez sur OK.
5. Dans le volet du milieu inférieur sous l’onglet Ressources, cliquez avec le bouton droit sur l’écoute, cliquez
sur Autres actions, puis cliquez sur Affecter à un autre rôle.
6. Dans la boîte de dialogue Affecter une ressource au rôle, cliquez sur l’instance SQL Server FCI, puis
cliquez sur OK.
7. Dans le volet Rôles, sélectionnez le groupe SQLFCI. Dans le volet du milieu inférieur, sous l’onglet
Ressources, vous devez maintenant voir la nouvelle ressource d’écoute.
Cela permet de s’assurer que les applications qui utilisent l’écoute peuvent toujours l’utiliser pour se connecter à
l’instance de SQL Server qui héberge les bases de données de production sans interruption. Le groupe de
disponibilité d’origine peut maintenant être supprimé et re-créé. Les bases de données et les réplicas peuvent
également être ajoutés au nouveau groupe de disponibilité.
Une fois le groupe de disponibilité re-créé, réaffectez l’écoute au rôle de groupe de disponibilité. Ensuite,
définissez la dépendance entre la nouvelle ressource de groupe de disponibilité et l’port d’écoute, puis
réaffectez le port à l’port d’écoute :
1. Démarrez le Gestionnaire du cluster de failover, puis cliquez sur Rôles dans le volet gauche.
2. Dans le volet qui répertorie les rôles, cliquez sur le rôle SQLFCI d’origine.
3. Dans le volet du milieu inférieur, sous l’onglet Ressources, cliquez avec le bouton droit sur l’écoute, cliquez
sur Autres actions, puis cliquez sur Affecter à un autre rôle.
4. Dans la boîte de dialogue, cliquez sur le groupe de disponibilité re-créé, puis cliquez sur OK.
5. Dans le volet Rôles, sélectionnez le nouveau groupe de disponibilité.
6. Sous l’onglet Ressources, vous devriez voir le nouveau groupe de disponibilité et la ressource d’écoute.
Cliquez avec le bouton droit sur la nouvelle ressource de groupe de disponibilité, puis cliquez sur
Propriétés.
7. Cliquez sur l’onglet Dépendances, sélectionnez la ressource d’écoute dans la zone de dépôt, puis cliquez
sur OK.
8. Dans SQL Server Management Studio, utilisez l’Explorateur d’objets pour vous connecter à l’instance de SQL
Server qui héberge le réplica principal du nouveau groupe de disponibilité.
9. Cliquez sur Haute disponibilité AlwaysOn, cliquez sur le nouveau groupe de disponibilité, puis sur
Écouteurs de groupe de disponibilité. Vous devez trouver l’écoute.
10. Cliquez avec le bouton droit sur l’port d’écoute, cliquez sur Propriétés, tapez le numéro de port approprié
pour l’port d’écoute, puis cliquez sur OK.
Méthode 3 : drop the availability group, and then re -create the availability group and listener with the same
listener name
Cette méthode entraîne une petite panne pour les applications qui sont actuellement connectées, car le groupe
de disponibilité et l’écoute sont supprimés, puis re-créés :
1. Déposez le groupe de disponibilité.
NOTE
Cela permet également de déposer l’écoute.
2. Créez immédiatement un groupe de disponibilité vide qui inclut la définition de l’écoute, sur le serveur
qui héberge les bases de données de production.
Par exemple, supposons que l’écoute de votre groupe de disponibilité soit une aglisten. L’instruction
Transact-SQL suivante crée un groupe de disponibilité sans base de données principale ou secondaire,
mais elle crée également un listener nommé aglisten. Les applications peuvent utiliser ce listener pour se
connecter.
USE master
GO
CREATE AVAILABILITY GROUP ag FOR REPLICA ON 'sqlnode1' WITH (
ENDPOINT_URL = 'tcp://sqlnode1:5022',
AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,
FAILOVER_MODE = MANUAL
) LISTENER 'aglisten' (
WITH IP ((N'11.0.0.25', N'255.0.0.0')),
PORT = 1433
)
GO
Cet article vous aide à résoudre le problème qui se produit lorsque vous vous connectez à un SQL Server de
groupe de disponibilité AlwaysOn 2012 dans un environnement multi-sous-réseau.
Version du produit d’origine : SQL Server 2012 Developer, SQL Server 2012 Enterprise, SQL Server 2012
Express, SQL Server 2012 Standard, SQL Server 2012 Web, SQL Server 2012 Enterprise Core
Numéro de la ko d’origine : 2792139
Symptômes
Après avoir configuré l’listener du groupe de disponibilité pour un groupe de disponibilité AlwaysOn dans
Microsoft SQL Server 2012, il se peut que vous ne soyez pas en mesure d’envoyer un ping à l’écoute ou de vous
y connecter à partir d’une application.
Par exemple, lorsque vous essayez de vous connecter à un SQL Server à l’aide de , la connexion SQLCMD est hors
de l’attente. En outre, vous recevez un message d’erreur semblable à ce qui suit :
Sqlcmd : Erreur : Microsoft SQL Native Client : le délai d’expiration de la connexion a expiré.
NOTE
Ces symptômes sont généralement intermittents ou concernent le changement de la ressource du groupe de
disponibilité.
La capture d’écran suivante montre un exemple de ce qui se produit lorsque vous essayez d’envoyer un test ping
à l’écoute pour la disponibilité de aglisten . La capture d’écran montre également une connexion SQL Server à
l’aide de la commande lorsque vous incluez le paramètre deover SQLCMD de plusieurs sous-réseaux. -M
NOTE
Vous pouvez utiliser la commande avec le paramètre comme indiqué dans la capture d’écran pour vous SQLCMD -M
connecter à l’écoute.
Cause
Ce problème se produit parce que votre application utilise un fournisseur de données hérité qui ne prend pas en
charge le nouveau paramètre ou n’est pas configuré MultiSubnetFailover pour utiliser ce paramètre.
Ce paramètre est pris en charge dans les versions plus récentes du pilote SQLClient qui est inclus avec le .NET
Framework 4 et avec les versions ultérieures du .NET Framework, et est de nouveau porté vers le .NET
Framework 3.5.
NOTE
La commande est un outil de test de connectivité simple qui ne prend pas en PING charge le nouveau paramètre.
Résolution
Vous pouvez utiliser l’une des résolutions suivantes selon votre cas :
Pour résoudre cette situation lorsque les fournisseurs de données prendre en charge le paramètre,
ajoutez le paramètre à votre chaîne de connexion et définissez-le MultiSubNetFailover
MultiSubNetFailover sur true .
Pour résoudre cette situation lorsque vos clients hérités ne peuvent pas utiliser la propriété, vous pouvez
modifier la valeur de MultiSubnetFailover l’écoute RegisterAllProvidersIP sur 0 . Pour ce faire, exécutez
la commande suivante à partir de l Windows PowerShell interface de ligne de commande suivante :
Import-Module FailoverClusters
Get-ClusterResource <*Your listener name*>|Set-ClusterParameter RegisterAllProvidersIP 0
NOTE
Une fois la valeur définie sur 0, l’adresse IP en ligne actuelle doit être désins inscrite à partir du serveur DNS et l’adresse IP
hors connexion doit être inscrite sur le serveur DNS lorsqu’un failover se RegisterAllProvidersIP produit. Cela peut
entraîner un retard de connexion pour le prochain failover.
Plus d’informations
Lorsque vous essayez de vous connecter à un répondeur défini sur plusieurs sous-réseaux, l’opération peut
échouer si le pilote client tente de se connecter à l’aide de l’une des adresses IP hors connexion de l’écoute.
Lorsqu’un listener est créé, une adresse IP est désignée pour chaque sous-réseau unique où un réplica de
groupe de disponibilité est hébergé. Par exemple, si un listener est créé pour un groupe de disponibilité qui
possède des réplicas qui existent dans deux sous-réseaux, deux adresses IP sont définies dans l’écoute. Une
adresse est utilisée par une application qui peut se connecter à une instance de SQL Server dans le sous-réseau
1, et l’autre adresse est utilisée lorsqu’une application se connecte à une instance de SQL Server dans le sous-
réseau 2.
En arrière-plan, l’écouteur crée une ressource Windows point d’accès client de cluster. L’une de ses propriétés
RegisterAllProvidersIP est . Lorsqu’un listener est créé, il est définie sur 1 et toutes les adresses IP de l’écoute
sont enregistrées dans le serveur DNS. Cette configuration permet de réduire le temps de reconnexion pour les
clients.
Étant donné que l’enregistrement DNS contient toutes les adresses IP, un client qui tente de se connecter à
l’écoute doit savoir comment gérer cette situation. Le paramètre permet au pilote client d’essayer les connexions
en parallèle à toutes les MultiSubnetFailover adresses IP de l’écoute. Sans ce paramètre, le pilote client essaiera
de se connecter de manière séquentielle à toutes les MultiSubnetFailover adresses IP de l’écoute. Les
connexions séquentielles peuvent entraîner un long délai d’connexion ou de connexion.
NOTE
Le problème mentionné dans cet article affecte également les environnements SharePoint configurés pour utiliser le
réplica en lecture seule secondaire d’un groupe de disponibilité AlwaysOn. Pour résoudre ce problème, effectuez l’une des
actions suivantes s’applique à votre version de SharePoint :
Pour SharePoint 2007 : il s’agit d’une application héritée. Par conséquent, SharePoint 2007 ne peut pas
être configuré pour utiliser le MultiSubnetFailover paramètre. À la place, vous devez utiliser la
commande Windows PowerShell décrite dans la section Résolution.
Pour SharePoint 2010 : les packages de mise à jour cumulative sont désormais disponibles et ajoutent la
prise en charge du MultiSubnetFailover paramètre. Pour plus d’informations sur les packages de mise à
jour, consultez l’article suivant :
Une mise à jour introduit la prise en charge des fonctionnalités AlwaysOn dans SQL Server 2012
ou une version ultérieure pour .NET Framework 3.5 SP1
Description du package SharePoint Foundation 2010 (Wss-x-none.msp) : 30 octobre 2012
Références
Délais d’attente de connexion lorsque vous utilisez l’listener de groupe de disponibilité AlwaysOn avec le
paramètre MultiSubnetFailover
Utilitaire sqlcmd
Prise en charge de SqlClient pour la haute disponibilité, récupération d’urgence
Une mise à jour introduit la prise en charge des fonctionnalités AlwaysOn dans SQL Server 2012 ou une
version ultérieure pour .NET Framework 3.5 SP1
SQL Server notes de publication de 2012
Créer ou configurer un listener de groupe de disponibilité (SQL Server)
SQL Server Clustering multi-sous-réseaux (SQL Server)
Délai de connexion dans le groupe de disponibilité multi-sous-réseau
L’exécution des requêtes prend plus de temps SQL
Server réplicas secondaires Always On
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème de problèmes de performances des requêtes sur les réplicas
secondaires en lecture seule.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 4040549
Symptômes
Supposons que vous avez une base Microsoft SQL Server de données membre du groupe de disponibilité
Always On qui contient une ou plusieurs tables de grande taille qui ont un clustered row-store index. Une
requête d’une ou de plusieurs tables de grande taille se termine plus rapidement sur le réplica principal que sur
un réplica secondaire.
Notes
La requête entraîne une analyse d’index en cluster d’une grande partie de la table.
La requête utilise l’indication NOLOCK.
Les opérateurs de plan d’exécution et l’ordre des opérateurs sont identiques pour les exécutions rapides et
lentes.
L’interrogation sys.dm_db_index_physical_stats révèle une fragmentation significative de l’index en cluster.
L’unjoining the database from the Always On Availability Group improves performance on the same (former)
secondary replica instance, so that it is similar to performance on the primary replica.
Cause
Lorsque l’isolation de capture instantanée est appliquée, les conseils NOLOCK sont ignorés. La différence de
durée d’exécution entre les réplicas principaux et secondaires se produit car l’indication NOLOCK est ignorée
sur le réplica secondaire en lecture seule où l’isolation de capture instantanée est appliquée, mais pas sur le
réplica principal où l’isolation de capture instantanée n’est pas appliquée par défaut. Cela entraîne l’application
de l’ordre de clé sur le réplica secondaire pour l’analyse de l’index en cluster. Sur le réplica principal, l’indication
NOLOCK est prioritaire et affecte le comportement. Lorsque l’index en cluster est hautement fragmenté,
l’application de l’ordre de clé pour l’analyse sur le réplica secondaire en lecture seule entraîne l’émission de SQL
Server sur une seule page. Toutefois, sur le réplica principal, SQL Server analyse une unité d’allocation pour lire
plusieurs pages par demande d’IO.
Résolution
Pour résoudre ce problème, ré reconstruire l’index sur le réplica principal. Cette opération se propage ensuite
aux réplicas secondaires. Pour plus d’informations, voir Recommandations maintenance d’index avec les
groupes de disponibilité AlwaysOn.
Plus d’informations
Les informations statistiques réelles sur les opérations d’exécution et le plan d’exécution peuvent ne pas aider au
diagnostic SET STATISTICS IO lorsque ce problème se produit. Celles-ci vous donnent des informations sur le
nombre de pages lues, mais pas sur le nombre d’opérations d’IO pour lire les pages.
Au lieu de cela, recherchez d’abord la fragmentation de l’index en cluster. En outre, vous pouvez collecter les
compteurs de processus Opérations de lecture des opérations d’O de l’observateur de performances/s et
Octets/s deux fois lorsque vous exécutez la requête avec la base de données dans le groupe de disponibilité, et à
nouveau à partir de la même instance lorsque la base de données est supprimée du groupe de disponibilité et
mise en ligne. Si la fragmentation de l’index provoque des lectures sur une seule page sur le réplica secondaire,
mais pas sur le réplica principal, vous vous attendez à voir un plus grand nombre d’IO/s de lecture/s et un plus
petit nombre d’octets de lecture/s lorsque la base de données se trouve dans le groupe de disponibilité par
rapport à ce qui n’est pas le cas.
En outre, ce comportement peut se produire, mais pas de manière significative dans tous les environnements.
Par exemple, un sous-système d’entrée/heure qui peut gérer l’augmentation du niveau d’entrée/seconde avec
une latence minimale et un débit similaire peut permettre à ce problème de passer à travers le monde.
Résolution des problèmes deover automatique dans
SQL Server environnements AlwaysOn
14/08/2021 • 8 minutes to read
Cet article vous aide à résoudre les problèmes qui se produisent lors du SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2833707
Résumé
Microsoft SQL Server Les groupes de disponibilité AlwaysOn peuvent être configurés pour le failover
automatique. Par conséquent, si un problème d’état d’santé est détecté sur l’instance de SQL Server qui héberge
le réplica principal, le rôle principal peut être transitioné vers le partenaire de transfert automatique (réplica
secondaire). Toutefois, le réplica secondaire ne peut pas toujours être transitioné vers le rôle principal, mais
uniquement vers le rôle de résolution. À moins que le réplica principal ne retourne dans un état sain, il n’y a pas
de réplica dans le rôle principal. En outre, les bases de données de disponibilité sont inaccessibles.
Cet article répertorie certaines causes courantes de l’échec du failover automatique. En outre, cet article décrit
les étapes que vous pouvez effectuer pour diagnostiquer la cause de ces échecs.
L’état du réplica de disponibilité locale dans le groupe de disponibilité ' ' est devenu « RESOLVING_NORMAL
» <Group name> à « PRIMARY_PENDING »
L’état du réplica de disponibilité locale dans le groupe de disponibilité ' ' est devenu « <Group name>
PRIMARY_PENDING » à « PRIMARY_NORMAL »
NOTE
Le réplica secondaire passe d’un état RESOLVING_NORMAL à un état PRIMARY_NORMAL’état.
Cet article décrit plusieurs raisons possibles pour lesquelles le failover automatique peut échouer et comment
diagnostiquer chaque cause.
NOTE
Le paramètre -TimeSpan 15 de cette étape est utilisé dans l’hypothèse que le problème en cours de
diagnostic s’est produit au cours des 15 minutes précédentes.
Par défaut, le fichier journal est créé dans %WINDIR%\cluster\reports.
2. Ouvrez le fichier Cluster.log dans Bloc-notes pour passer en revue le journal Windows cluster.
3. Cliquez sur Modifier Bloc-notes, puis sur Rechercher, puis recherchez la chaîne « failoverCount »
à la fin du fichier. Examinez les résultats et vous devez trouver un message qui ressemble à ce qui
suit :
NOTE
Le comportement par défaut spécifie que si la ressource en cluster échoue trois fois sur une période de six
heures, elle doit rester dans l’état d’échec. Pour un groupe de disponibilité, cela signifie que le réplica est
laissé dans l’état RÉSOLUTION.
Conclusion
Après avoir analysé le journal, vous constatez que la valeur de failoverCount de 3 est supérieure à la valeur
computedFailoverThreshold de 2. Par conséquent, Windows cluster de disponibilité ne peut pas terminer
l’opération deover de la ressource du groupe de disponibilité pour le partenaire deover.
Résolution
Pour résoudre ce problème, augmentez le nombre maximal d’échecs dans la valeur de période spécifiée.
NOTE
L’augmentation de cette valeur risque de ne pas résoudre le problème. Il peut y avoir un problème plus critique qui
entraîne l’échec du groupe de disponibilité plusieurs fois sur une courte période, qui est de 15 minutes par défaut.
L’augmentation de cette valeur peut uniquement provoquer l’échec du groupe de disponibilité plus de fois avant de rester
dans un état d’échec. Nous vous recommandons de faire un effort de dépannage agressif pour déterminer pourquoi le
changement automatique se produit toujours.
2. Ouvrez le fichier Cluster.log dans Bloc-notes pour passer en revue le journal Windows cluster.
3. Vous pouvez trouver des messages d’erreur qui ressemblent à ce qui suit :
Pour vérifier si les bases de données de disponibilité ont l’état SYNCHRONISÉ, suivez les étapes suivantes :
1. Connecter au réplica secondaire.
2. Exécutez le script SQL suivant afin de vérifier la valeur de toutes les bases de données de disponibilité du
groupe de disponibilité qui n’ont is_failover_ready pas été échouées.
NOTE
Une valeur nulle pour l’une des bases de données de disponibilité peut empêcher le failover automatique, et cette
valeur indique que la base de données de disponibilité n’a pas été SYNCHRONISÉe.
Conclusion
Pour que le groupe de disponibilité soit réussi, toutes les bases de données de disponibilité doivent être à
SYNCHRONIZED l’état. Pour plus d’informations sur les modes de disponibilité, ez le lien suivant :
Cet article vous aide à résoudre le problème courant de configuration AlwaysOn sur SQL serveur.
NOTE
Pour une visite guidée de l’expérience de cet article, voir Résolution des problèmes SQL Server problèmes AlwaysOn.
Version du produit d’origine : SQL Server 2012 Enterprise, SQL Server 2014 Enterprise, SQL Server 2016
Enterprise
Numéro de la ko d’origine : 10179
Msg 19471, Level 16, State 0, Line 2The WSFC cluster could not bring the Network Name resource
with DNS name '' online. Le nom DNS peut avoir été pris ou être en conflit avec les services de noms
existants, ou le service de cluster WSFC n’est peut-être pas en cours d’exécution ou peut être
inaccessible. Utilisez un autre nom DNS pour résoudre les conflits de noms ou consultez le journal du
cluster WSFC pour plus d’informations.
Msg 19476, Level 16, State 4, Line 2The attempt to create the network name and IP address for the
listener failed. Le service WSFC peut ne pas être en cours d’exécution ou inaccessible dans son état
actuel, ou les valeurs fournies pour le nom du réseau et l’adresse IP peuvent être incorrectes. Vérifiez
l’état du cluster WSFC et validez le nom du réseau et l’adresse IP auprès de l’administrateur réseau.
La plupart du temps, l’échec de création de l’écoute qui a entraîné les messages ci-dessus est dû à un manque
d’autorisations pour l’objet CNO (Cluster Name Object) dans Active Directory pour créer et lire l’objet ordinateur
d’écoute. Pour résoudre ce problème, consultez les articles suivants :
Échec de la création d’un répondeur avec le message « Le cluster WSFC n’a pas pu mettre en ligne la
ressource Nom du réseau »
Résolution des problèmes de création d’un listener de groupe de disponibilité AlwaysOn SQL Server
2012
Configurer un listener pour un groupe de disponibilité Always On
Si le problème existe toujours, consultez plus d’informations sur les groupes de disponibilité AlwaysOn.
Sqlcmd : Erreur : Microsoft SQL Native Client : le délai d’expiration de la connexion a expiré.
Pour résoudre ce problème et les erreurs similaires, examinez les questions suivantes :
Erreur de délai et vous ne pouvez pas vous connecter à un SQL Server de groupe de disponibilité AlwaysOn
2012 dans un environnement amulti-subnet
Délai de connexion dans le groupe de disponibilité multi-sous-réseau
Liens d’informations supplémentaires :
Une mise à jour introduit la prise en charge des fonctionnalités AlwaysOn dans SQL Server 2012 ou une
version ultérieure pour the.NET Framework 3.5 SP1
SQL Server Clustering multi-sous-réseaux (SQL Server)
Si le problème existe toujours, consultez plus d’informations sur les groupes de disponibilité AlwaysOn.
Documents recommandés :
Configurer un équilibreur de charge pour un groupe SQL Server de disponibilité Always On dans des
machines virtuelles Azure
Recommandations et meilleures pratiques lors du déploiement SQL Server groupes de disponibilité
AlwaysOn dans Microsoft Azure (IaaS)
Si le problème existe toujours, consultez plus d’informations sur les groupes de disponibilité AlwaysOn.
Vous pouvez également consulter les liens suivants pour obtenir des méthodes supplémentaires pour
surveiller les groupes AlwaysOn :
Gestion basée sur une stratégie pour les problèmes opérationnels avec les groupes de
disponibilité Always On
Lien externe : utilisation de la gestion basée sur la stratégie pour SQL Server groupes de
disponibilité des alertes de perte de données
Comportement du témoin dynamique sur le clustering Windows Server 2012 R2
Cet article vous aide à résoudre le problème où les bases de données en miroir sont laissées dans un état
Déconnecté ou En récupération.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2490051
Symptôme
Prenons l’exemple du scénario suivant :
Vous avez un ordinateur qui exécute une instance secondaire de Microsoft SQL Server dans un miroir de
base de données à deux serveurs.
L’utilisation du processeur atteint 100 % sur l’ordinateur et vous ne pouvez pas arrêter le service SQL
Server à l’aide SQL Server outils de gestion.
Vous terminez le processus de l’instance SQL Server secondaire à l’aide du Gestionnaire des tâches.
Vous redémarrez l’instance secondaire de SQL Server.
Dans ce scénario, toutes les bases de données en miroir sont dans un état Déconnecté ou En cours de
récupération. En outre, un message d’erreur semblable à ce qui suit est consigné dans le journal SQL
Server’erreurs pour chaque base de données :
Contournement de la récupération pour la base de données « Nom de la base de données » car elle est
marquée comme une base de données de mise en miroir de base de données inaccessible. Il existe un
problème avec la session de mise en miroir. La session n’a pas de quorum ou les liens de communication
sont rompus en raison de problèmes liés aux liens, à la configuration du point de terminaison ou aux
autorisations (pour le compte de serveur ou le certificat de sécurité). Pour accéder à la base de données,
recherchez ce qui a changé dans la configuration de la session et annuler la modification.
Cause
Ce problème se produit en raison de problèmes dans les points de terminaison SQL Server de mise en miroir de
bases de données.
Résolution
Pour résoudre ce problème, utilisez les méthodes suivantes. Si la première méthode ne résout pas le problème,
utilisez la deuxième méthode.
Méthode 1
Recyclez le point de terminaison sur la base de données miroir. Pour cela, procédez comme suit :
1. Sur la base de données principale, exécutez le script de SQL suivant pour arrêter le point de terminaison :
ALTER ENDPOINT <Endpoint Name> STATE=STOPPED
NOTE
Si la communication entre les points de terminaison ne redémarre pas après l’exécution des scripts, exécutez les
scripts sur le miroir de base de données. Toutefois, la base de données peut entrer dans un état Suspendu une fois
que vous avez fait cela. Si ce problème se produit, exécutez le script SQL suivant :
Méthode 2
Supprimez et re-créez les points de terminaison de mise en miroir de bases de données sur les deux serveurs.
Une SQL Server de cluster passe à l’état « échec »
lorsque vous essayez de mettre la ressource en ligne
SQL Server
15/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème qui se produit si des clés de Registre spécifiques aux ressources
sont manquantes.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 883732
Symptômes
Lorsque vous essayez d’SQL Server de cluster en ligne pour une instance virtuelle de Microsoft SQL Server,
vous remarquerez peut-être le comportement suivant :
La SQL Server de cluster passe à l’état « échec » et n’est pas mise en ligne.
Vous recevez une combinaison des messages d’erreur suivants sur l’ordinateur propriétaire de la SQL
Server cluster.
Message d’erreur 1
Un événement semblable à celui-ci se trouve dans le journal des événements système :
Date : 05/08/2004
Heure : 1:11:19 AM
Source : ClusSvc
Catégorie : Mgr deover
Tapez : Erreur
ID d’événement : 1069
Utilisateur : N/A
Ordinateur : <Computer Name> Description :
La ressource de cluster « SQL Server ( ) » dans le groupe <SQL Server instance name> de
ressources ' ' a <Cluster group name> échoué.
Message d’erreur 2
Un message d’erreur semblable au suivant se trouve dans le fichier journal du cluster :
Message d’erreur 3
Les messages d’erreur semblables aux suivants sont dans le SQL Server journal des erreurs :
Cause
Les clés de Registre spécifiques aux ressources qui correspondent à la ressource de cluster SQL Server que vous
essayez de mettre en ligne sont manquantes. Ce problème se produit également si les valeurs qui
correspondent aux clés de Registre spécifiques aux ressources ne sont pas correctes.
Résolution
IMPORTANT
Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des
problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à suivre ces
étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier. Vous pouvez alors le
restaurer en cas de problème. Pour plus d’informations sur la façon de back up et restore the registry, voir How to back
up and restore the registry in Windows.
Pour résoudre ce problème, vous devez manuellement créer à nouveau les clés de Registre spécifiques aux
ressources qui correspondent à la ressource SQL Server cluster. Pour cela, procédez comme suit :
1. Cliquez sur Démarrer, cliquez sur Exécuter, tapez Regedit, puis cliquez sur OK.
2. Dans l’Éditeur du Registre, recherchez et sélectionnez la clé de Registre :
HKEY_LOCAL_MACHINE\Cluster\Resources\<GUID>\Parameters .
Plus d’informations
Comment créer manuellement les clés de Registre propres aux ressources pour SQL Server de cluster
Message d’erreur lors de l’installation SQL Server
sur un cluster Windows Server
13/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous installez SQL Server sur Windows
cluster de serveurs.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 953748
Symptômes
Lorsque vous installez Microsoft SQL Server sur un cluster Windows server, la règle de validation de cluster du
processus d’installation peut échouer. En outre, le message d’erreur suivant peut s’afficher :
Erreur : « Erreurs de vérification du cluster du service de cluster Microsoft (MSCS) » a échoué. Le cluster n’a
pas été vérifié ou il y a des erreurs ou des échecs dans le rapport de vérification. Consultez la KB953748 ou
SQL en ligne pour plus d’informations »
Par exemple, le fichier journal d’installation (Detail.txt) peut se présenter dans le dossier :
%ProgramFiles%\Microsoft SQL Server\100\Setup Bootstrap\Log\20090316_112604 .
Pour une validation réussie, la règle aura une entrée qui ressemble à ce qui suit :
Cause
Le processus de validation peut échouer dans différentes conditions. Lorsque ce problème se produit, vous
devez effectuer une validation manuelle pour vous assurer que la configuration matérielle est correcte avant
d’essayer une solution de contournement mentionnée dans cet article. Vous pouvez utiliser les références
mentionnées dans la section Références pour plus d’informations sur la validation des clusters dans les
environnements Windows Server. Cela permet d’éviter d’autres problèmes que vous risquez de résoudre à
l’avenir, si vous utilisez la solution de contournement lorsque des problèmes sous-jacents existent.
Solution de contournement
Pour contourner ce problème, vous devez résoudre le problème à l’origine de l’échec de la validation. Si vous
pouvez déterminer que le problème à l’origine de l’échec de la validation peut être résolu ultérieurement, vous
pouvez utiliser l’option d’installation de ligne de commande de cet article pour ignorer le message d’erreur et
essayer d’installer l’instance du cluster de SQL Server. Si vous faites cela, avant d’utiliser à nouveau le système,
vous devez toujours résoudre le problème sous-jacent qui a provoqué l’échec de la validation.
NOTE
Si vous essayez cette option d’installation de ligne de commande et que le programme d’installation de SQL Server
échoue, assurez-vous que la configuration matérielle du cluster est valide, puis contactez les services de support
technique Microsoft (CSS) pour obtenir de l’aide supplémentaire.
À l’invite de commandes, modifiez le lecteur de disque dur et le dossier qui contient SQL Server(Setup.exe).
Tapez ensuite l’une des commandes suivantes pour ignorer la règle de validation :
Pour une configuration de Add-Note intégrée, exécutez la commande sur chaque nœud ajouté
Setup/SkipRules=Cluster_VerifyForErrors/Action=InstallFailoverCluster :
Si vous recevez cet échec de validation lorsque vous ajoutez un nœud à une installation deover existante,
exécutez la commande sur chaque nœud ajouté
Setup /SkipRules=Cluster_VerifyForErrors /Action=AddNode :
NOTE
La configuration d’une instance de cluster de SQL Server de Windows Server contenant des erreurs dans le rapport de
validation du cluster de serveur Windows n’est pas pris en compte. Pour qu’SQL Server instance de cluster de point de
contrôle soit dans un scénario pris en charge, le rapport de validation du cluster Windows server ne peut pas contenir
d’erreurs. Confirmez avec CSS que la configuration de cluster est dans un état pris en charge.
Le SkipRules paramètre d’installation n’est pas une fonctionnalité documentée. Vous ne devez pas utiliser ce
paramètre pour ignorer d’autres règles à l’exception de la règle, sauf si Cluster_VerifyForErrors CSS vous en
fait l’indication.
Références
Valider le matériel pour un cluster de failover
Instances de cluster de failover Always On (SQL Server)
Installer les SQL Server à partir de l’invite de commandes
Lorsque vous exécutez l’Assistant Validation d’une configuration sur un ordinateur Windows Server 2008
ou sur un ordinateur Windows Vista, la validation n’est pas validée.
Créer des bases de données ou modifier des
emplacements de fichiers disque sur un lecteur de
cluster partagé sur lequel SQL Server n’a pas été
installé à l’origine
14/08/2021 • 2 minutes to read
Cet article explique comment créer des bases de données ou modifier des emplacements de fichiers disque sur
un lecteur de cluster partagé sur lequel SQL Server n’a pas été installé à l’origine.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 295732
Résumé
Après avoir installé une instance de serveur virtuel SQL Server, vous pouvez créer des bases de données ou
déplacer des données existantes ou des fichiers journaux sur un disque de cluster partagé secondaire. Pour créer
des bases de données ou déplacer des données ou des fichiers journaux existants, l’autre disque que SQL Server
doit utiliser doit être ajouté en tant que dépendance à la ressource SQL Server dans l’administrateur de cluster.
Si vous tentez de créer une base de données sur un autre lecteur de cluster partagé lorsque la ressource SQL
Server ne dépend pas de ce disque, vous pouvez recevoir une erreur semblable à celle-là :
Serveur : Msg 5184, Niveau 16, État 2, Ligne 1. Impossible d’utiliser le fichier « %.*ls » pour le serveur en
cluster. Seuls les fichiers mis en forme sur lesquels la ressource de cluster du serveur a une dépendance
peuvent être utilisés.
Serveur : Msg 1802, Niveau 16, État 1, Ligne 1
ÉCHEC DE LA CRÉATION D’UNE BASE DE DONNÉES. Certains noms de fichiers répertoriés n’ont pas pu être
créés. Vérifiez les erreurs précédentes.
Une erreur similaire s’affiche lorsque vous essayez de déplacer ou d’ajouter des fichiers à une base de données
existante sur un lecteur de cluster partagé qui n’est pas dans le groupe SQL Server et qui n’a pas non plus la
dépendance SQL Server ressources.
En outre, si vous essayez de créer un catalogue d’index de texte intégral sur un disque dont la ressource SQL
Server ne dépend pas, l’erreur suivante s’affiche :
Serveur : Msg 7627, Level 16, State 1, Procedure sp_fulltext_database, Line 61 Full-text catalog in directory
'Y:\FTDATA' for clustered server cannot be created. Seuls les répertoires sur un disque du groupe de clusters
du serveur peuvent être utilisés.
Plus d’informations
Pour ajouter un disque en tant que dépendance au SQL Server, le disque de cluster partagé doit résider dans le
même groupe dans l’administrateur de cluster que les ressources SQL Server cluster.
Pour déplacer le disque de cluster partagé, sélectionnez le disque que vous souhaitez déplacer vers le groupe de
SQL Server, puis cliquez avec le bouton droit sur cette ressource. Cliquez sur Modifier le groupe. Une fois que
le disque se trouve dans le même groupe dans lequel réside la ressource SQL Server, suivez les étapes suivantes
pour l’ajouter en tant que SQL Server dépendance :
1. Ouvrez l’administrateur de cluster.
2. Assurez-vous que toutes les ressources de disque physique qui contiennent SQL Server bases de données
sont dans le même groupe que la SQL Server ressource.
3. Cliquez avec le bouton droit SQL Server ressource, puis mettre la ressource dans un état hors connexion en
cliquant sur Mettre hors connexion.
4. Cliquez avec le bouton droit sur SQL Server ressource, puis cliquez sur Propriétés.
5. Sélectionnez l'onglet Dépendances .
6. Cliquez sur Modifier pour ajouter le disque à la liste des dépendances de cette ressource.
7. Remettre la SQL Server en ligne, puis placer les fichiers SQL Server sur ce disque de cluster partagé.
Une erreur se produit lorsque vous installez SQL
Server 2016 sur un disque de volume partagé de
cluster
12/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème d’autorisations qui se produit lorsque vous installez SQL Server
2016 sur un disque de volume partagé de cluster (CSV).
Version du produit d’origine : SQL Server 2016 Standard, SQL Server 2016 Enterprise
Numéro de la ko d’origine : 4082888
Symptômes
Supposons que vous essayiez d’installer une instance de Microsoft SQL Server 2016 sur un disque CSV, vous
pouvez recevoir une erreur ressemblant à ce qui suit :
Cause
Le bouton Autorisations héritées est activé pour le dossier choisi pour les emplacements de base de données.
Solution de contournement
La solution de contournement pour ce problème est la suivante :
Supposons que nous utilisons le dossier C:\ClusterStorage\Volume1\Data1\ comme exemple.
1. Accédez à C:\ClusterStorage\Volume1\ .
2. Cliquez avec le bouton droit sur le dossier Data1, puis sélectionnez le bouton Propriétés.
3. Sélectionnez l’onglet Sécurité, puis le bouton Avancé en bas.
4. Sélectionnez le bouton Désactiver l’héritage, puis sélectionnez Convertir les autorisations héritées en
autorisations explicites sur cette option d’objet.
5. Réessayez l’installation.
Re-créer manuellement les clés de Registre propres
aux ressources pour SQL Server cluster
13/08/2021 • 3 minutes to read
Cet article montre comment créer manuellement les clés de Registre spécifiques aux ressources pour SQL
Server de cluster lorsque vous supprimez une ressource de l’administrateur de cluster.
Version du produit d’origine : Microsoft SQL Server
Numéro de la ko d’origine : 810056
Résumé
Les ressources de cluster SQL Server (SQL Server, agent SQL Server et recherche en texte intégral) contiennent
toutes des clés de Registre spécifiques aux ressources qui doivent être présentes pour mettre la ressource en
ligne. Si vous supprimez une ressource de l’administrateur de cluster, vous pouvez la créer à nouveau
manuellement. Les étapes peuvent uniquement être utilisées pour ajouter des ressources qui dépendent de SQL
Server. Elles ne peuvent pas être utilisées pour les ressources dont SQL Server dépend. Consultez la section Plus
d’informations de cet article pour ajouter manuellement la ressource. Ces étapes supposent que vous avez déjà
utilisé le programme d SQL Server de cluster pour installer correctement tous les fichiers et composants du
cluster. Cette procédure ne décrit pas tous les fichiers, modifications ou clés de Registre que le programme
d’installation effectue dans une nouvelle installation de cluster.
Plus d’informations
Chaque ressource que l’administrateur de cluster répertorie a une clé de Registre qui se trouve sous
HKEY_LOCAL_MACHINE (HKLM) HKLM\Cluster\Resources\GUID . Un GUID est créé lorsque vous ajoutez la ressource et
diffère d’un ordinateur à l’autre. Chaque clé contient une valeur Name qui contient le nom de ressource affiché
par l’administrateur de cluster. Sous chaque clé de ressource se trouve une sous-clé Parameters dans laquelle la
ressource peut stocker des informations de paramètre spécifiques à la ressource.
SQL Server, SQL Server agent de recherche et les informations de recherche en texte intégral dans cette sous-clé
Parameters. Si les informations sont manquantes, des erreurs telles que les suivantes sont consignées dans le
fichier journal du cluster lorsque vous essayez de mettre la ressource en ligne :
IMPORTANT
Vous pouvez utiliser cette méthode uniquement dans une situation critique. Par exemple, vous pouvez utiliser cette
méthode lorsque vous ne pouvez pas démarrer l’instance de SQL Server. Toutefois, vous pouvez utiliser le programme
d’installation pour re-créer le serveur virtuel.
Vous pouvez utiliser l’utilitaire Cluster.exe pour ajouter les clés de Registre. Pour ce faire, vous devez exécuter
une commande semblable à la commande suivante à l’invite de commandes :
NOTE
Vous devez remplacer ResourceName par le nom de la ressource SQL Server appropriée, de la ressource agent SQL
Server ou de la ressource Full-Text search.
Vous devez remplacer KeyName par les noms de clé de Registre appropriés. Par exemple, InstanceName,
VirtualServerName sont des noms de clé de Registre.
Vous devez remplacer KeyValue par la valeur appropriée pour la clé. Pour la clé de Registre InstanceName, vous
pouvez affecter le nom de l’instance de SQL Server que le serveur virtuel représente pour la valeur de clé. Vous pouvez
utiliser MSSQLSERVER comme nom de l’instance pour l’instance par défaut.
Stratégie de support Microsoft pour les
configurations en cluster de SQL Server avec
Windows Server
14/08/2021 • 5 minutes to read
Cet article décrit la stratégie de support Microsoft pour les configurations en cluster de SQL Server avec
Windows Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 327518
Résumé
Cet article décrit la stratégie de support Microsoft pour SQL Server clustering deover. Les services de support
technique Microsoft (CSS) prend en charge le clustering de SQL Server de SQL Server basé sur les
fonctionnalités de clustering de clustering de Windows dans les produits suivants :
Windows Serveur 2008 Êdition Entreprise
Windows Server 2008 Datacenter Edition
Windows Server 2008 R2 Entreprise Edition
Windows Server 2008 R2 Datacenter Edition
Window Server 2012
Windows Server 2012 R2
Windows Server 2016 Standard et Datacenter Editions
NOTE
Windows Server 2012 et Windows Server 2012 R2 doivent passer en revue la stratégie de prise en charge de Microsoft
de la Windows clusters de serveurs de serveurs.
Les stratégies suivantes pour n’importe quelle version SQL Server prise en charge lorsqu’elle est installée en
tant qu’instance SQL Server cluster de SQL Server.
IMPORTANT
Le terme clusters de ser veurs signifie les ordinateurs qui exécutent le service de cluster Microsoft. La Windows Server
2003 fournit les types de services de clustering suivants :
NOTE
Même s’il s’agit SQL Server 2008 R2 Books Online, le même contenu s’applique SQL Server 2008.
Pour plus d’informations sur les systèmes d’exploitation pris en charge pour le clustering de SQL Server
failover, reportez-vous à la section « Vérifier votre Paramètres de système d’exploitation » dans la
rubrique suivante : Avant d’installer le clustering deover
En résumé, les éditions SQL Server 2008 et SQL Server 2008 R2 peuvent prendre en charge jusqu’à 8
nodes sur Windows Server 2003 et 16 sur Windows Server 2008 et les versions ultérieures en ce qui a
trait aux installations AlwaysOn.
SQL Server 2012, SQL Server 2014 et SQL Server 2016
Reportez-vous aux articles MSDN suivants pour chacune des versions :
Clustering de basculement Windows Server (WSFC) avec SQL Server
Stratégie de failover pour les instances de cluster de failover
Windows Clustering de serveur avec SQL Server
Stratégie de failover pour les instances de cluster de failover
Windows Clustering de serveur avec SQL Server 2016
SQL Server 2016 pour les instances de cluster de failover
Lecteurs montés
L’utilisation de lecteurs montés n’est pas prise en charge sur un cluster qui inclut une installation Microsoft SQL
Server’installation. Pour plus d’informations, voir SQL Server prise en charge des volumes montés.
WARNING
Si, pendant la désinstallation, vous obtenez des erreurs, il est probable que le nœud devra être reconstruit sinon
l’installation ne se réinstalle pas correctement.
Plus d’informations
Prise en charge de la virtualisation
Pour plus d’informations sur l’installation de clusters de SQL Server dans un environnement de virtualisation de
matériel, voir Stratégie de prise en charge pour les produits Microsoft SQL Server qui s’exécutent dans un
environnement de virtualisation de matériel.
Références
Pour plus d’informations, consultez la rubrique clustering de SQL Server livres en ligne ou sur le site web
MSDN.
S’applique à
SQL Server 2008 Developer
SQL Server 2008 Enterprise
SQL Server 2008 Standard
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2012 Analysis Services
SQL Server 2012 Business Intelligence
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Standard
SQL Server 2012 Enterprise Core
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Standard
SQL Server Développeur 2016
SQL Server 2016 Enterprise
SQL Server 2016 Enterprise Core
SQL Server 2016 Standard
Microsoft Windows des ressources de cluster de
SQL Server
14/08/2021 • 7 minutes to read
Cet article présente les dépendances de ressources par défaut dans SQL Server et les restrictions sur ces
dépendances.
Version du produit d’origine : SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL
Server 2008
Numéro de la ko d’origine : 835185
Résumé
Lorsque vous installez SQL Server sur un cluster en tant qu’instance de cluster de SQL Server de SQL Server, un
ensemble spécifique de ressources SQL Server qui ont des dépendances sur d’autres ressources dans le groupe
de clusters est créé.
IMPORTANT
Ne modifiez pas l’arborescence des dépendances par défaut à l’exception des modifications répertoriées dans cet article ou
des modifications répertoriées dans l’article suivant de la Base de connaissances Microsoft : prise en charge SQL Server
pour les dossiers montés
NOTE
La double dépendance vis-à-vis du point de montage consiste à s’assurer que les SQL Server ne peuvent pas démarrer et
charger des bases de données sans que les disques physiques ne sont disponibles. Cela permet d’éviter l’altération de la
base de données.
Plus d’informations
Pour plus d’informations sur l’ajout de dépendances à SQL Server ressource :
Comment ajouter des dépendances dans SQL Server 2008
Comment ajouter des dépendances dans SQL Server 2008 R2
Comment ajouter des dépendances dans SQL Server 2012
Comment ajouter des dépendances à un SQL Server 2016 ou une version ultérieure de SQL Server
Limitations et restrictions
Si vous ajoutez d’autres ressources au groupe SQL Server, ces ressources doivent toujours avoir leurs propres
ressources de nom de réseau SQL et leurs propres ressources d SQL’adresse IP. N’utilisez pas les ressources de
nom de SQL réseau existantes SQL ressources d’adresse IP pour d’autres SQL Server. Si SQL Server ressources
sont partagées avec d’autres ressources ou sont mal définies, vous pouvez être en face des problèmes suivants :
Des pannes qui ne sont pas prévues peuvent se produire.
Une altération de la base de données peut se produire.
Les installations du Service Pack risquent de ne pas réussir.
Il est possible SQL Server programme d’installation de l’ordinateur ne soit pas réussi. Si cela se produit, vous
ne pouvez pas installer d’instances supplémentaires de SQL Server ni effectuer de maintenance de routine.
SQL Server ne peuvent pas être en ligne.
Il se peut que les disques ne soient pas disponibles SQL Server’utilisation.
Considérations supplémentaires
FtP avec réplication SQL Server : pour les instances de SQL Server qui utilisent FTP avec la réplication SQL
Server, votre service FTP doit utiliser l’un des mêmes disques physiques que l’installation de SQL Server qui
est définie pour utiliser le service FTP.
SQL Server de ressources : si vous ajoutez une ressource à un groupe SQL Server et que vous avez une
dépendance sur la ressource SQL Server pour vous assurer que SQL Server est disponible, nous vous
recommandons d’ajouter une dépendance sur la ressource agent SQL Server au lieu d’ajouter une
dépendance à la ressource SQL Server. Pour vous assurer que l’ordinateur qui exécute SQL Server reste
hautement disponible, configurez la ressource de l’agent SQL Server afin qu’elle n’affecte pas le groupe SQL
Server en cas d’échec de la ressource agent SQL Server.
Partages de fichiers et ressources d’imprimante : une exception est le partage de fichiers utilisé par la SQL
Server FILESTREAM. Une ressource d’imprimante ne doit pas faire SQL Server groupe. Les ressources de
partage de fichiers ou d’imprimante nécessitent leur propre nom réseau et ressource IP sur un cluster de
Windows Server 2003. Les partages de fichiers et les ressources d’imprimante nécessitent également leur
propre nom réseau et ressource IP pour un point d’accès au client sur Windows Server 2008 et versions
ultérieures. Pour une instance de cluster de Windows Server 2008 ou une version ultérieure, utilisez
l’Assistant Création d’un dossier partagé pour spécifier un nom unique et d’autres paramètres pour le dossier
partagé.
Performances : une diminution des performances et une perte de service sur l’ordinateur qui exécute SQL
Server peut se produire lorsque les conditions suivantes sont vraies :
Une ressource de cluster de partage de fichiers qui n’utilise pas la fonctionnalité FILESTREAM est
installée sur la même ressource de disque physique sur laquelle SQL Server est installée.
Une ressource de cluster d’imprimantes est installée sur la même ressource de disque physique sur
laquelle SQL Server est installée.
Considérations sur MSDTC
Lisez les Recommandations MSDTCsur SQL Cluster de failover , qui doit être le point de départ pour toute
discussion sur les dépendances MSDTC, selon qu’elle est requise ou non.
Ce FAQ sur les Recommandations MSDTC (forum aux questions) consiste à répondre aux questions courantes et
aux meilleures pratiques avec MSDTC (Microsoft Distributed Transaction Coordinator) lorsqu’il est utilisé avec
les instances de clustered de SQL Server pour inclure les recommandations actuelles et les meilleures pratiques.
Lorsque vous ajoutez une ressource MSDTC à un groupe SQL Server, vous pouvez utiliser l’un des disques SQL
Server ou un autre disque. Toutefois, pour que la ressource fonctionne correctement et pour pouvoir utiliser
l’applet de la cmdlet Test-DTC PowerShell, vous devez utiliser le nom de réseau et l’adresse IP des serveurs SQL
et renommer votre ressource MSDTC en nom de serveur virtuel SQL Servers.
À partir de Windows Server 2012 et plus tard lors de la création d’un coordinateur de transactions distribuées à
l’aide du Gestionnaire de cluster, vous n’avez pas le choix dans le nom des ressources. Il s’agit toujours du
Nouveau coordinateur de transactions distribuées, et vous n’avez pas la possibilité de renommer la ressource
dans le Gestionnaire de cluster.
PowerShell en exemple, cette commande vous permet de renommer le Nouveau coordinateur de transactions
distribuées en nom de votre choix. Dans cet exemple, le nom est modifié en MSDTC.
Exemple (PowerShell) :
S’applique à
SQL Server 2008 Standard
SQL Server 2008 Enterprise
SQL Server Développeur 2008
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 Workgroup
SQL Server Développeur 2012
SQL Server 2012 Enterprise
SQL Server 2012 Standard
SQL Server 2012 Enterprise Core
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Standard
SQL Server 2014 Business Intelligence
SQL Server 2016 Enterprise Core
SQL Server 2016 Enterprise
SQL Server Développeur 2016
SQL Server 2016 Standard
SQL Server 2017 Windows (toutes les éditions)
Configurer la sécurité pour la SQL Server des
journaux de bord
14/08/2021 • 9 minutes to read
Cet article explique comment configurer la sécurité pour la SQL Server des journaux de livraison et fournit des
informations sur le problème qui peut se produire lorsque vous configurez la sécurité pour la SQL Server des
journaux de livraison.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 321247
Résumé
Cet article fournit des informations sur la configuration de la sécurité pour la livraison des journaux de livraison.
Il existe plusieurs problèmes à prendre en compte lors de la configuration de la sécurité pour la copie des
journaux de transaction SQL Server qui vont du compte de démarrage pour SQL Server pour partager les
autorisations pour le partage réseau où résident les sauvegardes du journal des transactions. Ces problèmes
sont décrits dans cet article.
Compte de domaine
Si vous avez placé des SQL Server dans un domaine, Microsoft vous recommande d’utiliser un compte de
domaine pour démarrer SQL Server services. Vous devez utiliser un compte de domaine si vous comptez
configurer SQL Server pour qu’il s’exécute en tant que serveur virtuel sous Windows clustering. Un compte de
domaine offre l’avantage d’une maintenance minimale en cas de modification de mot de passe. Toutefois, il se
peut que vous ne soyez pas en mesure de démarrer SQL sous un compte de domaine si SQL Server réside sur
un serveur qui se trouve dans un groupe de travail.
Si une base de données utilisateur est déplacée vers un autre serveur, les valeurs SID sont transférés à partir du
serveur précédent. La sécurité de la base de données est rompte lorsque les connexions sur le deuxième serveur
ne sont pas créées avec les mêmes valeurs SID ou si la sécurité n’est pas correctement configurée en raison de
l’inconvenance des valeurs SID.
Pour plus d’informations, voir Comment résoudre les problèmes d’autorisation lorsque vous déplacez une base
de données entre des serveurs en cours d’exécution SQL Server.
Exigences de sécurité
Partage de sauvegarde
Configurez le partage réseau configuré pour contenir les sauvegardes du journal des transactions afin
d’avoir des autorisations de lecture/modification pour le compte sous lequel les services SQL Server (sur
le serveur secondaire configuré pour la copie des journaux de transaction) démarrent.
Le partage réseau configuré pour contenir les sauvegardes du journal des transactions doit être
configuré pour avoir des autorisations de lecture/modification pour le compte sous lequel les services
SQL Server, sur le serveur secondaire configuré pour la copie des journaux de transaction, sont en cours
de démarrage. Ce partage est accessible par la tâche Copier sur le serveur secondaire pour copier les
sauvegardes du journal des transactions dans le dossier local sur le serveur secondaire respectif. Le
travail Charger charge ensuite ces sauvegardes à partir du dossier local.
Envoi de journaux de trafic entre domaines
Si les ordinateurs qui exécutent SQL Server sont placés dans un environnement multi-domaines,
Microsoft recommande de configurer des relations d’confiance entre tous les domaines impliqués dans la
livraison des journaux de bord. Toutefois, si vous ne pouvez pas établir d’relations d’confiance entre les
domaines, vous pouvez utiliser la sécurité de connexion réseau pour la livraison des journaux. Reportez-
vous à la section de cet article qui traite de l’option de démarrage du compte réseau LocalSystem pour
SQL Server services associés.
Sélection du mode d’authentification Connecter pour surveiller le serveur
Vous pouvez sélectionner l’authentification Windows ou l’authentification SQL (par les serveurs
principaux et secondaires) pour vous connecter pour surveiller le serveur et mettre à jour les tables de
surveillance. Vous pouvez le sélectionner lors de la configuration de la livraison des journaux ou une fois
que vous avez installé l’envoi des journaux et qu’il est fonctionnel. Par défaut, les SQL Server
l’authentification Windows utilisateur ; toutefois, si vous sélectionnez l’authentification SQL, une nouvelle
log_shipping_monitor_probe de connexion SQL est créée sur les serveurs principal, secondaire et
moniteur s’il n’en existe pas. Si vous sélectionnez SQL l’authentification à cet effet, configurez SQL Server
pour utiliser l’option SQL et Windows’authentification.
Configuration de la sécurité sur le serveur secondaire pour les bases
de données de veille
Si vous configurez la base de données secondaire en mode veille, vous pouvez accéder à cette base de données
en lecture seule. En restaurant la base de données secondaire dans ce mode, cela peut fournir un moyen
d’exécuter des rapports hors connexion, ce qui permet de décharger une partie du travail à partir du système de
production. Toutefois, pour que la base de données de veille puisse prendre en charge la fonctionnalité de
lecture seule, vous de devez peut-être appliquer les mêmes paramètres de sécurité sur le serveur secondaire.
Étant donné que la base de données est en état de veille, vous ne pouvez même pas apporter de modifications
aux fins de configuration de la sécurité. Dans ce cas, vous devez créer toutes les connexions SQL Server avec les
mêmes valeurs SID sur le serveur secondaire. Windows connexions conservent automatiquement les mêmes
SID, car le GUID Windows est globalement unique, même lors de l’utilisation de plusieurs domaines.
Pour plus d’informations sur la création de connexions SQL avec le même SID sur différents serveurs, voir
Comment accorder l’accès aux connexions SQLsur une base de données de veille lorsque l’invité est désactivé
dans SQL Server .
Dans le cadre de cette procédure stockée, un fichier de la table de l’ancien serveur principal est .bcp chargé
dans une table syslogins temporaire. Chaque connexion présente dans cette table temporaire est ensuite
comparée à la table de la base de données MASTER du serveur secondaire et à la table de la syslogins
sysusers base de données secondaire. Pour chaque connexion dans la table temporaire qui possède une
connexion avec le même nom dans la table et le même SID que celui de la table de la base de données
secondaire, le SID est corrigé (dans la base de données secondaire) en utilisant pour correspondre à celui qui se
trouve dans la syslogins sysusers sp_change_users_login syslogins table.
La configuration de la sécurité à l’aide de cette procédure stockée nécessite les opérations suivantes :
SQL connexions doivent déjà être créées sur le serveur secondaire. Pour ce faire, utilisez la tâche DTS De
connexions de transfert expliquée dans la rubrique SQL Server Books Online : Comment configurer et
effectuer la modification du rôle d’expédition de journaux .
Vous devez fournir un .bcp fichier de la table à partir du serveur syslogins principal. Ce fichier doit
être à jour, car un fichier non à jour peut entraîner l’échec de la correction sp_resolve_logins des
connexions.
Vous devez respecter les trois conditions suivantes avant de pouvoir réellement corriger les sp_resolve_logins
connexions dans la base de données secondaire :
1. Le nom de connexion du fichier de la table doit correspondre au nom de la table à .bcp syslogins
partir du serveur syslogins principal.
2. La valeur SID doit correspondre entre le fichier de connexion et .bcp la table dans la base de données
sysusers secondaire.
3. La valeur SID de la base de données secondaire doit être différente de la valeur SID de la table de la base
de données syslogins MASTER sur le serveur secondaire.
Si vous créez des connexions SQL Server comme décrit au Q303722, il n’est pas besoin d’exécuter cette
procédure stockée, car toutes les connexions ont déjà été présentées avec la même valeur SID dans la table
(dans la base de données MASTER sur le serveur secondaire) et la table (dans la base de données syslogins
sysusers secondaire).
Cet article vous aide à résoudre le problème où le moniteur Logshipping lève de manière incorrecte le numéro
d’erreur 14420 au lieu de 14421 lorsque la base de données secondaire n’est plus synchronisée.
Version du produit d’origine : Microsoft SQL Server
Numéro de la ko d’origine : 2006312
Symptômes
Prenons la configuration suivante d’un environnement de livraison de journaux de route :
Le serveur A héberge l’instance du serveur principal et la base de données.
Le serveur B héberge l’instance de serveur secondaire et la base de données.
Le serveur C héberge une instance de serveur de surveillance dans laquelle le travail Moniteur de livraison
de journaux est configuré pour utiliser un compte proxy usurpé pour les connexions au serveur A et au
serveur B.
Lorsque vous utilisez cette configuration, le travail du moniteur de livraison des journaux de livraison lève à tort
le message d’erreur 14420 au lieu de 14421 lorsque la base de données secondaire n’est pas synchronisée. La
description de ces messages d’erreur SQL Server 2005 et SQL Server 2008 est la suivante :
Le message d’alerte 14221 indique que la différence entre l’heure actuelle (UTC) et la valeur de la table sur le
serveur moniteur est supérieure à la valeur définie pour le seuil d’alerte de restauration, tandis que le
last_restored_date_utc log_shipping_monitor_secondary message d’alerte 14220 indique que la différence
entre l’heure UTC et la valeur de la table sur le serveur moniteur est supérieure à la valeur définie pour le seuil
d’alerte de last_backup_date_utc log_shipping_monitor_primary sauvegarde.
Cause
Le problème survient en raison d’un problème dans l’interface utilisateur de la livraison des journaux de route.
Lorsque vous créez le travail de moniteur pour le secondaire, 14220 est transmis au lieu de 14221.
Résolution
Pour résoudre le problème, corrigez la valeur du paramètre pour la base de données secondaire en exécutant
l’instruction suivante sur le serveur @threshold_alert moniteur (serveur C) :
use master
go
sp_change_log_shipping_secondary_database @secondary_database = 'dbname', @threshold_alert = 14421
Plus d’informations
Description du message d’erreur 14420 et du message d’erreur 14421 qui se produisent lorsque vous utilisez la
livraison des journaux de SQL Server
Comprendre la .NET Framework requise pour les
différentes versions de SQL Server
13/08/2021 • 5 minutes to read
Cet article décrit la .NET Framework requise pour différentes versions SQL à partir de SQL Server 2005.
Version du produit d’origine : SQL Server 2019, SQL Server 2017, SQL Server 2014, SQL Server 2012, SQL
Server 2008, SQL Server 2005
Numéro de la ko d’origine : 2027770
Résumé
Différentes versions de Microsoft SQL Server ont des versions .NET Framework différentes en tant que
conditions préalables à l’installation, et la procédure d’installation du .NET Framework peut être différente sur
différents systèmes d’exploitation. Pour les versions plus récentes SQL Server, ces informations sont couvertes
dans le cadre des rubriques relatives à la configuration matérielle et logicielle requise, comme répertorié ci-
dessous :
Configuration matérielle et logicielle requise pour SQL Server 2019
Configuration matérielle et logicielle requise pour SQL Server 2017
Configuration matérielle et logicielle requise pour SQL Server 2016
Configuration matérielle et logicielle requise pour SQL Server 2014
Configuration matérielle et logicielle requise pour SQL Server 2012
Pour les versions SQL Server 2008R2 et versions antérieures, la .NET Framework requise varie en fonction de
l’édition de SQL Server que vous installez. Cet article décrit ces conditions requises et vous fournit les
informations nécessaires pour pouvoir installer les .NET Framework requises.
1. Utilisez Table 1 les conditions préalables de Microsoft DotNET Framework pour SQL Server pour vérifier la
.NET Framework requise pour la version et l’édition que vous installez.
2. Vérifiez si le .NET Framework est déjà inclus dans le système d’exploitation ou si vous devez le télécharger
séparément des téléchargements Microsoft répertoriés dans Table 2 la section .NET Frameworks for SQL
Server sur différents systèmes d’exploitation et la section liens de téléchargement.
3. Utilisez la dernière colonne pour vérifier si des procédures spéciales sont requises pour installer
l’infrastructure Table 2 sur le système d’exploitation cible. Si l’entrée est Oui, recherchez les procédures
nécessaires dans les sections ultérieures de ce document. Si l’entrée est Non, vous pouvez télécharger
l’infrastructure correspondante à partir du lien correspondant et Table 2 l’installer sur le système
d’exploitation cible.
Pour SQL Server 2008 et pour les installations de cluster de SQL Server 2008 R2 et Express Edition, le
programme d’installation n’installe pas .NET Framework 3.5 Service Pack 1 sur les systèmes qui exécutent
Windows Server 2008 R2 Edition. Pour plus d’informations sur l’activer .NET Framework 3.5 SP1 sur ces
systèmes, voir la section Comment installer ou activer .NET Framework 3.5 SP1 sur Windows.
DES
P RO C ÉDURES
SP ÉC IA L ES
SO N T - EL L ES
PA R DÉFA UT REQ UISES
IN C L US AVEC AVEC L ES REDIST IST R P O UR
L E SY ST ÈM E SY ST ÈM ES IN STA L L É OU IN STA L L ER L E
VERSIO N DE N UM ÉRO DE D’EXP LO ITAT I D’EXP LO ITAT I AVEC VISUA L T ÉL ÉC H A RGE REDIST IST ISM
. N ET VERSIO N ON ON ST UDIO . N ET R L E L IEN E?
3.5 SP1 3.5.30729.1 Windows Serv Aucun Aucun 3.5 SP1 Oui, pour
er 2008 R2 Windows
Server 2008
R2
NOTE
Si vous ne développez pas l.NET Framework 3.5.1 Features et vérifiez-le, l’Assistant Ajout de fonctionnalités
suivant est démarré :
Si l’Assistant démarre, sélectionnez Annuler, développez .NET Framework Fonctionnalités 3.5.1, puis
cochez la case .NET Framework 3.5.1.
4. Vous ne pouvez pas installer .NET Framework 3.5.1, sauf si les services et fonctionnalités de rôle
requis sont également installés.
5. Dans la sélection Confirmer l’installation, examinez les sélections, puis sélectionnez Installer.
6. Laissez le processus d’installation se terminer, puis sélectionnez Fermer.
Méthode 2 : Utiliser Windows PowerShell
1. Cliquez sur Démarrer, sélectionnez Tous les programmes, puis sélectionnez Accessoires.
2. Développez Windows PowerShell, cliquez avec le bouton Windows PowerShell, puis sélectionnez
Exécuter en tant qu’administrateur. sélectionnez Oui dans la zone Contrôle de compte d’utilisateur.
3. À l’invite de commandes PowerShell, tapez les commandes suivantes, puis appuyez sur Entrée après chaque
commande :
Import-Module ServerManager
Add-WindowsFeature as-net-framework
NOTE
Pour plus d’informations, voir la capture d’écran :
Références
Log WebLog de Stebner
.NET Framework Prise en charge Windows Server 2008
Tentative d’effectuer une erreur d’opération non
autorisée lorsque vous avez installé ou mis à jour
SQL Server instances
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème d’échec de la configuration ou de la mise à jour SQL Server
instances de données et renvoie un message d’erreur.
S’applique à : SQL Server 2019 sur Windows, SQL Server 2017 sur Windows, SQL Server 2016, SQL Server
2014, SQL Server 2012
Numéro de la ko d’origine : 4594205
Symptômes
Prenons l’exemple du scénario suivant :
Vous avez un ordinateur qui exécute Windows 10, version 20H2 et le navigateur Microsoft Edge de
n’importe quelle version de la version 84.0.522.52 à 86.0.622.55.
Vous essayez de mettre à jour une instance existante de Microsoft SQL Server 2012 à 2019, ou d’installer
une nouvelle instance SQL Server avec une mise à jour (slipstream).
Dans ce scénario, un échec se produit pendant le processus de mise à jour et vous recevez le message d’erreur
suivant :
En outre, une entrée est enregistrée dans le fichier journal d’installation de SQL Server, Detail.txt, qui indique que
l’échec s’est produit lors de la tentative d’ouverture de la sous-clé de Registre Microsoft Edge .
Cause
Le SQL Server du programme d’installation ne peut pas émaner la sous-clé de Registre suivante :
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge
Résolution
Pour résoudre ce problème, utilisez l’une des méthodes suivantes, selon le cas :
Méthode 1
Si vous exécutez Windows 10 64 bits, version 20H2 (19042.xxx), vous devez installer la version
86.0.622.56 du navigateur Edge ou une version ultérieure qui inclut le correctif pour ce problème. Pour
voir le numéro de version dans Edge, sélectionnez Paramètres > à propos de Edge.
Pour mettre à jour manuellement le navigateur Edge, suivez les étapes suivantes :
1. Démarrer Microsoft Edge .
2. Sélectionnez le Paramètres (ellipses) dans le coin supérieur droit.
3. Dans le menu Paramètres, sélectionnez Aide et commentaires > sur Microsoft Edge .
NOTE
Edge recherche automatiquement les mises à jour.
IMPORTANT
Suivez attentivement les étapes de cette méthode. Des problèmes graves peuvent se produire si vous modifiez le
Registre de façon incorrecte. Avant de modifier le Registre, sauvegardez-le pour restauration en cas de problèmes.
Ajoutez l’autorisation Contrôle total au compte Administrateurs. Pour cela, procédez comme suit :
1. Démarrez l’Éditeur du Registre. Pour ce faire, sélectionnez Démarrer, tapez regedit, puis
sélectionnez Éditeur du Registre dans les résultats de la recherche.
2. Dans l’Éditeur du Registre, cliquez avec le bouton droit sur
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Microsoft Edge la sous-
clé, puis sélectionnez Autorisations.
3. Dans la fenêtre Autorisations qui s’ouvre, sélectionnez Avancé.
4. En haut de la fenêtre Sécurité avancée Paramètres, sélectionnez Modifier en dessous du
propriétaire répertorié.
5. Dans la fenêtre Sélectionner un utilisateur, un ordinateur, un compte de service ou un groupe,
tapez le nom de votre compte d’utilisateur Windows (ou votre adresse de messagerie si vous avez
un compte Microsoft) dans la zone Entrer le nom de l’objet à sélectionner, puis sélectionnez Vérifier
les noms pour valider le nom du compte.
6. Sélectionnez deux fois OK .
7. Dans la fenêtre Autorisations, sélectionnez le groupe Utilisateurs, puis cochez la case
Autoriser les autorisations Contrôle total.
NOTE
Pour accorder des autorisations uniquement à votre compte d’utilisateur au lieu du groupe Utilisateurs,
sélectionnez Ajouter, suivez les étapes de l’Assistant Ajout, puis accordez les autorisations Contrôle total à
ce compte.
Plus d’informations
SQL Server Le programme d’installation s’attend à ce que les administrateurs ont des autorisations d’accès en
lecture/écriture sur toutes les sous-clés sous , où le programme d’installation recherche les mises à jour SQL
Server HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall installées. Toutefois, dans
certains cas, le système fournit aux administrateurs uniquement des autorisations de lecture sur les sous-clés,
comme c’est le cas, par exemple, sur Microsoft Edge.
Une prochaine SQL Server mise à jour de maintenance modifiera l’exigence d’accès afin que le programme
d’installation n’a besoin que d’autorisations de lecture sur toutes les sous-clés sous
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall .
Description du dossier Cache de mise à jour dans
SQL Server
15/08/2021 • 2 minutes to read
Cet article explique pourquoi ce dossier est créé et à quoi il est utilisé.
Version du produit d’origine : SQL Server 2008, SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL
Server 2017 sur Windows (toutes les éditions)
Numéro de la ko d’origine : 3196535
Résumé
Le dossier Cache de mise à jour Microsoft SQL Server est trouvé à l’emplacement :
C:\Program Files\Microsoft SQL Server\<m.n>\Setup Bootstrap\Update Cache .
Cet article fournit des informations pour vous aider à comprendre pourquoi ce dossier est créé et à quoi il est
utilisé.
Plus d’informations
Quand ce dossier est-il créé et à quoi ser t-il ?
Lorsque vous installez une mise à jour SQL Server (mise à jour cumulative, mise à jour critique ou
Service Pack), le support d’installation de mise à jour est mis en cache dans SQL Server cache de mise à
jour. Les entrées sont créées à partir du contenu du dossier multimédia mis en cache et sont utilisées
pour désinstaller (si nécessaire) la mise à jour la plus récente qui a été appliquée à Add/Remove Programs
un composant particulier. Le dossier peut contenir plusieurs mises à jour antérieures, ce qui permet la
suppression séquentielle de ces mises à jour si nécessaire.
Une variante de ce modèle se produit lorsqu’un composant a été installé par un fichier MSI autonome au
lieu de SQL Server le programme d’installation. Ces composants sont remplacés sur place en remplaçant
le fichier MSI précédent par le nouveau, sans conserver un historique des versions précédentes. Le fichier
MSI d’origine est requis pour les opérations de désinstallation et de réparation.
Quand ce dossier est-il nettoyé ou supprimé ?
Lorsque tous les correctifs sont supprimés de toutes les instances ou lorsque le produit est désinstallé.
Pourquoi le dossier continue-t-il à augmenter en taille ?
La taille du dossier augmente à chaque mise à jour appliquée à SQL Server instance. Cette croissance se
produit car chaque version antérieure doit être mise en cache. Ce comportement garantit que vous
pouvez toujours accéder à une mise à jour antérieure si nécessaire.
Que se passe-t-il si vous supprimez ce dossier ou si vous supprimez son contenu ?
Si le dossier cache de mise à jour ou certains correctifs sont supprimés de ce dossier, vous ne pouvez plus
désinstaller une mise à jour de votre instance SQL Server, puis revenir à une version de mise à jour
antérieure. Dans ce cas, les entrées pointent vers des binaires non existants et, par conséquent, le
processus Add/Remove Programs de désinstallation ne fonctionne pas. Par conséquent, Microsoft vous
encourage vivement à conserver le dossier et son contenu intacts.
S’applique à
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server Développeur 2012
SQL Server 2012 Enterprise
SQL Server 2012 Enterprise Core
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Express
SQL Server 2014 Standard
SQL Server Web 2014
SQL Server Développeur 2016
SQL Server 2016 Enterprise
SQL Server 2016 Enterprise Core
SQL Server 2016 Express
SQL Server 2016 Standard
SQL Server Web 2016
SQL Server 2017 sur Windows (toutes les éditions)
Message d’erreur lorsque vous essayez d’installer
SQL Server 2008 R2
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre les diverses erreurs qui se produisent lorsque vous essayez d’installer SQL
Server 2008 R2.
Version du produit d’origine : SQL Server 2008 R2 Original KB number: 2449398
Symptômes
Lorsque vous essayez d’installer Microsoft SQL Server 2008 R2, vous recevez un ou plusieurs des messages
d’erreur suivants ou vous recevez un ou plusieurs des symptômes suivants. En outre, vous ne pouvez pas
poursuivre l’installation.
Messages d’erreur ou symptômes d’installation
Message d’erreur 1
Message d’erreur 2
Setup.rll n’est pas conçu pour s’exécuter sur Windows ou il contient une erreur.
Message d’erreur 3
Message d’erreur 4
Setup.exe badimage.
Message d’erreur 5
Une erreur s’est produite pendant le processus de connexion en raison d’un support non bon.
Message d’erreur 6
Le fichier cabinet « Sql.cab » requis pour cette installation est endommagé et ne peut pas être utilisé.
Message d’erreur 7
Symptôme 1
Vous ne pouvez pas sélectionner l’installation x64 bits.
Symptôme 2
Certains composants sont manquants dans la page Sélectionner un composant du programme
d’installation.
Messages d’erreur dans SQL Server fichiers journaux du programme d’installation
NOTE
Pour plus d’informations SQL Server les fichiers journaux du programme d’installation, consultez la rubrique SQL Server
Books Online: View and Read SQL Server Setup Log Files.
Message d’erreur 1
Erreur 2337
Message d’erreur 2
Message d’erreur 3
Message d’erreur 4
La localisation ENU n’est pas prise en charge par cet SQL Server Multimédia.
Message d’erreur 5
Le handle de démarrage Moteur de base de données de l'Summary.txt n’a pas pu être trouvé
Message d’erreur 6
Cause
Ce problème peut se produire pour l’une des raisons suivantes :
Le support d’installation est endommagé.
La source d’installation est endommagée.
Résolution
Pour résoudre le problème, utilisez l’une des méthodes suivantes :
Téléchargez de SQL Server image à partir de l’emplacement d’origine, puis réexécutez le programme
d’installation.
Si vous avez installé SQL Server sur un réseau d’ordinateur, réinstallez-le à partir d’un lecteur local, puis
réexécutez le programme d’installation.
Renommons le fichier Setup.rll. Pour cela, procédez comme suit :
1. Ouvrez Windows Explorer. Pour ce faire, cliquez sur Démarrer, sur Tous les programmes, sur
Accessoires, puis sur Windows Explorer.
2. Recherchez, puis cliquez sur le dossier :
C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap\SQLServer2008R2\resources\1033 .
3. Cliquez avec le bouton droit sur Setup.rll, puis cliquez sur Renommer.
Voir l’image
IMPORTANT
Les installations de différentes versions linguistiques de SQL Server instances sur le même ordinateur ne sont pas
pris en charge.
Plus d’informations
Les messages d’erreur mentionnés dans la section Symptômes peuvent avoir d’autres causes. Si les étapes de la
section Résolution ne résolvent pas le problème, vous pouvez être confronté à un autre problème.
Pour plus d’informations sur l’installation SQL Server 2008 R2, voir How to: Install SQL Server 2008 R2
(Setup).
Pour plus d’informations sur les problèmes connus lors de l’installation de SQL Server sur Windows 7 ou
sur Windows Server 2008 R2, voir Problèmes connus lors de l’installation de SQL Server sur Windows 7
ou Windows Server 2008 R2.
S’applique à
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
Code d’erreur du journal des événements
d’application 1642 même si la mise à jour SQL
Server été appliquée avec succès
13/08/2021 • 2 minutes to read
Cet article fournit plus d’informations sur le message d’erreur 1642 qui est signalé dans le journal des
événements de l’application si la mise à jour SQL Server mise à jour est appliquée avec succès.
Version du produit d’origine : SQL Server 2016, SQL Server 2014, SQL Server 2012 Developer, SQL Server
2012
Numéro de la ko d’origine : 4230836
Symptômes
Lorsque vous installez une mise à jour cumulative sur Microsoft SQL Server, l’installation peut se terminer
correctement. Toutefois, il se peut que vous trouviez l’erreur suivante consignée dans le journal des événements
d’application du système :
Log Name: Application
Source: MsiInstaller
Date: date time
Event ID: 1024
Task Category: None
Level: Error
Keywords: Classic
User: SYSTEM
Computer: host_name
Description:
Product: SQL Server 2016 Database Engine Services - Update ' {DDCDC225-F14E-411F-925A-7CF68238240F}' could
not be installed. Error code 1642. Windows Installer can create logs to help troubleshoot issues with
installing software packages. Use the following link for instructions on turning on logging support:
http://go.microsoft.com/fwlink/?LinkId=23127
Event Xml:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="MsiInstaller" />
<EventID Qualifiers="0">1024</EventID>
<Level>2</Level>
<Task>0</Task>
<Keywords>0x80000000000000</Keywords>
<TimeCreated SystemTime="date time" />
< EventRecordID>463708</EventRecordID>
< Channel>Application</Channel>
<Computer>host_name</Computer>
<Security UserID="user_id" />
</System>
<EventData>
<Data>SQL Server 2016 Database Engine Services</Data>
< Data>{DDCDC225-F14E-411F-925A-7CF68238240F}</Data>
<Data>1642</Data>
<Data>(NULL)</Data>
<Data>(NULL)</Data>
<Data>(NULL)</Data>
<Data>
</Data>
<Binary>7B42463645333843342D443830312D343530382D394536312D3236463545303544363045437D207B44444344433232352D46
3134452D343131462D393235412D3743463638323338323430467D2031363432</Binary>
</EventData>
</Event>
Cause
Ce problème se produit dans plusieurs scénarios dans lesquels un échec du package du programme
d’installation MSI est consigné dans le journal des événements de l’application, car l’appel d’installation à l’API
ne reçoit pas de liste de fichiers à partir du MsiGetPatchFileList MSP (Windows Installer patch file).
Résolution
Vous pouvez ignorer ce message en toute sécurité dans le journal des événements de l’application lorsque les
conditions suivantes sont vraies :
Le programme d’installation SQL Server mise à jour cumulative s’est correctement terminé.
Aucun message d’erreur n’est enregistré dans Summary.txt fichier.
Pour plus d’informations, voir View and Read SQL Server Setup Log Files.
Erreur si vous modifiez le chemin d’accès au
répertoire des composants partagés sur l’écran
Sélection de fonctionnalité lorsque vous installez
SQL Server 2008 sur un ordinateur
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous modifiez le chemin d’accès dans le
répertoire des composants partagés de l’écran Sélection des composants de l’Assistant Installation d’Install SQL
Server 2008.
Version du produit d’origine : SQL Server 2008
Numéro de la ko d’origine : 955458
Symptômes
Vous essayez d’installer Microsoft SQL Server 2008 sur un ordinateur exécutant une version Itanium (IA-64) de
Windows. Toutefois, si vous modifiez le chemin d’accès dans le répertoire des composants partagés de l’écran
Sélection des composants de l’Assistant Installation d’Install SQL Server 2008, vous recevez le message d’erreur
suivant lorsque vous cliquez sur Suivant :
Cause
Ce problème se produit car l’Assistant Installation SQL Server 2008 ne vous permet pas de spécifier le chemin
d’accès au dossier InstallSharedWowDir. Ce chemin d’accès est requis pour installer des composants partagés
dans l’installation SQL Server 2008. Vous pouvez uniquement spécifier le chemin d’accès au dossier
InstallSharedDir.
NOTE
Pour plus d’informations sur les paramètres INSTALLSHAREDDIR et INSTALLSHAREDWOWDIR, consultez la section Plus
d’informations.
Solution de contournement
Pour contourner ce problème, utilisez l’une des méthodes suivantes.
Plus d’informations
Lorsque vous installez SQL Server 2008 sur un ordinateur exécutant une version 64 bits de Windows, les
fichiers de composants partagés sont installés par les paramètres d’installation dans deux dossiers par défaut
distincts, comme répertorié dans le tableau suivant :
Pour plus d’informations sur ces paramètres et d’autres paramètres d’installation pour l’installation SQL Server,
voir le fichier SQL Server Setup Help (S10ch_setup.chm). Le fichier S10ch_setup.chm se trouve dans le dossier
du DVD SQL Server 2008 : drive:\IA64\Help\1033 .
NOTE
L’espace réservé au lecteur est la désignation de lecteur de votre lecteur DVD.
Références
How to: Install SQL Server 2008 from the Command Prompt
Message d’erreur expiré pour la période
d’évaluation lors de l’SQL serveur
13/08/2021 • 5 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez des outils Microsoft SQL Server
tels que SQL Server Management Studio (SSMS) ou SQL Profileur.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 971268
Symptômes
Vous pouvez rencontrer le message d’erreur suivant lorsque vous utilisez des outils SQL Server tels que SQL
Server Management Studio (SSMS) ou SQL Profileur :
La période d’évaluation a expiré. Pour plus d’informations sur la mise à niveau de votre logiciel d’évaluation,
consultez la https://www.microsoft.com/sql/howtobuy
En outre, vous pouvez voir le message d’erreur suivant lorsque vous essayez de vous connecter à une
installation SQL Server instance expirée :
Une erreur liée au réseau ou à l’instance s’est produite lors de l’établissement d’une connexion SQL Server.
Le serveur n’a pas été trouvé ou n’est pas accessible. Vérifiez que le nom de l’instance est correct et que SQL
Server est configuré pour autoriser les connexions distantes. (fournisseur : fournisseur de canaux nommé,
erreur : 40 - Could not open a connection to SQL Server)
NOTE
Le message d’erreur de connectivité est un message générique et n’est pas toujours lié à une installation expirée d’SQL
Server instance.
Cause
Le problème se produit généralement lorsque vous exécutez une instance d’évaluation de SQL Server et que la
période d’évaluation a expiré.
NOTE
Dans le cas de SQL Server 2008, vous pouvez voir ce message d’erreur même après la mise à niveau vers une version
sous licence en raison d’un bogue connu.
Résolution
Cas 1 : vous avez une version expirée de l’SQL d’évaluation du ser veur
NOTE
Cela s’applique également aux scénarios où seuls les outils sont installés à partir d’une version d’évaluation.
Pour mettre à niveau l’édition d’évaluation vers une édition de vente au détail, vous pouvez consulter les
rubriques suivantes dans Books Online :
Mise à niveau vers une autre édition de SQL Server 2012 (installation)
Mises à niveau de & version prise en charge (SQL Server 2016)
NOTE
Dans l’une de ces rubriques, vous pouvez sélectionner l’outil de sélection de version dans la partie
supérieure pour sélectionner une rubrique pertinente pour votre environnement. For SQL Server 2008
you can also refer to the KB article: Upgrade to a Different Edition of SQL Server (Setup). For SQL Server
2005, check the following KB article Upgrade to a Different Edition of SQL Server (Setup)
NOTE
La taille de base de données relationnelle maximale SQL éditions Express est de 10 gigaoctets (Go).
Scénario 2 : vous ne pouvez pas démarrer une édition expirée de votre édition d
Enterprise d’évaluation car la période d’évaluation a expiré
Si la taille de la base de données est inférieure à 10 gigaoctets (Go), vous pouvez suivre les étapes
suivantes :
1. Installez une édition express du produit.
2. Recherchez les fichiers de données (mdf et ldf) de votre base de données.
3. Attachez ces fichiers à l SQL édition express.
NOTE
Avant d’attacher les fichiers de données à SQL Express Edition, si ces fichiers se trouvent
actuellement dans le répertoire de données par défaut de l’ancienne instance, vous pouvez
déplacer les fichiers de base de données de leur emplacement actuel vers le nouveau répertoire de
données pour la nouvelle installation ou vers un autre emplacement sur le serveur.
Cas 3 : vous êtes en cours d’exécution dans ce problème dans les environnements SQL
Ser ver 2008 même après la mise à niveau vers une version sous licence de SQL Ser ver
Dans ce cas, vous avez les options suivantes.
NOTE
Vous remarquerez également ce problème sur les systèmes où vous avez installé à l’origine l’édition d’évaluation
des outils partagés, puis la mise à niveau vers une version sous licence.
Option 1
Appliquez le Service Pack 1 SQL Server 2008 avant de mettre à niveau l’édition d’évaluation vers
une édition sous licence.
NOTE
Si vous avez déjà effectué la mise à niveau de l’édition avant d’appliquer le Service Pack 1 pour SQL server
2008, vous devez suivre toutes les étapes mentionnées dans la section Option 2 pour résoudre le
problème. Le Service Pack évitera uniquement les problèmes qui impliquent des mises à niveau d’édition
ultérieures.
Option 2
Utilisez la procédure suivante pour résoudre le problème :
IMPORTANT
Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre.
Toutefois, des problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par
conséquent, veillez à suivre ces étapes scrupuleusement. Pour une meilleure protection, sauvegardez le
registre avant de le modifier. Vous pouvez alors le restaurer en cas de problème. Pour plus d’informations
sur la façon de la back up et de la restauration du Registre, voir l’article suivant : Comment le restaurer
dans Windows.
1. Cliquez sur Démarrer, cliquez sur Exécuter, tapez Regedt32, puis cliquez sur OK.
2. Recherchez et cliquez sur la clé suivante dans l’Éditeur du Registre :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\ConfigurationState
S’applique à
SQL Server Développeur 2008
SQL Server 2008 Enterprise
SQL Server 2008 Standard
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server Développeur 2012
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Express
SQL Server 2014 Standard
La vérification de la règle Fusion ATL échoue
lorsque vous essayez de désinstaller une instance
SQL Server 2008 ou lorsque vous essayez de
supprimer un nœud SQL Server 2008 d’un cluster
deover
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez de désinstaller une instance
SQL Server ou lorsque vous essayez de supprimer un nœud SQL Server d’un cluster deover.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 955792
Symptômes
Lorsque vous essayez de désinstaller une instance Microsoft SQL Server ou lorsque vous essayez de supprimer
un nœud SQL Server d’un cluster deover, la vérification de la règle Fusion ATL échoue. Lorsque cela se produit,
le programme d’installation échoue et vous recevez le message d’erreur suivant : un redémarrage de
l’ordinateur est nécessaire en raison d’une fusion ATL rompue. Vous devez redémarrer votre ordinateur avant de
continuer.
Cause
Ce problème se produit lorsque les conditions suivantes sont remplies :
Le SQL Server fichiers de support du programme d’installation a été supprimé par la tentative de
désinstallation actuelle ou par l’action de suppression de nœud.
L’assembly Fusion ATL n’a pas été installé dans le Global Assembly Cache (GAC). Étant donné qu’une
désinstallation ou une action de suppression de nœud n’installe pas le composant d’installation SQL
Server Setup Support Files, la règle Fusion ATL échoue.
Solution de contournement
Pour contourner ce problème, installez manuellement les fichiers de support du programme d’installation SQL
Server à partir du support d’installation avant d’exécuter la désinstallation ou l’action de suppression du nœud
du fichier SQL Server Setup. Pour cela, procédez comme suit :
1. Insérez le support d SQL Server d’installation d’origine.
2. Dans Windows Explorer, recherchez le fichier Sqlsupport.msi dans le dossier suivant
Drive:\Platform\setup :
NOTE
L’espace réservé au lecteur représente la lettre de lecteur du support d’installation. L’espace réservé de plateforme
représente l’architecture de processeur de votre installation. Par exemple, l’architecture du processeur peut être
désignée comme x86, x64 ou IA-64.
3. Double-cliquez sur Sqlsupport.msi fichier.
4. Suivez les instructions pour terminer l’installation des fichiers de SQL Server du programme
d’installation.
Les UC SQL Server non applicables sont
répertoriées dans WSUS, MU ou ConfMgr
12/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez les mises à jour logicielles
WSUS, Microsoft Update (MU) ou Microsoft System Center Configuration Manager pour appliquer des mises à
jour à Microsoft SQL Server.
Version du produit d’origine : SQL Server 2016, SQL Server 2014, SQL Server 2012 Enterprise, SQL Server
2012, SQL Server 2017 sur Windows (toutes les éditions), SQL Server 2014
Numéro de la ko d’origine : 4047327
NOTE
La logique de détection de Microsoft Update est mise à jour pour les nouvelles mises à jour cumulatives et les mises à
jour GDR à l’avenir. Cet article est valide pour les publication de maintenance suivantes :
SQL Server de mise à jour SQL Server 2014 : toutes les publications de mise à jour un jour
SQL Server 2016 : toutes les publications cu pour les lignes de base RTM et SP1. SP2 baseline CU releases through
CU13
SQL Server 2017 : publication de cu cu de référence RTM via CU18
SQL Server 2019 : Aucun
Toutes les publication de sécurité jusqu’en 2020
Pour plus d’informations sur les mises à jour de la logique de détection pour les nouvelles mises à jour cu et les
futures mises à jour de sécurité, voir Mises à jour de la logique de détection Microsoft Update pour la
maintenance SQL Server.
Symptômes
Lorsque vous utilisez les mises à jour logicielles WSUS, MU ou System Center Configuration Manager pour
appliquer des mises à jour à SQL Server, vous remarquez que certaines des mises à jour cumulatives
répertoriées ne s’appliquent pas à votre installation SQL Server.
Cause
SQL Server mises à jour sont publiées dans le service de mise à jour. Les canaux de distribution tels que
Windows service de mise à jour automatique intégré et system Configuration Manager Software Updates
Management peuvent analyser update pour SQL Server mises à jour.
Chaque SQL Server mise à jour répertoriée dans Update possède une liste de règles d’applicabilité qui sont
évaluées afin de déterminer si une mise à jour est applicable.
Pour qu’une mise à jour un jour soit affichée comme applicable à une installation SQL Server, au moins une
mise à jour à jour doit être installée sur cette ligne de base des mises à jour.
NOTE
La ligne de base dans ce contexte fait référence à une version RTM ou Service Pack.
Par exemple, envisagez un scénario dans lequel la dernière mise à jour cumulative pour SQL Server 2014
Service Pack 2 (SP2) est la mise à jour cumulative 6 (CU6). Actuellement, la dernière mise à jour installée sur le
système est SQL Server 2014 SP2. Vous exécutez une analyse de mise à jour du système et vous remarquez
qu’aucune UTIL n’est répertoriée comme applicable. Vous téléchargez et installez manuellement SQL Server
mise à jour cumulative 2014 SP2 1. Vous exécutez à nouveau l’analyse de la mise à jour et vous remarquez
maintenant que SQL Server 2014 SP2 cumulative 6 est répertorié comme applicable.
Résolution
Pour résoudre ce problème, téléchargez et installez manuellement SQL Server mise à jour cumulative qui
s’applique à la build de référence. Une fois cette mise à jour effectuée, la dernière mise à jour cumulative publiée
dans la mise à jour est répertoriée le cas échéant.
Plus d’informations
Ce comportement est inhérent au produit. L’administrateur système peut installer une mise à jour un jour pour
déterminer la branche de maintenance à SQL Server suivre.
Chaque ligne de base de maintenance (RTM ou Service Pack) comprend deux branches de maintenance :
Branche GDR (General Distribution Release) qui contient uniquement security et autres correctifs
critiques.
Branche cu qui contient la sécurité et d’autres correctifs critiques, ainsi que tous les autres correctifs pour
la ligne de base.
Actuellement, la logique de détection de mu est construite afin que les instances sur une ligne de base de
maintenance ou le long de la branche GDR soient proposées à la branche GDR.
Les utilisateurs doivent installer de manière proactive au moins une mise à jour un cu pour aligner l’instance sur
la branche cu. Toutefois, une fois cette étape effectuée, vous ne pouvez pas revenir à la branche GDR tant que la
ligne de base de l’instance n’a pas été réinitialisée en passant au Service Pack suivant ou que toutes les CUS de
la ligne de base ne sont pas désinstallées manuellement. Si toutes les CUS sont désinstallées, cela déplace
l’instance vers la branche de RDA ou la ligne de base de maintenance.
Cette logique permet de réduire le nombre par défaut de modifications requises dans le cas d’une mise à jour
de sécurité ou d’une autre mise à jour critique. Les instances qui se trouve sur la branche CU doivent
nécessairement accepter toutes les mises à jour dans le cas où une version de sécurité ou une autre version
critique requise est fournie pour la ligne de base. Cela inclut toutes les modifications cumulatives non de
sécurité pour la ligne de base jusqu’au point de la mise à jour de sécurité requise.
S’applique à
SQL Server 2017 sur Windows (toutes les éditions)
SQL Server Développeur 2016
SQL Server 2016 Enterprise
SQL Server 2016 Standard
SQL Server Web 2016
SQL Server 2016 Business Intelligence
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Standard
SQL Server Web 2014
SQL Server 2014 Business Intelligence
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Business Intelligence
SQL Server’installation échoue si le compte
d’installation n’a pas certains droits d’utilisateur
14/08/2021 • 7 minutes to read
Cet article vous aide à résoudre le problème qui se produit lors de l’installation ou de la mise à niveau Microsoft
SQL Server une fois la sécurité renforcée.
Version du produit d’origine : SQL Server 2008, SQL Server 2008 R2, SQL Server 2012
Numéro de la ko d’origine : 2000257
Symptômes
Prenons le cas de figure suivant. Pour renforcer la sécurité, vous supprimez certains droits d’utilisateur par
défaut sur le groupe Administrateurs local sur un Windows d’exploitation. En préparation de la configuration de
SQL Server sur ce système, vous ajoutez le compte d’installation au groupe Administrateurs local.
Dans ce scénario, si vous installez ou SQL Server, le processus d’installation peut échouer et vous recevez divers
messages d’erreur comme indiqué dans les sections suivantes.
Scénario 1 : Pour une nouvelle installation, le programme d’installation échoue et vous recevez le
message d’erreur suivant :
L’accès est refusé En outre, vous pouvez remarquer des messages d’erreur semblables à ce qui suit
dans le fichier Detail.txt : 2009-01-02 13:00:17 SQLEngine: --SqlServerServiceSCM : Attente de
l’événement nt « Global\sqlserverRecComplete$NIIT » à créer 2009-01-02 13:00 0:20 SQLEngine: --
SqlServerServiceSCM: Waiting for nt event 'Global\sqlserverRecComplete$NIIT' or sql process
handle to be signaled 2009-01-02 13:00:20 Slp: Configuration action failed for feature
SQL_Engine_Core_Inst during timing ConfigRC and scenario ConfigRC. 2009-01-02 13:00:20 Slp :
Accès refusé 2009-01-02 13:00:20 Slp : Échec de l’action de configuration pour la fonctionnalité
SQL_Engine_Core_Inst lors du minutage ConfigRC et scénario ConfigRC. 2009-01-02 13:00:20 Slp :
System.ComponentModel.Win32Exception : Accès refusé 2009-01-02 13:00:20 Slp : sur
System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean
throwIfExited) 2009-01-02 13:00:20 Slp: at System.Diagnostics.Process.GetProcessHandle(Int32
access, Boolean throwIfExited) 2009-01-02 13:00:20 Slp: at
System.Diagnostics.Process.OpenProcessHandle() 2009-01-01- 02 13:00:20 Slp : à
System.Diagnostics.Process.get_Handle() 2009-01-02 13:00:20 Slp :
Microsoft.SqlServer.Configuration. SqlEngine.SqlServerServiceBase.WaitSqlServerStart(Process
processSql) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.
SqlEngine.SqlServerServiceSCM.StartSqlServer(String[] parameters) 2009-01-02 13:00:20 Slp: at
Microsoft.SqlServer.Configuration. SqlEngine.SqlServerStartup.StartSQLServerForInstall(String
sqlCollation, String masterFullPath, Boolean isConfiguringTemplateDBs) 2009-01-02 13:00:20 Slp: at
Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.ConfigSQLServerSystemDataba
ses(EffectiveProperties properties, Boolean isConfiguringTemplateDBs, Boolean useInstallInputs)
2009-01-02 13:00:20 Slp: at
Microsoft.SqlServer.Configuration.SqlEngine.SqlEngineDBStartConfig.DoCommonDBStartConfig(Con
figActionTiming timing) 2009-01-02 13:00:20 Slp: at Microsoft.SqlServer.Configuration.
SqlEngine.SqlEngineDBStartConfig.Install(ConfigActionTiming timing, Dictionary
2 actionData, PublicConfigurationBase spcb) 2009-01-02 13:00:20 Slp: at
Microsoft.SqlServer.Configuration.SqlConfigBase.PrivateConfigurationBase.Execute(ConfigActionScenario
scenario, ConfigActionTiming timing, Dictionary
2 actionData, PublicConfigurationBase spcbCurrent) 2009-01-02 13:00:20 Slp: at
Microsoft.SqlServer.Configuration.SqlConfigBase.SqlFeatureConfigBase.Execute(ConfigActionScenari
o scenario, ConfigActionTiming timing, Dictionary'2 actionData, PublicConfigurationBase
spcbCurrent) 2009-01-02 13:00:20 Slp: at
Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.ExecuteAction(String actionId)
2009-01-02 13:00:20 Slp: at
Microsoft.SqlServer.Configuration.SqlConfigBase.SlpConfigAction.Execute(String actionId, TextWriter
errorStream) 2009-01-02 13:00:20 Slp : Exception : System.ComponentModel.Win32Exception. 2009-
01-02 13:00:20 Slp : Source : Système. 2009-01-02 13:00:20 Slp : Message : l’accès est refusé.
Scénario 2 : les mises à niveau vers SQL Server 2008 signaleront le message d’erreur suivant sur la
Engine_SqlEngineHealthCheck règle :
Scénario3 : Échec d’une nouvelle installation SQL Server 2012 ou SQL Server 2008 R2
Vous voyez le message d’erreur suivant lorsque vous essayez d’installer une nouvelle instance de SQL
Server 2012 ou SQL Server 2008 R2 :
Scénario 4 : l’installation SQL Server 2012 ou une instance ultérieure échoue lorsque vous spécifiez un
partage réseau (chemin UNC) pour l’emplacement du répertoire de sauvegarde. Lorsque ce problème se
produit, vous recevez le message d’erreur suivant :
SQL Server d’installation n’a pas le privilège SeSecurityPrivilege sur le serveur de fichiers spécifié
dans le chemin <UNC backup location> d’accès. Ce privilège est nécessaire dans l’action de
paramètre de sécurité des dossiers SQL Server programme d’installation. Pour accorder ce privilège,
utilisez la console stratégie de sécurité locale sur ce serveur de fichiers pour ajouter SQL Server de
configuration à la stratégie « Gérer le journal d’audit et de sécurité ». Ce paramètre est disponible
dans la section « Attributions des droits d’utilisateur » sous Stratégies locales dans la console
Stratégie de sécurité locale.
NOTE
Ce problème se produit car le compte SQL Server d’installation n’a pas d’autorisations sur le serveur de fichiers
SeSecurityPrivilege qui héberge le partage réseau.
Cause
Ce comportement est inhérent au produit. Outre l’ajout du compte d’utilisateur qui exécute le programme
d’installation en tant qu’administrateur local, le compte d’utilisateur du programme d’installation requiert les
droits d’utilisateur par défaut suivants pour que l’installation se termine correctement.
NOTE
Pour plus d’informations sur les autorisations requises pour installer SQL Server, voir la section « Conditions préalables »
des articles MSDN suivants :
Dossier de partage de réseau SMB CONTRÔLE TOTAL SQL Server service d’agent SQL Server
et de sécurité
Résolution
Pour ajouter les droits au compte d’administrateur local, suivez les étapes suivantes :
1. Connectez-vous à l’ordinateur en tant qu’utilisateur ayant des informations d’identification administratives.
2. Cliquez sur Démarrer, cliquez sur Exécuter, tapez Admintools du contrôle, puis cliquez sur OK.
3. Double-cliquez sur Stratégie de sécurité locale.
4. Dans la boîte de dialogue Paramètres sécurité locale, cliquez sur Stratégies locales, double-cliquez sur
Attribution des droits d’utilisateur, puis double-cliquez sur Fichiers et réper toires de sauvegarde.
5. Dans la boîte de dialogue Fichiers de sauvegarde et propriétés des répertoires, cliquez sur Ajouter un
utilisateur ou un groupe.
6. Dans la boîte de dialogue Sélectionner un utilisateur ou des groupes, tapez le compte d’utilisateur utilisé
pour l’installation, puis cliquez deux fois sur OK.
7. Répétez la procédure pour les deux autres stratégies mentionnées dans la section Cause.
8. Dans le menu Fichier, cliquez sur Quitter pour fermer la boîte de dialogue Sécurité Paramètres locale.
Plus d’informations
Pour vérifier la liste des privilèges actuellement associés au compte utilisé pour le programme
d’installation, vous pouvez utiliser l’outil AccessChk.exe client. Pour télécharger cet outil, voir AccessChk
v6.13.
Utilisation : accesschk.exe- a <setup account> *
Par exemple : c:\tools\accesschk.exe -a testdc\setupaccount *
Sample output:
SeSecurityPrivilege
SeBackupPrivilege
SeRestorePrivilege
SeSystemtimePrivilege
SeShutdownPrivilege
SeRemoteShutdownPrivilege
SeTakeOwnershipPrivilege
SeDebugPrivilege
SeSystemEnvironmentPrivilege
SeSystemProfilePrivilege
SeProfileSingleProcessPrivilege
SeIncreaseBasePriorityPrivilege
SeLoadDriverPrivilege
SeCreatePagefilePrivilege
SeIncreaseQuotaPrivilege
SeChangeNotifyPrivilege
SeUndockPrivilege
SeManageVolumePrivilege
SeImpersonatePrivilege
SeCreateGlobalPrivilege
SeTimeZonePrivilege
SeCreateSymbolicLinkPrivilege
SeInteractiveLogonRight
SeNetworkLogonRight
SeBatchLogonRight
SeRemoteInteractiveLogonRight
Pourquoi l’erreur décrite dans le scénario 4 se produit-elle SQL Server 2012 et les versions
ultérieures de SQL Server ?
Dans SQL Server 2012 et versions ultérieures, Microsoft a commencé à prise en charge des
données et des fichiers journaux sur le partage de fichiers SMB. Dans le cadre de cette
amélioration, l’expérience d’installation a été améliorée pour renforcer les contrôles afin que les
clients ne rencontrent pas d’erreurs ou de problèmes en raison d’autorisations insuffisantes après
l’installation. Dans les versions antérieures à SQL Server 2012, les clients peuvent toujours
configurer le chemin d’accès du partage réseau pour le répertoire de sauvegarde lorsque le
compte du service SQL n’est pas autorisé à effectuer la sauvegarde. Toutefois, ils rencontreront une
erreur après l’installation dans cette situation. Ces scénarios sont désormais interdits lorsque vous
démarrez la vérification d’SQL 2012 sur un partage réseau.
Le répertoire de données utilisateur dans le Registre
n’est pas un message d’erreur valide lors de
l’installation SQL Server mise à jour cumulative ou
d’un Service Pack
13/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous installez une mise à jour cumulative ou
un Service Pack pour SQL Server instance.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2565113
Symptômes
Lors de l’installation d’une mise à jour cumulative ou d’un Service Pack pour une instance SQL Server, le
processus d’installation peut échouer avec l’un des messages d’erreur suivants:
Répertoire de données utilisateur non valide dans le Registre. Vérifiez la clé DefaultData sous la ruche
d’instance pointe vers un répertoire valide.
Code d’erreur : 0x851A0043
Répertoire des journaux d’utilisateurs non valide dans le Registre. Vérifiez la clé DefaultLog sous la ruche
d’instance pointe vers un répertoire valide.
Code d’erreur : 0x851A0044
Detailed results:
Reason for failure: An error occurred during the setup process of the feature.
Next Step: Use the following information to resolve the error, and then try the setup process again.
Error description: The User Data directory in the registry is not valid. Verify DefaultData key under
the instance hive points to a valid directory.
Reason for failure: An error occurred during the setup process of the feature.
Next Step: Use the following information to resolve the error, and then try the setup
process again.
Error description: The User Log directory in the registry is not valid. Verify DefaultLog key
under the instance hive points to a valid directory.
Cause
Le problème se produit lorsque les emplacements par défaut des nouveaux fichiers de données ou journaux
d’une base de données pointent vers un emplacement non valide.
Résolution
Utilisez la procédure suivante pour résoudre le problème.
Étape 1 : définissez la valeur du répertoire de données par défaut et la valeur du répertoire des journaux
par défaut sur des chemins d’accès aux dossiers valides.
Vous pouvez définir la valeur du répertoire de données par défaut et la valeur du répertoire des journaux
par défaut à l’aide SQL Server Management Studio l’Éditeur du Registre.
Méthode 1 : utiliser SQL Server Management Studio
1. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur un serveur et cliquez sur
Propriétés.
2. Dans le panneau gauche, cliquez sur la page Paramètres de la base de données.
3. Dans les emplacements par défaut de la base de données, affichez les emplacements par
défaut actuels pour les nouveaux fichiers de données et les nouveaux fichiers journaux. Pour
modifier un emplacement par défaut, entrez un nouveau chemin d’accès par défaut dans le
champ Données ou Journal, ou cliquez sur le bouton Parcourir pour rechercher et sélectionner
un nom de chemin d’accès.
Méthode 2 : Utilisation de l’éditeur du Registre :
IMPORTANT
Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre.
Toutefois, des problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par
conséquent, veillez à suivre ces étapes scrupuleusement. Pour une meilleure protection, sauvegardez le
registre avant de le modifier. Vous pouvez alors le restaurer en cas de problème. Pour plus d’informations
sur la façon de back up et restore the registry, voir How to back up and restore the registry in Windows.
1. Démarrez l’Éditeur du Registre (Regedt32.exe) à partir de la ligne de commande.
2. Recherchez, puis cliquez sur la sous-clé de Registre :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\<MSSQL.x>\MSSQLServer .
NOTE
Dans cette sous-clé de Registre, <MSSQL.x> la valeur correspondante pour votre système. Pour
obtenir cette valeur, recherchez et cliquez sur la sous-clé de Registre :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\Instance Names\SQL\
3. Dans le panneau droit, cliquez sur l’entrée de Registre DefaultData et entrez un chemin
d’accès valide (s’il pointe vers un emplacement incorrect).
4. Dans le panneau droit, cliquez sur l’entrée de Registre DefaultLog et entrez un chemin
d’accès valide (s’il pointe vers un emplacement incorrect).
NOTE
La meilleure pratique de protection de vos fichiers de données et fichiers journaux consiste à s’assurer
qu’ils sont protégés par des listes de contrôle d’accès (ACA). Les ACA doivent être définies sur la racine du
répertoire sous lequel les fichiers sont créés.
Étape 2 : Réessayez l’installation du Service Pack ou de la mise à jour cumulative pour l’instance
concernée.
NOTE
Le programme d’installation indique que l’instance a déjà été mise à niveau et qu’il ne vous permettra pas de
sélectionner uniquement le composant Services de base de données. Vous devez sélectionner toutes les
fonctionnalités de cette instance pour que le programme d’installation continue.
Références
Afficher et lire les fichiers journaux SQL Server du programme d’installation
Descriptions du schéma d’attribution de noms et de
la zone de correction pour SQL Server packages de
mise à jour logicielle
13/08/2021 • 19 minutes to read
Cet article décrit le schéma d’attribution de noms et la zone de correction pour SQL Server packages de mise à
jour logicielle.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 822499
Report Builder for SQL Server 2008 2008_RTM_RprtBlder_CUxx_KBxxxx_10 ReportBuilder.msi (x86 uniquement)
_00_xxxx_Arch
2008_SPx_RprtBlder_CUxx_KBxxxx_10_
00_xxxx_Arch
2012_SPx_PPServer_CUxx_KBxxxxx_11_
00_xxxx_arch
Meilleures pratiques En tant que meilleure pratique, envisagez de fournir un nom que vous pouvez utiliser pour
identifier facilement les packages lors des téléchargements.
Descriptions du package
Cette section décrit chacun des packages répertoriés et leurs objectifs. L’installation d’un package MSI plus
ancien sur un package MSI plus ancien supprime l’ancienne version au profit de la version la plus récente. La
désinstallation d’une mise à jour du Feature Pack à l’aide d’un package MSI supprime complètement le
composant. Toutefois, pour le package cu principal, la désinstallation du fichier .exe entraîne une mise à jour vers
la version précédemment installée.
SQL Ser ver package de mise à jour logicielle
Nom de fichier
SQLServer2005-KBxxxxxxx-Arch-Lang.exe (For SQL Server 2005)
SQLServer2008-KBxxxxxxx-Arch.exe (For SQL Server 2008)
SQLServer2008R2-kbxxxxxx-Arch (For SQL Server 2008 R2)
SQLServer2012-kbxxxxxx-Arch (For SQL Server 2012)
Objectif
Le package SQL Server de mise à jour logicielle met à jour l’instance SQL Server à l’aide d’une collection
de tous les correctifs logiciels SQL Server créés depuis la publication du produit. Le package applique les
mises à jour à tous les composants installés si une mise à jour a été réalisée. Ce package met à jour SQL
Server DB &, Analysis Service, Integration Services, Reporting Services, Replication Engine et
Manageability.
SQL Ser ver Native Client
Nom de fichier
sqlncli.msi (For SQL Server 2005, 2008, 2008 R2, 2012)
Objectif
SQL Server Native Client est une bibliothèque de liens dynamiques (DLL) unique contenant le fournisseur
OLE DB SQL et SQL pilote ODBC. Il contient la prise en charge de l’run-time pour les applications utilisant
des API de code natif (ODBC, OLE DB et ADO) pour se connecter à SQL Server. SQL Server Native Client
utiliser pour créer de nouvelles applications ou améliorer les applications existantes qui doivent tirer parti
de nouvelles fonctionnalités SQL Server existantes. Ce programme d’installation pour SQL Server Native
Client installe les composants clients nécessaires au moment de l’utilisation pour tirer parti des nouvelles
fonctionnalités SQL Server et installe éventuellement les fichiers d’en-tête nécessaires au développement
d’une application qui utilise l’API SQL Server Native Client.
Générateur de rappor ts
Nom de fichier
ReportBuilder.msi (For SQL Server 2008)
ReportBuilder3.msi (For SQL Server 2008 R2)
Objectif
Report Builder un environnement intuitif de authoring de rapports pour les entreprises et les utilisateurs
avec pouvoir avec une Office l’apparence. Report Builder prend en charge toutes les fonctionnalités du
langage rdl (Report Definition Language), notamment la disposition flexible des données, les
visualisations de données et les fonctionnalités de texte richement mises en forme de SQL Server
Reporting Services. Le téléchargement fournit un programme d’installation autonome pour Report
Builder.
Repor t Builder Click Once
Nom de fichier
RB2ClickOnce.msi (For SQL Server 2008, SQL Server 2008 R2)
Objectif
La version Click Once de Report Builder conçue pour être démarrée à partir du Gestionnaire de rapports
ou d’SharePoint bibliothèque.
Repor ting Ser vices pour SharePoint
Nom de fichier
SharePointRS.msi (For SQL Server 2005)
rsSharePoint.msi (For SQL Server 2008, SQL Server 2008 R2 et SQL Server 2012)
Objectif
SQL Server Reporting Services Le SharePoint technologies vous permet de tirer parti des fonctionnalités
de gestion et de traitement des rapports SQL Server 2005 et 2008 dans SharePoint. Le téléchargement
fournit un élément Web De la Visionneuse de rapports, des pages d’application web et la prise en charge
de l’utilisation de Windows SharePoint Services.
SQL Rédacteur
Nom de fichier
SQLWriter.msi (For SQL Server 2005)
Objectif
Le Service SQL Writer offre des fonctionnalités de sauvegarde et de restauration des SQL Server via
l’infrastructure du service de copie parallèle de volume. Lors de l’exécution, Moteur de base de données
verrouille et dispose d’un accès exclusif aux fichiers de données. Lorsque le Service SQL Writer n’est pas
en cours d’exécution, les programmes de sauvegarde exécutés dans Windows n’ont pas accès aux fichiers
de données et les sauvegardes doivent être effectuées à l’aide SQL Server sauvegarde. Utilisez la Service
SQL Writer pour autoriser les programmes Windows de sauvegarde à copier SQL Server fichiers de
données SQL Server en cours d’exécution.
AS OLE DB
Nom de fichier
SQLServer2005_ASOLEDB9.msi (For SQL Server 2005)
SQLServer2008_ASOLEDB10.msi (For SQL Server 2008 et SQL Server 2008 R2)
SQL_AS_OLEDB.msi (For SQL Server 2012)
Objectif
Le fournisseur Analysis Services OLE DB est un composant COM que les développeurs de logiciels
peuvent utiliser pour créer des applications côté client qui parcourent les métadonnées et les données de
requête stockées dans SQL Server Analysis Services. Ce fournisseur implémente à la fois la spécification
OLE DB et les extensions de la spécification pour le traitement analytique en ligne (OLAP) et l’exploration
de données.
NOTE
SQL Server Le fournisseur Analysis Services OLE DB requiert Core XML Services (MSXML) 6.0.
ADMOMD.net
Nom de fichier
SQLServer2005_ADOMD.msi (For SQL Server 2005)
Objectif
ADOMD.NET est un modèle objet .NET Framework qui permet aux développeurs de logiciels de créer des
applications côté client qui parcourent les métadonnées et les données de requête stockées dans SQL
Server 2005 Analysis Services. ADOMD.NET est un fournisseur ADO.NET avec des améliorations pour le
traitement analytique en ligne (OLAP) et l’exploration de données.
SapBI
Nom de fichier
SapBI.msi (For SQL Server 2008, SQL Server 2008 R2 et SQL Server 2012)
Objectif
Le connecteur pour SAP BI est un ensemble de composants gérés pour le transfert de données vers ou à
partir d’un système SAP NetWeaver BI version 7.0. Le composant est conçu pour être utilisé avec les
éditions Enterprise et développeur de SQL Server 2008 ou 2008 R2 Integration Services. Pour installer le
composant, exécutez le programme d’installation spécifique à la plateforme pour les ordinateurs x86, x64
ou Itanium, respectivement. Pour plus d’informations, consultez la rubrique Lisez-moi et la rubrique
d’installation dans le fichier d’aide.
Stream Insight (client)
Nom de fichier
StreamInsightClient.msi (For SQL 2008 R2 et SQL Server 2012)
Objectif
Pour les utilisateurs actuels de StreamInsight, un agrégateur de données au moment de l’utilisation.
StreamInsight permet aux développeurs de logiciels de créer des solutions innovantes dans le domaine
du traitement d’événements complexes qui répondent à ces besoins. Il permet de surveiller, de miner et
de développer des informations à partir de flux de données continus et non liés et de corréler les
événements en constante évolution avec des charges utiles enrichies en temps quasi réel. Les
développeurs de solutions spécifiques au secteur et les développeurs d’applications personnalisées ont la
possibilité d’innover et d’utiliser des technologies éprouvées, flexibles et familières et de s’appuyer sur les
compétences de développement existantes lors de l’utilisation de la plateforme StreamInsight.
Stream Insight (ser veur)
Nom de fichier
StreamInsight.msi (For SQL Server 2008 R2 et SQL Server 2012)
Objectif
StreamInsight permet aux développeurs de logiciels de créer des solutions innovantes dans le domaine
du traitement d’événements complexes qui répondent à ces besoins. Il permet de surveiller, de miner et
de développer des informations à partir de flux de données continus et non liés et de corréler les
événements en constante évolution avec des charges utiles enrichies en temps quasi réel. Les
développeurs de solutions spécifiques au secteur et les développeurs d’applications personnalisées ont la
possibilité d’innover et d’utiliser une technologie Microsoft éprouvée, flexible et familière et de s’appuyer
sur les compétences de développement existantes lors de l’utilisation de la plateforme StreamInsight.
Synchronisation
Nom de fichier
Synchronization.msi (For SQL 2008 R2)
Objectif
Microsoft Sync Framework est une plateforme de synchronisation complète qui permet la collaboration
et l’accès hors connexion pour les applications, les services et les appareils. À l’aide du runtime Microsoft
Sync Framework (MSF), les développeurs peuvent créer des écosystèmes de synchronisation qui
intègrent n’importe quelle application, avec toutes les données de n’importe quel magasin à l’aide de
n’importe quel protocole sur n’importe quel réseau. Sync Services for ADO.NET fait partie du MSF. Sync
Services for ADO.NET permet la synchronisation entre ADO.NET bases de données activées. Étant donné
que les services de synchronisation pour ADO.NET font partie du MSF, toute base de données qui utilise
les services de synchronisation pour ADO.NET peut ensuite échanger des informations avec d’autres
sources de données qui sont pris en charge par MSF, telles que les services web, les systèmes de fichiers
ou les magasins de données personnalisés. Pour plus d’informations sur MSF, consultez le Centre de
développement Microsoft Sync Framework.
PowerPivot Excel client
Nom de fichier
PowerPivot_for_Excel_x86.msi (For SQL Server 2008 R2 et SQL Server 2012)
Objectif
Microsoft® PowerPivot pour Microsoft® Excel 2010 est un outil d’analyse de données qui fournit une
puissance de calcul sans correspondance directement dans les logiciels que les utilisateurs connaissent et
aiment déjà : Microsoft® Excel. Vous pouvez transformer des quantités de données de masse à une
vitesse incroyable en informations significatives pour obtenir les réponses dont vous avez besoin en
quelques secondes. Vous pouvez facilement partager vos résultats avec d’autres personnes.
Master Data Ser vices
Nom de fichier
MasterDataServices.msi (For SQL 2008 R2)
L’Master Data Services permet aux entreprises de normaliser les données sur qui les personnes
s’appuient pour prendre des décisions stratégiques. Grâce à Master Data Services, les organisations
informatiques peuvent centraliser la gestion des biens de données critiques à l’échelle de l’entreprise et
sur divers systèmes, permettre à davantage de personnes de gérer en toute sécurité les données maîtres
directement et de garantir l’intégrité des informations au fil du temps.
Infrastructure d’application de la couche Données
Nom de fichier
DACFramework.msi (For SQL Server 2008 R2 et SQL Server 2012)
Objectif
L’infrastructure SQL Server d’application de la couche Données est un composant basé sur le .NET
Framework et qui fournit des services de cycle de vie d’application pour le développement et la gestion
de bases de données. Les services de cycle de vie des applications incluent l’extraction, la construction, le
déploiement, la mise à niveau, l’importation et l’exportation pour les applications de niveau données dans
SQL Azure, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008 et SQL Server 2005 à SQL Server
Data Tools et SQL Server Management Studio.
Fournisseur OLEDB pour DB2
Nom de fichier
DB2OLEDB.msi (For SQL Server 2008 R2)
DB2OLEDBV4.msi (For SQL Server 2012)
Objectif
Le fournisseur OLE DB pour DB2 v4.0 offre un ensemble de technologies et d’outils permettant d’intégrer
des données vitales stockées dans des bases de données IBM DB2 à de nouvelles solutions. SQL Server
développeurs et administrateurs peuvent utiliser le fournisseur de données avec les services
d’intégration, Analysis Services, la réplication, Reporting Services et le processeur de requêtes
distribuées.
Base de données locale
Nom de fichier
SqlLocalDB.msi (For SQL Server 2012)
Objectif
Nouveauté de la famille SQL Server Express, Base de données locale est une version légère d’Express qui
dispose des mêmes fonctionnalités de programmabilité, mais elle s’exécute en mode utilisateur et
dispose d’une installation rapide, de configuration nulle et d’une courte liste des conditions préalables.
Utilisez cette méthode si vous avez besoin d’un moyen simple pour créer et utiliser des bases de données
à partir du code. Express peut être regroupé avec des Visual Studio, d’autres outils de développement de
base de données ou incorporé à une application qui nécessite des bases de données locales.
Ser vice de langue SQL Transact
Nom de fichier
TSqlLanguageService.msi (For SQL Server 2012)
Objectif
Le SQL Server Transact-SQL Language Service est un composant basé sur le .NET Framework. Ce
composant fournit des services de validation d’IntelliSense et d’IntelliSense pour Transact-SQL pour SQL
Server 2012, SQL Server 2008 R2 et SQL Server 2008.
Services de qualité des données (DQS) Problèmes ou erreurs lorsque vous utilisez DQS ou ses
composants.
Services d’intégration (SSIS) Problèmes ou erreurs associés à des composants liés à SSIS
(par exemple, BI studio, service SSIS, et ainsi de suite).
Master Data Services (MDS) Problèmes ou erreurs lorsque vous utilisez MDS et ses
composants.
Reporting Services (SSRS) Problèmes ou erreurs lorsque vous utilisez des composants
Reporting Services (par exemple, serveur de rapports,
gestionnaire de rapports, concepteur de rapports, et ainsi de
suite).
XML Tous les problèmes liés aux MSXML, System.XML, XML Lite,
etc.
Foire aux questions
1. J’ai SQL Ser ver 2008. Dois-je appliquer le package de mise à jour logicielle SQL Ser ver et le
package SQL Ser ver Native Client sur le ser veur pour obtenir tous les correctifs SNAC (par
exemple, envisagez un scénario de ser veur lié où le ser veur est également un client) ?
Si le client et le serveur sont sur le même ordinateur, l’installation individuelle du package SQL Server
Native Client’est pas nécessaire. Si le client et le serveur sont séparés, appliquez le package SQL Native
Client au client et appliquez le package de mise à jour logicielle SQL Server au serveur pour obtenir
toutes les mises à jour.
2. J’ai SQL Ser ver 2005. Dois-je appliquer le package SQL Ser ver de mise à jour logicielle et le
package SQL Ser ver Native Client sur le ser veur pour obtenir tous les correctifs SNAC ?
Oui, le package SQL Server de mise à jour logicielle et le package SQL Native Client sont requis pour
mettre à jour le serveur et doivent être téléchargés séparément.
3. Dois-je installer le Feature Pack et le package SQL Ser ver Software Update ?
Chaque article de la base de données de la base de données identifiera clairement les packages qui
doivent être appliqués à l’ordinateur pour obtenir le correctif décrit. SNAC et d’autres MSI (SQLWriter,
XMO, RS Sharepoint, RB Clickonce, etc.) sont des versions de pointe à chaque cu, même s’il n’existe aucun
nouveau correctif.
4. Comment ajusterons-nous les ko une fois que nous atteindons 999999 ?
Nos ko sont actuellement à six chiffres, mais nous passerons bientôt à 7. Le schéma indiqué ci-dessus
dans ce document utilise la base de données de la lettre plus cinq X pour un total de sept caractères afin
d’afficher notre schéma attendu une fois que nous avons franchi la marque 1 000 000. En attendant,
continuez à utiliser la ko à six chiffres donnée.
5. Comment puis-je appliquer leSQLWriter.msi feature pack ?
Pour l’instant, vous devrez exécuter leSQLWriter.msiaprès la cu ou le package COD que vous avez
téléchargé pour corriger.
S’applique à
SQL Server Développeur 2012
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
SQL Server Développeur 2008
SQL Server 2008 Enterprise
SQL Server 2008 Express
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server 2008 Standard
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2005 Édition Standard
SQL Server 2005 Standard X64 Edition
SQL Server 2005 Express Edition
SQL Server Version d’évaluation 2005
SQL Server 2005 Enterprise X64 Edition
SQL Server 2005 Enterprise Edition
SQL Server 2005 Developer Edition
SQL Server 2005 Workgroup Edition
Mises à jour de la logique de détection Microsoft
Update pour la maintenance SQL Server de
données
14/08/2021 • 3 minutes to read
S’applique à : SQL Server 2019, SQL Server 2017, SQL Server 2016
Historiquement, les lignes de base de maintenance (RTM ou Service Pack) incluent les branches de maintenance
suivantes :
Branche GDR (General Distribution Release) qui contient uniquement la sécurité et d’autres correctifs
critiques.
Une branche de mise à jour cumulative qui contient la sécurité et d’autres correctifs critiques, ainsi que tous
les autres correctifs pour la ligne de base.
La logique de détection Microsoft Update (MU) a été construite de sorte que les instances à la ligne de base de
maintenance ou le long de la branche GDR seraient proposées des mises à jour à partir de la branche GDR.
Auparavant, les utilisateurs deviez installer de manière proactive au moins une mise à jour un cu pour aligner
l’instance sur la branche cu pour la maintenance via mu. Toutefois, après cela, vous n’avez pas pu revenir à la
branche GDR pour cette instance tant que l’une des modifications suivantes n’a pas été apportée :
La planification a été réinitialisée en passant au Service Pack suivant.
L’instance a été revenir à la branche GDR ou à la ligne de base de maintenance en désinstallant toutes les
CUS.
Cette logique a été établie pour minimiser les modifications apportées à l’instance si une mise à jour de sécurité
ou une autre mise à jour critique était requise. Les instances de la branche cu doivent prendre toutes les mises à
jour publiées pour la ligne de base lorsqu’une sécurité requise ou une autre version critique s’affiche. Cela inclut
toutes les modifications non de sécurité jusqu’à la mise à jour de sécurité requise.
Toutefois, cette logique a créé des problèmes pour les utilisateurs qui tentent de gérer la maintenance de routine
de grands ensembles d’instances à l’aide de WSUS. Cela est dû au fait que la logique de mu n’a pas pu être
utilisée sans mettre à jour manuellement tous les clients afin de pouvoir y participer. Pour contourner ce
problème et éviter d’inverser des instances dans le train de mise à jour un jour sans le consentement explicite de
l’utilisateur, les modifications suivantes ont été apportées à la logique de détection de mu pour la maintenance
de la mise à jour un jour de routine et les libérations de sécurité pour les version de maintenance les plus
récentes des lignes de base prises en charge :
Mises à jour cumulatives : la logique de détection de mu permet désormais aux instances nettoyées qui sont
à la ligne de base (RTM ou SP, sans mise à jour de maintenance) ou qui sont déjà mises à jour le long de la
branche cu de recevoir la mise à jour. Il n’est pas besoin d’installer une mise à jour de mise à jour pour
qu’une instance soit proposée. Toutefois, si l’instance a une mise à jour GDR, l’instance doit toujours être
mise à jour manuellement en dehors de mu pour devenir gérable via l’automatisation de mu (WSUS).
Security Releases (GDRs) : la logique des publication de sécurité est désormais divisée en canaux suivants :
Un canal de mises à jour automatiques (Microsoft Update) conserve l’ancien comportement
historique qui nécessite l’installation d’une mise à jour un jour sur l’instance afin que la version de la
branche cu de la version de sécurité soit proposée. Cela permet de protéger les instances contre la
réception de toutes les mises à jour au lieu de recevoir uniquement les mises à jour critiques et liées à
la sécurité, sans preuve que l’utilisateur a explicitement choisi le mode de maintenance plus étendu.
Canal WSUS/Catalogue qui utilise la nouvelle logique de détection qui permet d’appliquer la version
de branche cu de la version de sécurité à une nouvelle instance de référence. Il s’agit du canal de la
version qui sera présenté aux utilisateurs qui vont sur le site web du catalogue Microsoft Update.
Cette nouvelle logique de détection mise à jour s’applique aux mises à jour de mise à jour des mises à jour et
des GDR suivantes :
SQL Server 2016 Service Pack 2 : CU14 et les CUS ultérieures
SQL Server 2017 RTM : CU19 et les CUS ultérieures
SQL Server 2019 RTM : toutes les UTIL
GDR et version de sécurité : tout commence en 2021
NOTE
Pour SQL Server 2019, la ligne de base rtm peut être la ligne de base de la version RTM (15.0.2000.5 ) ou la version de
référence rtm + RTM GDR (15.0.2070.41 ). Les deux versions fonctionnent pour cette version. Pour la version SQL
Server 2014 SP3 (12.3.6024.0 ), le nouveau modèle sera implémenté pour les versions de sécurité GDR sur la branche
CU à partir de 2021. Pour plus d’informations sur l’ancien modèle de détection Microsoft Update, voir les mises à jour
SQL Server non applicables sont répertoriées dans WSUS, MU ou ConfMgr.
Une erreur d’autorisation se produit lorsque vous
utilisez un point de montage de volume dans SQL
Server configuration
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous affectez un dossier racine du point de
montage de volume aux SQL Server système.
Version du produit d’origine : SQL Server, Windows Server 2012 Datacenter, Windows Server 2012 Datacenter,
Windows Server 2012 Standard, Windows Server 2012 Standard
Numéro de la ko d’origine : 2867841
Symptômes
Lorsque vous installez Microsoft SQL Server sur Windows Server 2012, l’installation échoue si vous affectez un
dossier système SQL Server (tel que l’emplacement des fichiers DATA ou LOG) à un dossier racine de point de
montage de volume. En outre, le message d’erreur suivant s’affiche :
Lors de la mise à jour du paramètre d’autorisation pour le dossier « T:\DATA\System Volume Information »
la mise à jour du paramètre d’autorisation a échoué pour le fichier « T:\DATA\System Volume
Information\ResumeKeyFilter.Store ». Le paramètre d’autorisation de dossier était supposé être «
D:P(A;OICI;FA;; ; ; BA)(A;OICI;FA;;; SY)(A;OICI;FA;;; CO)(A;OICI;FA;;; S-1-5-80-3880718306-3832830129-
1677859214-2598158968-1052248003) ».
Cause
Ce problème se produit car SQL Server le programme d’installation n’est pas autorisé à accéder au
\System Volume Information\ResumeKeyFilter.Store fichier.
Résolution
Pour résoudre ce problème, créez un sous-dossier dans le point de montage du volume et affectez le nouveau
sous-dossier aux dossiers système SQL Server dossiers.
Plus d’informations
Lorsque SQL Server le programme d’installation SQL Server des dossiers système, le programme d’installation
tente de modifier les autorisations des dossiers et des fichiers qu’ils contiennent. Toutefois, si vous définissez les
dossiers système sur un dossier racine du point de montage du volume, le fichier
\System Volume Information\ResumeKeyFilter.Store est créé Windows Server 2012. SQL Server Le programme
d’installation ne peut pas modifier les autorisations, car SYSTEM est la seule autorisation définie
ResumeKeyFilter.Store sur ce fichier.
Supprimer une installation partielle d’SQL serveur
13/08/2021 • 2 minutes to read
Cet article décrit la procédure de suppression d’une installation partielle de SQL serveur.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 955404
Symptômes
Lorsque vous essayez de réinstaller une instance de SQL Server après l’échec de l’installation la première fois
sur le même serveur, vous remarquerez peut-être que la deuxième tentative échoue également.
Cause
Ce problème se produit car, après l’échec de la première installation, une instance partiellement installée de SQL
Server existe sur le serveur. Le programme SQL Server’installation ne permet pas de revenir en arrière en cas
d’échec de l’installation. L’instance partiellement installée n’inclut pas l’édition de SQL Server que vous essayiez
d’installer, telle que l’édition Enterprise, l’édition Standard ou l’édition d’évaluation. Lorsque vous essayez
d’installer la même version sur le même serveur, le programme d’installation trouve l’instance existante.
Toutefois, le programme d’installation ne peut pas déterminer la version de SQL Server à installer. Par
conséquent, l’installation échoue.
Résolution
Utilisez la procédure suivante pour résoudre le problème :
1. Assurez-vous que vous avez des sauvegardes valides des bases de données pour chaque instance SQL
sur le système.
2. Accédez à Summary.Txt fichier journal d’installation du fichier et notez la commande d’installation
suggérée par le programme d’installation.
3. À l’aide d’une invite de commandes avec élévation de niveau élevé, accédez à l’emplacement de «
setup.exe » pour le répertoire des supports d’installation et exécutez la commande à <SQL Version
upgrading to> l’étape 1.
NOTE
Il est très important de vous assurer que vous exécutez les commandes sur la bonne instance, sinon vous risquez
de désinstaller une instance de travail.
4. Lancez l’interface graphique de l’Assistant Centre d’installation à partir du groupe SQL Server
programme d’installation ou en réessaiant le programme d’installation.
5. Accédez à l’élément de menu Outils et cliquez sur Installed SQL Server rapport de découverte des
fonctionnalités et vérifiez qu’il n’y en a <instance name> plus. Instances INACTIVEs affichées dans le
rapport.
6. Réessayez le programme d’installation qui ne s’est pas terminé à l’origine.
NOTE
Si vous voyez toujours des instances inactives dans le rapport de découverte même après la procédure ci-dessus, utilisez
la procédure documentée dans la procédure De correction d’un échec SQL 2005, 2008, R2 ou 2012 Install/Upgrade -
MSSQLSERVER. INACTIF pour corriger l’installation SQL Server partielle sur le système.
Voir aussi
Afficher et lire les fichiers journaux SQL Server du programme d’installation
Désinstaller une instance existante de SQL Server (installation)
Restaurer les fichiers de cache Windows installer
manquants et résoudre les problèmes qui se
produisent pendant une mise à jour SQL Server
jour
13/08/2021 • 16 minutes to read
Cet article décrit différentes procédures que vous pouvez utiliser pour résoudre diverses erreurs qui se
produisent lors de l’installation d’un Service Pack SQL Server ou d’une mise à jour cumulative en raison de
l’altération du cache du programme d’installation windows.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 969052
NOTE
Le processus décrit dans cet article fournit une assistance d’urgence uniquement et non un correctif permanent. Les
clients qui utilisent ce processus d’urgence doivent valider leur cache du programme d’installation Windows à l’aide du
package de vérification du cache du programme d’installation Windows, comme indiqué dans l’article de la base de
données de la base de données. Le cachedu programme d’installation Windows manquant nécessite une reconstruction
de l’ordinateur.
Symptômes
Lorsque vous essayez d’installer un Service Pack Microsoft SQL Server ou une mise à jour cumulative, vous
pouvez rencontrer différents messages d’erreur, qui peuvent indiquer des problèmes Windows cache du
programme d’installation. Le cache Windows Installer, situé dans le dossier c:\windows\installer, stocke les
fichiers importants pour les applications installées à l’aide de la technologie Windows Installer et ne doit pas
être supprimé. Si le cache du programme d’installation a été compromis, vous ne pouvez pas voir
immédiatement de problèmes tant que vous n’avez pas effectué une action telle que la désinstallation, la
réparation ou la mise à jour SQL Server.
Lorsque vous installez SQL Server, le programme d’installation Windows stocke les fichiers critiques dans le
cache Windows Installer (la valeur par défaut est C:\Windows\Installer). Ces fichiers sont requis pour la
désinstallation et la mise à jour des applications. Les fichiers manquants ne peuvent pas être copiés entre les
ordinateurs, car ils sont uniques.
Microsoft recommande que pour les installations SQL Server vous utilisez d’abord le processus de réparation
décrit dans les articles suivants pour vérifier votre installation actuelle :
How to: Rebuild the Registry for SQL Server 2005
How to: Repair a Failed SQL Server 2008 Installation
How to: Repair a Failed SQL Server 2008 R2 Installation
How to: Repair a Failed SQL Server 2012 Installation
Vous devez exécuter la réparation à partir du support d’installation d’origine à l’aide de la ligne de commande :
setup.exe/ACTION=REPAIR/INDICATEPROGRESS=TRUE .
Réparez d’abord les composants et fonctionnalités partagés courants, puis répétez la commande pour réparer
les instances installées. Pendant le processus de réparation, la boîte de dialogue d’installation disparaît. Tant que
la fenêtre de progression n’affiche pas d’erreur, le processus de réparation se déroule comme prévu. Si le fichier
cache du programme d’installation d’un composant spécifique est manquant, le processus de réparation
rencontre une erreur.
Cause
Ces problèmes peuvent se produire lorsque le fichier de base de données Windows Installer (.msi) ou le fichier
correctif Windows Installer (.msp) est manquant dans le cache Windows Installer. Le cache Windows installer se
trouve dans le dossier : %windir%\installer.
Lorsqu’un produit est installé à l’aide de Windows Installer, une version du fichier .msi d’origine est stockée dans
le cache Windows Installer. Chaque mise à jour du produit, telle qu’un correctif logiciel, une mise à jour
cumulative ou une configuration de Service Pack, stocke également le fichier .msp ou .msi approprié dans le
cache Windows Installer.
Toute mise à jour future du produit, telle qu’un correctif logiciel, une mise à jour cumulative ou une
configuration de Service Pack, repose sur les informations des fichiers stockés dans le cache Windows Installer.
Sans ces informations, la nouvelle mise à jour ne peut pas effectuer les transformations requises.
Résolution
Pour résoudre ces problèmes, utilisez l’une des procédures suivantes.
NOTE
Le script FindSQLInstalls.vbs collecte les informations pour corriger les chemins d’accès de package non valides. Ce script
est utilisé par rapport aux emplacements sources pour s’assurer que tous les packages MSP se trouve dans le répertoire
Windows cache du programme d’installation. Après l’exécution des commandes indiquées dans les lignes Action
nécessaires dans le fichier de sortie du script, les packages manquants sont ajoutés à nouveaux si le support source
d’origine est disponible.
Pour résoudre ces problèmes à l’aide d’un script, suivez les étapes suivantes :
1. Cliquez ici pour aller à la page FindSQLInstalls.vbs brut sur GitHub.
2. Sélectionnez tout le contenu de cette page, copiez-le et collez-le dans un fichier texte. Enregistrez le fichier
texte sous FindSQLInstalls.vbs.
3. Ouvrez une invite de commandes avec élévation de niveau élevé dans le répertoire dans lequel vous avez
enregistréFindSQLInstalls.vbsfichier, puis exécutez la commande :
Cscript FindSQLInstalls.vbs %computername%_sql_install_details.txt .
4. Ouvrez le fichier de l’étape 2 dans un éditeur de Bloc-notes, et identifiez les problèmes à l’origine de
l’échec. Pour ce faire, recherchez dans le fichier texte des modèles de chaînes tels que les suivants :
Ne pas
!!!
5. En fonction des résultats de l’étape 3, prenez les étapes requises.
NOTE
Pour plus d’informations sur ces étapes, voir la section Exemples.
6. Répétez les étapes 2 à 4 jusqu’à ce que le fichier texte créé à l’étape 2 ne contienne plus de texte qui
référence des chemins d’accès non valides ou des fichiers manquants pour le composant en cours de
mise à jour.
Exemples
Les exemples suivants sont des entrées et des explications d’actions décrites dans le fichier de sortie généré
lorsque vous exécutez le script FindSQLInstalls.vbs.
================================================================================
PRODUCT NAME : Microsoft SQL Server 2008 Database Engine Services
================================================================================
Product Code: {9FFAE13C-6160-4DD0-A67A-DAC5994F81BD}
Version : 10.2.4000.0
Most Current Install Date: 20110211
Target Install Location:
Registry Path: HKEY_CLASSES_ROOT\Installer\Products\C31EAFF906160DD46AA7AD5C99F418DB\SourceList
Package : sql_engine_core_inst.msi
Install Source: \x64\setup\sql_engine_core_inst_msi\
LastUsedSource: m;1;G:\x64\setup\sql_engine_core_inst_msi\
La ligne LastUsedSource pointe vers l’emplacement utilisé pour exécuter le programme d’installation.
Dans la ligne LastUsedSource, l’entrée m; signifie média et indique que la source d’origine est cd/DVD.
Dans l’exemple suivant, la source est un CD ou un DVD dans le lecteur G. Si l’installation s’est produite à partir
d’un dossier de fichiers ou d’un partage réseau, la ligne LastUsedSource commence par une entrée n; suivie
d’une entrée Numeric_Data_Name; et du chemin d’accès réel :
!!!! sql_engine_core_inst.msi DOES NOT exist on the path in the path G:\x64\setup\sql_engine_core_inst_msi\
!!!!
Action needed, re-establish the path to G:\x64\setup\sql_engine_core_inst_msi\
La ligne Action nécessaire vous indique le chemin d’accès complet qui doit exister afin de mettre à jour les
fichiers manquants pour le support d’installation d’origine :
Fichier cache du programme d’installation : C:\WINDOWS\Installer\19b4d2.msi
La ligne Du fichier cache du programme d’installation confirme le nom du fichier cache du programme
d’installation :
La section suivante de la sortie vous informe des actions qui sont requises pour résoudre les fichiers manquants
:
NOTE
Cette commande force l’exécutable à extraire les fichiers à l’emplacement manquant précédent, ce qui re-crée la structure
requise pour mettre à jour le cache du programme d’installation Windows avec les fichiers manquants. L’emplacement réel
varie et un seul correctif, tel qu’un Service Pack, peut être extrait à plusieurs emplacements. Chaque produit installé inclut
une section qui contient les informations suivantes pour les correctifs installés :
Nom complet :
URL de l’article de la Base de données : http://support.microsoft.com/?kbid=<value>
Patch LastUsedSource :
La ligne URL de l’article de la Base de données de la Base de données peut vous aider à télécharger n’importe
quel support de correctif, si nécessaire.
7. Copiez ce fichier msp d’origine dans le cache Windows installer %windir%\installer\ suivant :
8. Renommez le fichier msp d’origine, sql_engine_core_inst.msp, sur le nom : fichier msp mis en cache
1fdb1aec.msp.
Vous pouvez démarrer le programme d’installation de la mise à jour qui a entraîné l’erreur et reprendre le
processus de mise à jour. Vous pouvez rencontrer ce message pour un fichier cache Windows Installer
manquant pour un autre composant ou pour une autre mise à jour du même produit.
Pour obtenir la liste de tous les fichiers de cache Windows Installer manquants liés aux composants du produit
SQL Server, vous pouvez télécharger l’outil BPA SQL Server 2008 R2 mentionné dans la section Plus
d’informations.
Si le message d’erreur fait référence à un fichier de base de données Windows Installer manquant (.msi), vous
n’avez pas besoin d’effectuer les étapes 2 à 4. Au lieu de cela, vous pouvez passer directement à l’étape 5. Vous
devez localiser les .msi du support d’origine que vous avez utilisé pour installer le produit. Si ce message
d’erreur a été généré pour sql_engine_core_inst.msi, vous devez localiser ce fichier à partir du support
d’installation sous la structure de dossiers : \x64\setup\sql_engine_core_inst_msi\ . Les autres étapes sont les
mêmes.
Si vous examinez attentivement ce journal d’installation, il vous fournit déjà les informations sur le fichier MSP
d’origine qui a été utilisé par le correctif : sqlrun_sql.msp.
Pour plus d’informations sur le fichier .msp manquant dans le cache Windows Installer, suivez les étapes
suivantes :
1. Recherchez le fichier .msp manquant dans la sous-clé Windows registre correctifs du programme
d’installation :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Patches\
Pour l’exemple de journal d’installation, les informations sur le fichier .msp manquant et ses détails de correctif
correspondants sont présentes dans les entrées de Registre suivantes :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-
18\Patches\A3B085EA74A9A7640A496636F7EF9A44
Valeur : 0
Nom : LocalPackage
Données : C:\WINDOWS\Installer\145258.msp
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-
18\Products\1EB3A031CC585314E87AA527E46EECC2\Patches\A3B085EA74A9A7640A496636F7EF9A44
Valeur : 6
Nom : DisplayName
Données : GDR 2050 for SQL Server Database Services 2005 ENU (KB932555)
Vous avez maintenant tous les points d’information pour démarrer les étapes de résolution des fichiers
manquants dans le cache Windows Installer.
NOTE
Si vous utilisez SQL Server 2008 Service Pack 3 (SP3) ou une version ultérieure, vous pouvez également recevoir un
message d’erreur similaire pour les fichiers .msi manquants. À l’aide de ce message d’erreur, vous pouvez rapidement
déterminer le fichier manquant, le Service Pack à télécharger et l’endroit où vous pouvez trouver le téléchargement.
Pour plus d’informations sur l’obtention du Service Pack, voir KB2546951 -Liste des problèmes résolus par SQL
Server 2008 Service Pack 3 .
Procédure 3 : Restauration à partir de sauvegardes d’état système
Vous pouvez restaurer à partir de sauvegardes d’état système, comme décrit dans le cache Windows Installer
nécessite une reconstruction de l’ordinateur.
Plus d’informations
NOTE
Les messages d’erreur suivants se trouvent en tant que messages texte dans le journal des événements ou dans les
journaux d’installation situés dans l’un des dossiers suivants, et ils indiquent que vous devez réparer votre instance
concernée en cours de poursuite :
Pour SQL Server 2008 et SQL Server 2008 R2 : C:\Program Files\Microsoft SQL Server\100\Setup Bootstrap
Pour SQL Server 2012 : C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap
SQL Server 2005 1636 Impossible d’installer Windows 1636 Impossible d’installer Windows
fichier MSI du programme fichier MSP du programme
d’installation d’installation
NOTE
Vous devez examiner les fichiers journaux d’installation pour déterminer si des fichiers cache sont manquants. Pour
plus d’informations sur la façon de faire, voir la section Résolution.
SQL Server 2008 SP1 Aucun message d’erreur TITLE : échec SQL Server du
programme d’installation.
------------------------------
SQL Server Le programme
d’installation a rencontré l’erreur : le
fichier correctif ne peut pas
être ouver t. Le fichier est :
c:\WINNT\Installer\FileName.ms
p. Code d'0x84B20001.
------------------------------
Par SQL Ser ver 2008 SP3 build-only (les branches CU/GDR ne sont pas applicables)
M ESSA GE D’ERREUR LO RSQ UE L E
M ESSA GE D’ERREUR LO RSQ UE L E PA C K A GE DE C A C H E DU
PA C K A GE D’IN STA L L AT IO N ( M SI) P RO GRA M M E D’IN STA L L AT IO N
VERSIO N DE P RO DUIT EST M A N Q UA N T ( M SP ) EST M A N Q UA N T
SQL Server 2008 SP3 Le fichier MSI mis en cache Le fichier correctif mis en cache
C:\Windows\Installer\FileName.msi C:\Windows\Installer\FileName.msp
est manquant. Son fichier d’origine est manquant. Le fichier d’origine de
est et a été installé pour le ce fichier mis en cache est , qui peut
sql_engine_core_inst.msi être installé à partir du Service Pack
produit SQL Server 2008 Moteur de 3 pour
base de données Services à partir sql_engine_core_inst.msp SQL
NetworkPath de , version , langue Server 2008 (KB2546951) (64 bits),
VersionNumber ENU . version VersionNumber
NOTE
Vous recevez le message d’erreur suivant lorsque vous effectuez une mise à niveau :
Pour SQL Ser ver 2008 R2 SP1 uniquement (les branches CU/GDR ne sont pas applicables)
SQL Server 2008 R2 SP1 TITLE : échec SQL Server du Le fichier correctif mis en cache
programme d’installation. C:\Windows\Installer\FileName.msp
------------------------------ est manquant. Le fichier d’origine de
SQL Server Le programme ce fichier mis en cache est , qui peut
d’installation a rencontré l’erreur être installé à partir du Service Pack
suivante 1 pour
:C:\Windows\Installer\FileName sql_engine_core_inst_loc.msp
.msi. SQL Server 2008 R2 (KB2528583)
------------------------------ (64 bits), version VersionNumber .
NOTE
Vous recevez le message d’erreur suivant lorsque vous effectuez une mise à niveau :
SQL Server 2008 R2 SP1 Le fichier MSI mis en cache Le fichier correctif mis en cache
C:\Windows\Installer\FileName.msi C:\Windows\Installer\FileName.msp
est manquant. Son fichier d’origine est manquant. Le fichier d’origine de
estsql_engine_core_inst.msi et il a ce fichier mis en cache est
été installé pour le produit SQL sql_engine_core_inst_loc.msp, qui
Server 2008 R2 SP1 Moteur de base peut être installé à partir du Service
de données Services à partir de , Pack 1 pour SQL Server 2008 R2
version , NetworkPath langue (KB2528583) (64 bits), version
VersionNumber LanguageName . VersionNumber .
NOTE
Vous recevez le message d’erreur suivant lorsque vous effectuez une mise à niveau :
SQL Server 2008 R2 SP1 Le fichier MSI mis en cache Le fichier correctif mis en cache
C:\Windows\Installer\FileName.msi c:\Windows\Installer\FileName.msp
est manquant. Son fichier d’origine est manquant. Son fichier d’origine
est et il a été installé pour le produit
sql_engine_core_inst.msp est ,
C:\Windows\Installer\sql_FeatureName.msi
qui peut être installé à partir de ,
Microsoft SQL ServerVersion à version
partir C:\originalfolder de , Hotfix 2316 for SQL Server
version , langue VersionNumber 2012 (KB2679368) (64-bit)
NOTE
Dans certaines conditions dans SQL Server 2012, il se peut que le support RTM ne soit pas enregistré
correctement. Lorsque vous désinstallez une mise à jour cumulative ou un Service Pack dans ces circonstances, le
programme d’installation peut vous inviter à vous faire une demande de support RTM. Pour contourner ce
problème, indiquez le chemin d’accès au support RTM pendant le processus de suppression des correctifs.
Références
Base de données du programme d’installation
Packages de correctifs
Référentiel GitHub
SQL Server service peut ne pas démarrer après
l’installation du correctif
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit après que le programme d’installation de correctifs a
installé un correctif et tenté de redémarrer le système.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 961301
Symptôme
Il se peut que vous receviez un message vous SQL Server service n’a pas pu démarrer. Le SQL Server ne
parvient pas à redémarrer une fois que le programme d’installation du correctif a installé un correctif et a tenté
de redémarrer le système. Le message d’erreur s’affiche à l’écran ou s’affiche dans Summary.txt journal.
Cause
Cela peut être dû à un service SQL en cours d’exécution, mais le mot de passe a expiré. Lorsque le programme
d’installation des correctifs tente de redémarrer le service SQL échoue au redémarrage.
Résolution
Étapes de résolution des problèmes :
Si vous recevez un message vous SQL Server service n’a pas réussi à démarrer, pour résoudre le problème,
vérifiez les points suivants :
Déterminez l’erreur. Un message s’affiche dans l’interface utilisateur ou dans le journalsummary.txt situé à
l’emplacement suivant %programfiles%\Microsoft SQL Server\100\Setup Bootstrap\Log .
Vérifiez si le type de service de démarrage est automatique ou manuel.
Vérifiez que le compte et le mot de passe sont valides et qu’ils n’ont pas expiré. Un service peut avoir été
précédemment en cours d’exécution avec un compte ou un mot de passe non valide.
Si le service du moteur de base de données ne démarre pas, après avoir vérifié les informations
d’identification et le démarrage du service, vérifiez errorLOG. ErrorLOG peut se trouver à
C:\Program Files\Microsoft SQL Server\<Instance ID>\MSSQL\LOG l’emplacement .
Le programme d’installation cesse de répondre
lorsque vous essayez de mettre SQL Server niveau
vers une autre version
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lors de la mise à niveau d’une version antérieure de
SQL Server vers SQL Server 2012.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2712929
Symptômes
Lorsque vous essayez de mettre à niveau une SQL Server d’une version principale vers une autre version
principale (par exemple, la mise à niveau de SQL Server 2012 vers SQL Server 2017), le programme
d’installation semble cesser de répondre pendant l’étape SQLEngineConfigAction_upgrade.
Lorsque ce problème se produit, les informations d’installation semblables à ce qui suit sont consignées à la fin
du Detail.txt fichier :
(01) 2012-05-03 06:18:29 SQLEngine: --SqlEngineSetupPrivate: Setting Security Descriptor D:(<GUID value>) on
Directory <Data directory>
(01) 2012-05-03 06:18:29 Slp: Sco: Attempting to set security descriptor for directory <Data Directory>,
security descriptor D:( (<GUID value>))
(01) 2012-05-03 06:18:29 Slp: Sco: Attempting to normalize security descriptor D:( (<GUID value>))
(01) 2012-05-03 06:18:29 Slp: Sco: Attempting to replace account with sid in security descriptor D:( (<GUID
value>))
(01) 2012-05-03 06:18:29 Slp: ReplaceAccountWithSidInSddl -- SDDL to be processed: D:( (<GUID value>))
(01) 2012-05-03 06:18:29 Slp: ReplaceAccountWithSidInSddl -- SDDL to be returned: D:( (<GUID value>))
(01) 2012-05-03 06:18:29 Slp: Sco: Directory <Data Directory>is a volume mount point. VolumeName is \\?
\Volume{<VolumeID> }\
(01) 2012-05-03 08:27:50 Slp: Sco: Add DACL to underlying volume '\\?\Volume{<VolumeID }\' for directory
'<Data directory>’from SDDL 'D:((<GUID value>))'
NOTE
Le Detail.txt se trouve dans le dossier : \Program Files\Microsoft SQL Server\nnn\Setup Bootstrap\Log\timestamp .
Cause
Ce problème peut se produire si de nombreux sous-dossiers et fichiers contiennent SQL Server données.
NOTE
Ce problème est plus susceptible de se produire si la base de données est intégrée au système de fichiers NTFS à l’aide de
la fonctionnalité FILESTREAM ou FILETABLE.
Résolution
Aucune action n’est requise pour résoudre ce problème. Pour terminer la mise à niveau, laissez le programme d
SQL Server 2012 se terminer.
Plus d’informations
Le problème décrit dans la section Symptômes se produit car le programme SQL Server programme
d’installation appelle Windows SetSecurityInfo API. L’API applique une liste de contrôle d’accès discrétionnaire
(DACL) aux sous-dossiers et aux fichiers qui SetSecurityInfo contiennent SQL Server données. Ce processus
peut prendre du temps.
Références
Fonction SetSecurityInfo (aclapi.h)
Afficher et lire les fichiers journaux SQL Server du programme d’installation
Problèmes connus d’installation SQL Server sur
Windows 7 ou Windows Server 2008 R2
12/08/2021 • 4 minutes to read
Cet article décrit certains problèmes connus et conditions préalables lorsque vous prévoyez d’installer SQL
Server sur Windows 7 ou Windows Server 2008 R2.
Version du produit d’origine : SQL Server, Windows Server, Windows
Numéro de la ko d’origine : 955725
Résumé
Cet article décrit les problèmes connus lorsque vous installez Microsoft SQL Server sur un ordinateur exécutant
Windows 7 ou Windows Server 2008 R2.
Pour toutes les éditions à l’exception de l’édition Express d’SQL Server 2008 qui s’exécute sur Windows 7
ou sur Windows Server 2008 R2, vous devez avoir installé au moins SQL Server 2008 Service Pack 1
(SP1).
NOTE
Express Edition inclut déjà le Service Pack 1.
Dans cet article, Windows 7 indique la version cliente de Windows 7. Windows Server 2008 R2 indique la
version du serveur Windows 7.
Pour plus d’informations sur la configuration matérielle et logicielle requise pour les différentes versions
de SQL Server, voir Hardware and Software Requirements for Installing SQL Server 2012.
Pour obtenir des notes de publication qui documentent différents problèmes connus au moment de la
publication du produit, consultez la SQL Server 2012 Release Notes.
Problèmes détectés
Windows 7 n’utilise pas la propriété pour déterminer si l’authentification RequireKerberos Kerberos est
activée.
Étant donné Windows 7 n’utilise pas la propriété pour déterminer si l’authentification Kerberos est
activée pour une ressource nom réseau, l’installation du cluster de SQL Server RequireKerberos 2008
échoue.
Lorsque la stratégie FIPS (Federal Information Processing Standard) est activée dans Windows 7 ou dans
Windows Server 2008 R2, la validation du cluster échoue lors de l’installation SQL Server 2008.
Lorsque la stratégie FIPS est activée dans Windows 7 ou dans Windows Server 2008 R2, la validation du
cluster échoue pendant l’installation de SQL Server 2008. Par conséquent, le programme d’installation
échoue.
Pour résoudre ces deux problèmes, vous devez installer SQL Server 2008 avec SQL Server 2008 (SP1) ou
une mise à jour ultérieure pour les installations en cluster. Pour plus d’informations sur l’obtention SQL
Server 2008 SP1, consultez l’article suivant :
KB968382 : comment obtenir le dernier Service Pack pour SQL Server 2008
Pour plus d’informations sur la mise à jour SQL Server le programme d’installation dans un
environnement en cluster ou dans un environnement non réservé, consultez l’article suivant :
Mise à jour ou mise à jour d’une installation SQL Server 2008
SQL Server 2008 peut échouer sur Windows Server 2008 R2
L’installation SQL Server 2008 peut échouer sur Windows Server 2008 R2 si le .NET Framework n’est pas
activé. Ce problème se produit car l’installation .NET Framework 3.5 est une condition préalable à cette
installation.
Sur Windows Server 2008 R2, la .NET Framework 3.5 est incluse en tant que Windows composant. Par
défaut, la .NET Framework 3.5 n’est pas activée. Pour éviter cet échec d’installation, vous devez activer la
.NET Framework 3.5 à partir du composant Windows Features avant d’exécuter l’installation SQL Server
2008.
Le programme d SQL Server 2008 peut échouer
Le programme d SQL Server 2008 peut échouer et vous recevez l’erreur suivante :
Invoke ou BeginInvoke ne peut pas être appelé sur un contrôle tant que la poignée de fenêtre n’a pas
été créée.
Vous pouvez installer une mise à jour cumulative pour résoudre ce problème. Pour plus d’informations,
consultez l’article suivant :
CORRECTIF : Message d’erreur lorsque vous installez SQL Server 2008 sur un ordinateur exécutant
Windows 7 : « Invoke ou BeginInvoke ne peut pas être appelé sur un contrôle tant que la poignée de
fenêtre n’a pas été créée. »
NOTE
SQL Server 2008 express runtime est pris en charge sur Windows 7 et Windows 2008 R2.
Pour plus d’informations sur la configuration matérielle et logicielle requise pour l’installation de SQL Server
2008, consultez la SQL Server 2016 et 2017: Configuration matérielle et logicielle requise.
Le .NET Framework
Vous devez activer .NET Framework 3.5 SP1 avant d’installer SQL Server 2008 sur un ordinateur exécutant
Windows Server 2008 R2. La .NET Framework 3.5 SP1 est une condition préalable pour SQL Server 2008. SQL
Server 2008 installera le .NET Framework 3.5 SP1 s’il n’est pas déjà installé. Toutefois, pour le clustering de .NET
Framework, le .NET Framework 3.5 SP1 doit être installé avant l’installation du cluster de SQL Server 2008.
Dans Windows Server 2008 R2, l'.NET Framework est un composant système. Par conséquent, vous ne pouvez
pas installer le .NET Framework à partir d’un point de redistribution. Vous devez installer les .NET Framework à
partir du rôle serveur ou à l’aide ServerManagerCmd.exe.
Vous n’avez pas à installer le .NET Framework dans les scénarios suivants :
Sur un ordinateur qui exécute Windows Server 2008 R2 et sur lequel le .NET Framework 3.5 SP1 est
installé.
Sur un ordinateur qui exécute Windows 7.
NOTE
Par défaut, .NET Framework 3.5 SP1 est installé dans Windows 7.
S’applique à
SQL Server 2008 Enterprise
SQL Server 2008 Developer
SQL Server 2008 Standard
Windows Server 2008 R2 Datacenter
Windows Server 2008 R2 Enterprise
Windows Server 2008 R2 Standard
Windows Server 2008 R2 Web Edition
Windows 7 Entreprise
Windows 7 Professionnel
Windows 7 Édition Intégrale
Problèmes SQL Server configuration connus de
2008 R2 SQL Server 2008
13/08/2021 • 2 minutes to read
Cet article traite des problèmes de configuration et de migration propres à SQL Server 2008 R2 et SQL Server
2008 sur un ordinateur exécutant Windows Server 2012 R2, Windows Server 2012, Windows 8.1 ou Windows
8.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2681562
Résolution
Pour plus d’informations sur la résolution de ce problème, voir Cannot uninstall, repair, add new features to, or
add a new instance to SQL Server 2008 or SQL Server 2008 R2 in Windows 8.
Solution de contournement
Pour contourner ce problème, effectuez l’une des opérations suivantes :
Activez la .NET Framework 3.5 avant de désinstaller SQL Server 2008 Express Edition.
Copiez le fichier MediaInfo.xml du support d’installation SQL Server 2008 R2 ou SQL Server 2008
Express Edition dans le dossier suivant avant d’essayer de désinstaller SQL Server 2008 R2 ou SQL
Server 2008 Express Edition :
\Program Files (x86)\Microsoft SQL Server\100\Setup Bootstrap\SQLServer2008R2
Cause
Ce problème se produit si la bibliothèque de MSClus.dll COM n’est pas activée.
NOTE
Les SQL Server de configuration de cluster 2008 et SQL Server 2008 R2 dépendent de la bibliothèque de MSClus.dll
COM. Si cette bibliothèque n’est pas activée sur le nœud de cluster, le programme d’installation échoue.
Résolution
Pour résoudre ce problème, procédez de l’une des façons suivantes :
Activez la fonctionnalité Serveur d’automatisation du cluster deover sur chaque nœud à l’aide du
Gestionnaire de serveur. Dans le Gestionnaire de serveur, développez Outils d’administration de
serveur distant, développez Outils d’administration des fonctionnalités, développez Outils de clustering
de failover, puis cliquez pour sélectionner Failover Cluster Automation Ser ver .
Exécutez l’Windows PowerShell cmdlet suivante sur chaque nœud pour activer la fonctionnalité Serveur
d’automatisation du cluster deover :
add-windowsfeature RSAT-Clustering-AutomationServer
NOTE
Vous devez exécuter cette cmdlet à une invite de commandes avec élévation de élévation de niveaux.
Problèmes SQL Server configuration et de
migration connus en 2012
13/08/2021 • 12 minutes to read
Cet article décrit les problèmes SQL Server configuration et de migration 2012.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2681562
Un message d’erreur semblable à celui-ci peut s’afficher pendant SQL Server 2012 lorsque le .NET
Framework n’est pas activé.
Prévention
Pour éviter ce problème, activez la .NET Framework 3.5 sur tous les serveurs du cluster ou sur le serveur
autonome avant d’installer SQL Server 2012.
Résolution
Pour résoudre ce problème sur un serveur autonome, activez la .NET Framework 3.5, puis ré-exécutez le
programme d’installation pour ajouter les fonctionnalités supplémentaires.
Pour résoudre ce problème dans un environnement en cluster, désinstallez les instances de SQL Server
2012 incomplètes, activez .NET Framework 3.5, puis réinstallez SQL Server 2012.
NOTE
Dans un environnement en cluster, vous ne pouvez pas ajouter les fonctionnalités qui ont été ignorées en
exécutant à nouveau SQL Server configuration 2012.
Pour résoudre ce problème sur un serveur autonome, activez la .NET Framework 3.5, puis ré-exécutez
SQL Server le programme d’installation.
Problème 2 : les utilisateurs sont invités à télécharger et installer le .NET Framework 3.5
Symptômes
Les utilisateurs peuvent être invités à télécharger et installer le .NET Framework 3.5 lorsqu’ils essaient
d’installer CU1 ou CU2. Ce problème peut se produire même si les composants installés ne dépendent
pas de la .NET Framework 3.5.
Dans ce cas, les utilisateurs peuvent recevoir un message d’erreur semblable à ce qui suit.
Cause
Il s’agit d’un problème connu dans SQL Server 2012 CU1 et CU2.
NOTE
This issue is fixed in Cumulative Update 3 for SQL Server 2012 and later versions.
Prévention
Pour éviter ce problème, faites l’une des choses suivantes :
Activez la .NET Framework 3.5, appliquez le package de mise à jour CU1 ou CU2, puis désactivez .NET
Framework 3.5.
NOTE
Vous ne devez désactiver la .NET Framework 3.5 que si votre installation n’inclut pas de composants qui
dépendent de la .NET Framework 3.5.
Installez SQL Server 2012 à partir d’un package d’installation inclut SQL Server 2012 et CU3 ou une
version ultérieure.
Appliquer la mise à jour cumulative 3 ou une version ultérieure. Pour plus d’informations, voir les
builds SQL Server 2012 publiées après SQL Server 2012.
Problème 3 : les aler tes Windows du mode de compatibilité des applications sont affichées
lors d’une installation sans aver tissement
Symptômes
Dans Windows 8.1, Windows 8, Windows Server 2012 R2, Windows Server 2012, Windows 10 et
Windows Server 2016, le .NET Framework est un composant de fonctionnalité à la demande (FOD). En
outre, les stratégies système Windows 10, Windows 8.1 et Windows 8 et les stratégies système Windows
Server 2016, Windows Server 2012 R2 et Windows Server 2012 exigent que les utilisateurs soient
avertis lorsque les composants FOD sont activés.
NOTE
Par défaut, la .NET Framework 4.0 est activée dans Windows 8 et Windows Server 2012. En outre, .NET Framework
4.5 est activé dans Windows 8.1 et Windows Server 2012 R2, et .NET Framework 4.6 est activé dans Windows 10
et Window Server 2016. Toutefois, la .NET Framework 3.5 est désactivée.
Par conséquent, un avertissement du mode de compatibilité du programme qui invite les utilisateurs à
télécharger et installer le .NET Framework 3.5 peut s’afficher lors d’une installation sans avertissement.
Ces alertes de compatibilité de programme ne peuvent pas être supprimées. Les captures d’écran des
avertissements sont affichées comme suit :
Windows Server 2012 R2 et Windows Server 2012 - Serveur complet
Prévention
Pour éviter ce problème, l’utilisateur peut activer la .NET Framework 3.5 avant d’effectuer une installation
en mode silencieux.
Une erreur s’est produite lors de la création du handler de section de configuration pour
l'Microsoft.SqlServer.Configutilisateur. LandingPage.Properties. Paramètres : Le système de fichier ou
d’assembly n’a pas pu être chargé, Version=4.0.0.0, Culture=neutral, PublicKeyToken=xxxxx ou l’une
de ses dépendances. Le fichier spécifié est introuvable.
(C:\Users\Administrator\AppData\Local\Microsoft_Corporation\LandingPage.exe_StrongName_
ryspccglaxmt4nhllj5z3thycltsvyyx\11.0.0.0\user.config)
Cause
Dans Windows 8 et Windows Server 2012, ce problème se produit car le .NET Framework 4.0 est activé
par défaut dans Windows 8 et Windows Server 2012. Par conséquent, un .NET Framework de
configuration utilisateur 4.0 est créé lorsque vous installez SQL Server 2012. En outre, la .NET Framework
3.5 est activée pendant l’installation.
Lorsque vous essayez d’installer la deuxième instance de SQL Server 2012, l’installation utilise .NET
Framework 2.0, car la .NET Framework 3.5 est déjà installée. Cela entre en conflit avec le paramètre dans
le fichier de configuration de l’utilisateur, ce qui provoque l’exception non gestion.
Dans Windows 8.1 et Windows Server 2012 R2, ce problème se produit car le .NET Framework 4.5 est
activé par défaut dans Windows 8.1 et Windows Server 2012 R2. Par conséquent, un .NET Framework de
configuration utilisateur 4.5 est créé lorsque vous installez SQL Server 2012. En outre, la .NET Framework
3.5 est activée pendant l’installation.
Lorsque vous essayez d’installer la deuxième instance de SQL Server 2012, l’installation utilise .NET
Framework 2.0, car la .NET Framework 3.5 est déjà installée. Ce conflit avec le paramètre dans la
configuration de l’utilisateur provoque l’exception nonmenée.
Dans Windows 10 et Windows Server 2016, ce problème se produit car la .NET Framework 4.6 est
activée par défaut. Par conséquent, un .NET Framework de configuration utilisateur 4.6 est créé lorsque
vous installez SQL Server 2012. En outre, la .NET Framework 3.5 est activée pendant l’installation.
Lorsque vous essayez d’installer la deuxième instance de SQL Server 2012, l’installation utilise .NET
Framework 2.0, car la .NET Framework 3.5 est déjà installée. Cela entre en conflit avec le paramètre dans
le fichier de configuration de l’utilisateur, ce qui provoque l’exception non gestion.
Prévention
Pour éviter ce problème, supprimez le fichierUser.config dans le dossier suivant avant d’installer la
deuxième instance de SQL Server 2012 :
%userprofile%\AppData\Local\Microsoft_Corporation\LandingPage.exe_StrongName_ryspccglaxmt4nhllj5z3thycltsvyyx\11.0.0.0
Résolution
NOTE
This issue is fixed in Microsoft SQL Server 2012 Service Pack 1 (SP1).
Si le Service Pack 1 est déjà installé sur la première instance, vous ne devez pas connaître ce problème. Si
vous ne pouvez pas installer le Service Pack 1 sur la première instance, faites l’une des choses suivantes :
Installez la deuxième instance SQL Server 2012 à partir d’un package d’installation inclut SQL
Server 2012 et Microsoft SQL Server 2012 Service Pack 1. Après l’installation de la nouvelle
instance, vous devez appliquer SQL Server 2012 Service Pack 4 ou une mise à jour ultérieure. Pour
plus d’informations,voir Comment obtenir le dernier Service Pack pour SQL Server 2012.
Pre-patch by using the SQL Server 2012 SP4 files and then install SQL Server 2012:
Sur un ordinateur sur lequel SQL Server 2012 RTM n’est pas installé :
1. Téléchargez et installez SQL Server 2012 SP4.
2. Dans l’écran Termes du contrat de licence, cliquez sur la case à cocher J’accepte les
termes du contrat de licence, puis cliquez sur Suivant .
NOTE
Les fichiers d’installation sont installés et l’Assistant d’installation se ferme
automatiquement.
NOTE
Vous ne pouvez pas exécuter SQL Server 2012 SP4 dans ce scénario.
3. Dans le dossier où vous avez extrait les fichiers SP4, double-cliquez sur
SqlSuppor t.msi puis cliquez sur Oui .
4. Vérifiez l’installation. Pour ce faire, démarrez Ajouter ou supprimer des programmes
et vérifiez que le programme d’installation Microsoft SQL Server 2012, version
11.0.7001.0 est répertorié.
NOTE
Consultez la section Instructions d’installation de la page SQL Server 2012 SP4 pour déterminer le
téléchargement correct pour votre serveur.
Problème 2 : vous ne pouvez pas installer un cluster de SQL Ser ver 2012 avec la
fonctionnalité par tage de flux de fichiers activée sur Windows Ser ver 2012 R2 ou Windows
Ser ver 2012
Symptômes
Vous pouvez recevoir un message d’erreur semblable à celui-ci lorsque vous essayez d’installer un
nouveau cluster de SQL Server 2012 avec la fonctionnalité de partage activée sur FileStream Windows
Server 2012 :
Une erreur s’est produite lors de l’affectation de la valeur « System.Byte[] » à la propriété privée «
Security0x20Descriptor » pour la ressource « SQL Server Filestream share (FILESTREAM) ». Erreur :
échec de l’appel du code de cluster à partir d’un fournisseur. Message d’exception : in trouvé.
Cause
Ce problème se produit car la prise en charge de la propriété Security Descriptor a été abandonnée dans
Windows Server 2012.
Prévention
Pour éviter ce problème, installez le cluster deover sans activer la FileStream fonctionnalité de partage.
Une fois l’installation terminée, activez la FileStream fonctionnalité Partager.
Résolution
NOTE
This issue is fixed in Microsoft SQL Server 2012 Service Pack 1 (SP1).
Pour résoudre ce problème, désinstallez l’instance de cluster qui a échoué à l’aide de l’option Ajouter ou
Supprimer des programmes, puis installez le cluster deover sans la fonctionnalité FileStream de
partage activée. Une fois l’installation terminée, activez la FileStream fonctionnalité Partager.
Problème 3 : Erreur lors de SQL Ser ver 2012 : « Une tentative de chargement d’un
programme avec un format incorrect a été tentée »
Symptômes
Prenons l’exemple du scénario suivant :
Vous installez une version 64 bits de Windows 10, Windows 8.1 ou Windows 8.
Vous essayez d’installer SQL Server 2012 en mode Windows sur Windows (WoW).
L’installation SQL Server 2012 inclut Reporting Services.
Dans ce scénario, l’installation échoue. En outre, vous recevez un message d’erreur semblable à ce qui suit
:
Prévention
Pour éviter ce problème, installez le composant IIS ASP.NET 3.5 à l’aide du Gestionnaire de serveur avant
d’installer SQL Server 2012. Pour plus d’informations, voir ASP.NET 2.0 et ASP.NET 3.5ne fonctionnent pas
après la désinstallation de ASP.NET 4.5 dans Windows 8 ou Windows Server 2012 .
Problème 4 : vous ne pouvez pas installer une instance de cluster SQL Ser ver 2012 Êdition
Entreprise de point de contrôle
Symptômes
Prenons l’exemple du scénario suivant :
Vous pouvez :
Vous créez un package d’installation inclut SQL Server 2012 et CU1.
Vous pré-patchez à l’aide de CU1 avant d’installer SQL Server 2012.
Vous installez SQL Server 2012 à l’aide de l’option UIMODE=EnableUIOnSer verCore.
Dans ce scénario, l’installation échoue. Vous recevez un message d’erreur semblable à ce qui suit.
Les détails de l’erreur ressemblent à ce qui suit.
Cause
Ce problème se produit car la fonctionnalité est implicitement sélectionnée avec le composant DQ
engine pendant l’installation.
NOTE
La DQ fonctionnalité n’est pas prise en charge en mode Server Core.
Résolution
NOTE
Le problème est résolu dans SQL Server 2012 RTM CU3 et SQL Server 2012 Service Pack 1.
Cause
Ce problème se produit car la mise à niveau SQL Server 2012 supprime à tort la clé de Registre suivante :
HKEY_LOCALMACHINE\System\CurrentControlSet\Services\LanmanServer\Parameters\FsctlAllowList\FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT
Solution de contournement
Pour contourner ce problème, utilisez l’Éditeur du Registre pour re-créer la clé de Registre suivante :
HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\FsctlAllowList
Dword: FSCTL_SQL_FILESTREAM_FETCH_OLD_CONTENT
Value: 0x92560
Références
Pour plus d’informations sur le déploiement de .NET Framework 3.5, voirMicrosoft .NET Framework 3.5
Deployment Considerations.
Pour plus d’informations sur l’utilisation de ASP.NET 3.5 et ASP.NET 4.5 dans IIS 8.0, voirIIS 8.0 Using
ASP.NET 3.5 and ASP.NET 4.5.
Pour plus d’informations sur les problèmes qui peuvent se produire après l’installation de ASP.NET 4.5,
voirASP.NET 2.0 et ASP.NET 3.5ne fonctionnent pas après la désinstallation de ASP.NET 4.5 dans Windows
8 ou Windows Server 2012 .
Pour plus d’informations sur l’installation du clustering de Windows Server 2012, voir Installation de la
fonctionnalité et des outils ducluster deWindows Server 2012 .
Voir aussi
Comprendre les .NET Framework requises pour différentes versions de SQL Server.
Installer SQL Server 2008 X64 et SQL Server 2008
Reporting services X86 côte à côte sur Windows
2008 X64
13/08/2021 • 2 minutes to read
Cet article montre comment installer SQL Server 2008 x64 et SQL Server 2008 Reporting services X86 côte à
côte sur Windows 2008 X64.
Version du produit d’origine : Microsoft SQL Server
Numéro de la ko d’origine : 2000404
Symptômes
Prenons l’exemple du scénario suivant :
Vous exécutez un Windows 2008 qui exécute la version x64 du SQL Server de base de données 2008. Dans ce
scénario, si vous essayez d’installer la version x86 du composant SQL Server 2008 Reporting Services à l’aide
de « Ajouter des fonctionnalités à une instance existante de SQL Server 2008 », le programme d’installation
signale le message d’erreur suivant dans la page Règles d’installation.
RUL E ÉTAT
Cause
Le comportement est de par sa conception. Lorsque vous avez choisi l’option d’ajout de fonctionnalités à
l’instance existante, la règle vérifie si les fonctionnalités ajoutées sont de la même architecture de processeur
que les fonctionnalités existantes pour cette instance et, si ce n’est pas le cas, elle bloque
Same architecture installation l’installation. En d’autres termes, vous ne pouvez pas installer une version 64
bits d’un composant (comme le moteur de base de données) et une version 32 bits d’un autre composant
(comme Reporting Services) pour la même instance de serveur SQL.
Résolution
Utilisez la procédure suivante pour installer l’édition 32 bits du composant Reporting Services :
1. Lancez SQL Server centre d’installation en exécutant setup.exe à partir du support d’installation.
2. Dans la section Options, sélectionnez le type de processeur en tant que x86.
3. Dans la section Installation, sélectionnez Nouvelle installation SQL Server autonome ou ajoutez des
fonctionnalités à une installation existante.
4. Dans l’écran Type d’installation pendant le processus d’installation, sélectionnez Effectuer une nouvelle
instance de SQL Ser ver 2008 et poursuivez l’installation pour effectuer une installation d’installation en
fichiers uniquement (Reporting Services) de l’instance reporting services et configurer la même instance à
une étape ultérieure à l’aide du Gestionnaire de configuration reporting services.
Vous ne pouvez pas mettre à jour un cluster SQL
Server 2012 lorsque le programme d’installation
vérifie Cluster_IsOnlineIfClustered règle
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque le programme d’installation vérifie la
Cluster_IsOnlineIfClustered règle.
Symptômes
Prenons l’exemple du scénario suivant :
Dans un environnement de cluster, vous installez une instance de Microsoft SQL Server 2012.
Vous essayez d’installer SQL Server Service Packs ou des mises à jour cumulatives sur le serveur qui
contient cette instance.
Dans ce cas, l’opération d’installation échoue au début du processus. Plus précisément, l’opération échoue
lorsque le programme d’installation vérifie la Cluster_IsOnlineIfClustered règle. En outre, un message
semblable à ce qui suit est consigné dans Detail.txt fichier :
at Microsoft.SqlServer.Chainer.Infrastructure.ServiceContainer.GetService[T]()
at Microsoft.SqlServer.Chainer.Infrastructure.ServiceContainer.get_Cluster()
at
Microsoft.SqlServer.Configuration.Cluster.Rules.ClusterServiceFacet.Microsoft.SqlServer.Configuration.RulesE
ngineExtension.IRuleInitialize.Init(String ruleId)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.Execute(Boolean stopOnFailure)
<Time Stamp> Slp: Rule initialization failed - hence the rule result is assigned as Failed
NOTE
Le Detail.txt se trouve à %ProgramFiles%\Microsoft SQL Server\110\Setup Bootstrap\Log\<YYYYMMDD_HHMM>
l’emplacement .
Cause
Ce problème se produit en raison d’un espace de noms MSCluster non valide dans Windows Management
Instrumentation (WMI).
Résolution
Pour résoudre ce problème, suivez les étapes suivantes :
1. À l’invite de commandes d’administration, cd %systemroot%\system32\wbem tapez, puis appuyez sur
Entrée.
2. Tapez la commande : regsvr32 cluswmi.dll et appuyez sur Entrée.
3. Tapez la commande suivante : mofcomp.exe ClusWMI.mof et appuyez sur Entrée.
4. Réexécutez le programme d’installation des Service Packs ou des mises à jour cumulatives sur le serveur.
Plus d’informations
Pour identifier que ce problème est dû à l’espace de noms WMI pour le cluster, suivez les étapes suivantes :
1. Connectez-vous en tant que compte qui est administrateur sur le cluster et exécute SQL Server
configuration.
2. Exécutez la commande à l’invite de commandes d’administration : wbemtest
Number: 0x8004100e
Installation : WMI
Description : espace de noms non valide
NOTE
En tant que test supplémentaire, vous pouvez exécuter la requête suivante dans Windows PowerShell :
Si le problème n’est pas dû à un espace de noms MSCluster non valide, le résultat attendu est que le nom du
réseau de cluster est renvoyé.
S’applique à
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
Mise à jour ou mise à jour d’une installation SQL
Server 2008
14/08/2021 • 15 minutes to read
Cet article explique comment mettre à jour ou installer une installation de SQL Server 2008.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 955392
Introduction
Cet article explique comment mettre à jour ou glisser une installation de Microsoft SQL Server 2008 qui a
échoué à l’aide de la dernière mise à jour cumulative (CU) ou du Dernier Service Pack (SP). Utilisez ces
instructions lorsque vous ne pouvez pas installer SQL Server 2008 en raison d’un problème connu dans le
programme d’installation. La section SQL Server 2008 Setup hotfixes répertorie les articles de la Base de
connaissances Microsoft qui décrivent les problèmes d’installation connus et explique comment obtenir la
dernière mise à jour.
Deux situations sont à prendre en compte :
Vous essayez d’installer SQL Server 2008. Vous rencontrez un échec d’installation et les fichiers d’installation
sont installés sur l’ordinateur.
Vous souhaitez éviter de manière proactive les problèmes d’installation connus à l’aide d’une configuration
de mise à jour.
Il est recommandé de mettre à jour ou d’inséperper le SQL Server 2008 d’origine à l’aide du Service Pack 1, car
le Service Pack permet de mettre à jour l’intégralité du produit. Une mise à jour unique basée sur la version SQL
Server 2008 d’origine peut uniquement mettre à jour le SQL support technique.
Pour obtenir des réponses aux questions fréquemment posées sur le flux, consultez la rubrique SQL Server
2008 Slipstream Frequently Asked Questions on SQL Server Setup.
IMPORTANT
Pour SQL Server 2012 et les versions ultérieures, vous devez utiliser le paramètre /UpdateSource pour mettre à jour SQL
Server fichiers d’installation. Pour obtenir un exemple sur la façon de faire, voir Comment mettre à jour le programme
d’installation SQL Server 2012avec un package d’installation mis à jour (à l’aide de UpdateSource pour obtenir une
configuration intelligente).
Plus d’informations
Lorsque vous exécutez la version d’origine du programme d’installation SQL Server 2008, le programme
d’installation se copie lui-même sur l’ordinateur local, puis réexécute à partir de la copie locale. Par conséquent,
s’il existe une version ultérieure des fichiers de support sur l’ordinateur, le programme d’installation exécute ces
fichiers mis à jour. Par conséquent, vous pouvez mettre à jour SQL Server de support du programme
d’installation 2008 avant d’exécuter Setup.exe fichier.
À partir SQL Server 2008 Service Pack 1, vous pouvez mettre à jour SQL Server 2008 à l’aide de l’infrastructure
slipstream. Lorsque vous installez le Service Pack 1 à l’aide de la procédure d’ajout ou d’installation sur une
installation SQL Server 2008 existante, une entrée est créée pour le Service Pack dans Ajouter ou supprimer des
programmes. Vous pouvez désinstaller le Service Pack à l’aide de cette entrée.
Pour vérifier si un Service Pack est installé correctement, exécutez le rapport de découverte SQL disponible dans
le Centre d’installation SQL Server 2008. Vous devriez voir que les fonctionnalités sont de la version 10. n . xxxx ,
où n représente la version du Service Pack. Par exemple, 10.1. xxxx représente le Service Pack 1.
Limites
Les limitations suivantes s’appliquent lorsque vous mettez à jour le programme d’installation ou utilisez la
procédure slipstream :
IMPORTANT
Vous devez désinstaller une installation qui a échoué si le Summary.txt journal indique que vous devez le
désinstaller.
Si vous utilisez la procédure slipstream pour mettre à niveau une installation vers une installation
Wow64, vous devez effectuer l’une des étapes supplémentaires suivantes :
Spécifiez le paramètre /Action sur la ligne de commande en plus du paramètre /x86.
Dans la page Options du Centre d’installation, sélectionnez x86 .
Si vous ajoutez des fonctionnalités à une instance où le service de base de données est déjà installé par le
biais de l’flux, l’installation risque d’échouer. Pour contourner ce problème, vous devez ajouter une
fonctionnalité à l’aide du support source SQL Server 2008 d’origine ou mettre à niveau l’instance vers
SP1, puis utiliser l’infrastructure slipstream.
Lorsque vous copiez des packages slipstream, utilisez des chemins d’accès qui ne contiennent pas
d’espaces. Si vous spécifiez un emplacement qui contient des espaces pour l’un ou l’autre des paramètres,
une défaillance se produit lors de la configuration /PCUSOURCE /CUSOURCE d’slipstream.
NOTE
Il est recommandé d’effectuer d’abord une installation d’entrée à partir de la nouvelle liste de contrôle sur un
ordinateur de test avant de la déployer dans l’environnement de production.
Ces étapes sont pour la version anglaise de SQL Server 2008. Toutefois, elle fonctionne pour n’importe quelle
langue de SQL Server 2008 si vous obtenez la langue correcte du package de Service Pack.
NOTE
Veillez à effectuer cette étape pour toutes les architectures afin de vous assurer que le support d’origine est
correctement mis à jour.
4. Exécutez les commandes suivantes pour copier le fichier Setup.exe et le fichier Setup.rll de l’emplacement
extrait vers l’emplacement multimédia source d’origine.
5. Exécutez les commandes suivantes pour copier tous les fichiers (et non les dossiers), à l’exception
Microsoft.SQL.Chainer.PackageData.dll fichier, pour mettre à jour
C:\SQLServer2008_FullSP1\PCU\Architecture C:\SQLServer2008_FullSP1\Architecture les fichiers d’origine.
robocopy C:\SQLServer2008_FullSP1\pcu\x86 C:\SQLServer2008_FullSP1\x86 /XF
Microsoft.SQL.Chainer.PackageData.dll
NOTE
Si vous copiez accidentellement le fichier Microsoft.SQL.Chainer.PackageData.dll, vous pouvez recevoir le message
d’erreur suivant lorsque vous exécutez le Setup.exe fichier.
C:\SQLServer2008_FullSP1\x64
C:\SQLServer2008_FullSP1\ia64
Si vous avez le fichier Defaultsetup.ini dans les dossiers, ouvrez le fichier Defaultsetup.ini, puis ajoutez
PCUSOURCE= ».\PCU » au fichier comme suit :
[SQLSERVER2008]
...
PCUSOURCE=".\PCU"
Si vous n’avez pas le fichier Defaultsetup.ini dans les dossiers, créez le fichier Defaultsetup.ini dans les
dossiers et ajoutez le contenu suivant au fichier :
[SQLSERVER2008]
PCUSOURCE=".\PCU"
NOTE
Ce fichier indique au programme d’installation où localiser le support source SP1 que vous avez extrait à l’étape 3.
NOTE
Pour les deux options, seuls les fichiers de SQL Server du programme d’installation 2008 sont mis à jour. Pour mettre à
jour l’ensemble du produit, vous devez exécuter le package de correctifs une fois le produit correctement installé.
NOTE
Sur la plateforme IA-64, la .NET Framework 3.5 n’est pas prise en charge et la .NET Framework 2.0 SP2 est
requise. Vous pouvez installer la .NET Framework 2.0 SP2 à partir du média source. Le .NET Framework 2.0
SP2 se trouve dans le dossier suivant sur le support source
Drive_Letter:\ia64\redist\2.0\NetFx20SP2_ia64.exe :
Sur les plateformes x86 et x64, vous devez installer .NET Framework 3.5 SP1.
2. Double-cliquez sur le package de correctifs pour installer les fichiers de SQL Server du programme
d’installation 2008. Une fois que vous avez extrait le contenu du package, les fichiers de support SQL
Server du programme d’installation 2008 seront installés. Le package de correctifs terminera
l’installation sans vous en informer une fois l’installation terminée. Pour confirmer que les fichiers sont
installés, affichez l’entrée à l’aide de l’élément Ajouter ou supprimer des programmes du Panneau de
Windows Vista. Dans Windows Vista ou versions ultérieures de Windows, affichez l’entrée à l’aide de
l’élément Programmes et fonctionnalités du Panneau de contrôle.
3. Démarrez le programme d’installation à partir du DVD ou du partage réseau.
Copiez tous les fichiers (et non les sous-dossiers) du dossier d’architecture, à l’exception du
fichier Microsoft.SQL.Chainer.PackageData.dll, du dossier vers le dossier qui contient la copie
C:\kb_number_of_hotfix package\architecture\architecture\ locale du media\architecture\ dossier.
NOTE
En raison des modifications de schéma introduites dans les packages de mise à jour cumulative RTM pour SQL Server
2008 qui commencent par le package de mise à jour cumulative 8, vous pouvez recevoir le message d’erreur suivant
lorsque vous exécutez le programme d’installation. Vous pouvez recevoir le message d’erreur suivant après avoir mis à
jour les fichiers de support du programme d’installation à l’aide de la procédure décrite dans l’option 2 :
2. Copiez Sqlsupport.msi fichier. Parmi les emplacements suivants, copiez le fichier du premier
emplacement vers la copie locale du deuxième emplacement :
C:\<kb_number_of_hotfix package>\<architecture>\setup\Sqlsupport.msi
<media>\<architecture folder>\setup\
NOTE
Si d’autres problèmes de configuration sont identifiés, d’autres articles de la Base de connaissances Microsoft seront
publiés et inclus dans cette liste.
S’applique à
SQL Server 2008 Enterprise
SQL Server 2008 Developer
SQL Server 2008 Express
SQL Server 2008 Standard
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
Erreur lors de la mise à niveau du nœud de cluster
vers SQL Server 2012
13/08/2021 • 7 minutes to read
Cet article fournit une solution au problème qui se produit lorsque vous essayez de mettre à niveau une
instance SQL Server 2008 ou SQL Server 2008 R2 vers SQL Server 2012 sur un cluster deover.
Version du produit d’origine : SQL Server 2012
Numéro de la ko d’origine : 2782511
Symptômes
Prenons l’exemple du scénario suivant :
Vous avez un cluster de Microsoft SQL Server deux nœuds qui s’exécute sur un cluster de Windows
Server 2012'exécution. Par exemple, le nœud principal est le nœud A et le nœud passif le nœud B.
NOTE
L’instance de SQL Server est une instance SQL Server 2008 ou SQL Server 2008 R2.
Vous essayez de mettre à niveau le nœud principal (nœud A) vers SQL Server 2012 en utilisant le
processus documenté dans : Mettre à niveau une instance de cluster de failover.
Dans ce cas, un message d’erreur semblable au suivant s’affiche :
Les propriétés courantes de la ressource « SQL Network Name ( SQL Name ) »n’ont pas pu être
enregistrées. Erreur : échec de l’appel du code de cluster à partir d’un fournisseur. Message d’exception : une
ou plusieurs valeurs de propriété pour cette ressource sont en conflit avec une ou plusieurs valeurs de
propriété associées à ses ressources dépendantes.
NOTE
SQL Le nom est un espace réservé pour le nom SQL Server réseau.
Même si ce problème provoque un échec de mise à niveau sur le nœud A, le groupe de ressources SQL Server échoue
avec succès sur le nœud mis à niveau B. En outre, étant donné que l’opération deover prend moins d’une minute,
toutes les ressources sont en ligne sans perturber sensiblement la connectivité client. Toutefois, pour terminer le
processus de mise à niveau sur le nœud A, vous devez suivre des étapes supplémentaires mentionnées dans la section
Résolution.
Cause
Ce problème se produit en raison des modifications apportées au clustering Windows Server 2012 de pointage.
Résolution
Cette section couvre les actions suivantes :
Terminez la mise à niveau sur le nœud A.
Empêchez le problème d’affecter les nouvelles mises à niveau.
NOTE
En continuant l’exemple de la phase 1, la valeur de l’ID d’instance est FOOINST .
Le programme d’installation ne détermine pas automatiquement l’ID d’instance. Par conséquent, vous
ne pouvez pas utiliser l’ID d’instance pré-compilé par défaut dans le champ ID d’instance.
Vous pouvez consulter le fichiersummary.txt pour trouver l’ID d’instance correct.
NOTE
Si vous avez un nombre even de nodes de cluster, ne pas mettre à niveau plus de la moitié des nodes
passifs.
Si vous avez un nombre impair de nodes de cluster, veillez à mettre à niveau moins de la moitié des
nodes dans le cluster. Si la plupart des nodes du cluster sont mis à niveau, ce problème se produit
lorsque le groupe de ressources de cluster échoue.
2. Ajoutez manuellement les nodes passifs mis à niveau à la liste des propriétaires possibles pour la
ressource Nom du serveur.
3. Supprimez les nodes non mis à niveau de la liste des propriétaires possibles.
4. Faire échouer manuellement le groupe SQL Server cluster vers l’un des nodes mis à niveau.
5. Mettre à niveau les autres nodes non mis à niveau.
6. Lorsque tous les nodes non mis à niveau sont mis à niveau, ajoutez-les manuellement à la liste des
propriétaires possibles sur la ressource Nom du serveur.
Option 2
This issue is fixed in SQL Server 2012 Service Pack 1 (SP1). Vous pouvez effectuer le processus de mise à
niveau sur chaque nœud de cluster à l’aide des binaires du programme d’installation du Service Pack.
Pour ce faire, il existe deux méthodes.
Méthode A
1. Téléchargez SQL Server 2012 SP1 sur un disque dur local (par exemple vers ) ou sur un
partage réseau (par exemple, ) accessible par tous les c:\sp1 \\share name\sp1 nodes.
2. Démarrez une invite de commandes en tant qu’administrateur et exécutez l’une des
commandes suivantes :
<Download path>\setup.exe/action=upgrade/updatesource=c:\sp1
<Download path>\setup.exe/action=upgrade/updatesource=\\share name\sp1
3. Effectuer toutes les étapes du programme d’installation.
NOTE
Vous pouvez vérifier si la mise à niveau utilise les fichiers binaires d’installation SQL Server 2012
SP1 en vérifiant le fichier detail.log à l’emplacement suivant :
%Program Files%\Microsoft SQL Server\110\Setup Bootstrap\Log\<Time stamped folder>
Confirmez que les informations de version situées au début du fichier journal indiquent que
la version SQL Server 2012 est antérieure à la version 11.0.2100.60. Par exemple, le fichier
journal peut contenir les éléments suivants :
Méthode B
1. Téléchargez SQL Server 2012 SP1 sur un disque dur local (par exemple vers ) ou sur un
partage réseau (par exemple, ) accessible par tous les c:\sp1 \\share name\sp1 nodes.
2. Démarrez une invite de commandes en tant qu’administrateur et exécutez la commande
suivante :
Cette commande permet de pré-patcher le nœud avec les SQL Server d’installation de
2012 SP1.
NOTE
Vous ne pouvez pas installer le fichier SqlSupport.msi seul, car cela entraîne l’échec de l’opération
d’installation de SQL Server 2012 et une erreur de non-MSVCR100.dll s’affiche. Utilisez le /Q
paramètre pour éviter cette erreur. Ce paramètre installe le fichier Sqlsupport.msi et les
composants d’runtime Visual C++.
S’applique à
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
Avertissement concernant l’ordre de liaison réseau
dans la page Règles de prise en charge du
programme d’installation
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous installez SQL Server 2008 dans un
cluster deover.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 955963
Symptômes
Lorsque vous installez Microsoft SQL Server 2008 dans un cluster deover, vous recevez un message
d’avertissement concernant l’ordre de liaison réseau dans la page Règles de support du programme
d’installation.
NOTE
L’avertissement s’affiche même si l’ordre de liaison est correct : IsDomainNetworkTopOfBindings .
Vérifie si le serveur de domaine de l’ordinateur se trouve sur le réseau qui est lié au haut de l’ordre réseau.
Le réseau de domaine n’est pas le premier réseau lié. Cela ralentit l’activité des opérations de domaine et peut
entraîner des temps d’arrêt qui entraînent des échecs. Utilisez la configuration Windows réseau avancé pour
modifier l’ordre de liaison.
Cause
Ce problème peut se produire lorsque vous avez une carte réseau désactivée ou une carte réseau fantôme sur
l’ordinateur.
NOTE
Une carte réseau qui est éumée dans le Registre Windows mais qui est masquée dans le Gestionnaire de périphériques est
appelée carte réseau dédentée. This issue may occur when you change a network connection’s TCP/IP configuration from
DHCP to a static IP. Ce problème peut également se produire lorsque vous avez ajouté et supprimé plusieurs fois des
cartes réseau.
Résolution
Pour résoudre ce problème, supprimez les cartes réseau désactivées ou dédentées. Pour cela, procédez comme
suit :
1. À l’invite de commandes, tapez les lignes de commande suivantes :
set devmgr_Show_Nonpresent_Devices=1
start devmgmt.msc
start ncpa.cpl
NOTE
Veillez à appuyer sur Entrée après chaque ligne.
Références
Créer une instance de cluster de failover Always On (installation)
Instances de cluster de failover Always On (SQL Server).
Résultats incohérents en calculs MKL en raison
d’une variable d’environnement manquante dans
Microsoft R Server ou Machine Learning Server
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où vous obtenez des résultats incohérents en raison d’une variable
d’environnement manquante.
S’applique à : SQL Server 2017 sur Windows, Microsoft Machine Learning Server (R Server)
Numéro de la ko d’origine : 4488257
Symptômes
Lorsque vous exécutez Microsoft R Server 9.0, 9.1, 9.2, 9.3.x ou Microsoft Machine Learning Server dans le cadre
de Microsoft SQL Server 2017, vous découvrez des résultats incohérents dans les calculs MKL (Intel Math Kernel
Library). This issue occurs because of a missing MKL_CBWR environment variable.
Cause
Ce problème se produit parce qu’une nouvelle fonctionnalité a été ajoutée à la bibliothèque MkL Intel incluse
avec Microsoft R Server et SQL Server 2017. Pour plus d’informations sur cette fonctionnalité, voir Introduction
à la reproductibilité numérique conditionnelle (CNR)
Résolution
Pour résoudre ce problème, configurez la reproductibilité numérique conditionnelle dans Microsoft R Server ou
Machine Learning Server en configurant la variable d’environnement MKL_CBWR=AUTO System. Pour cela,
procédez comme suit :
1. Dans le Panneau de contrôle, sélectionnez System and Security > System Advanced > System
Paramètres Environment > Variables .
2. Créez une variable utilisateur ou système et spécifiez les valeurs suivantes :
Définissez le nom de la variable sur MKL_CBWR .
Définissez la valeur de variable sur AUTO .
3. Redémarrez Microsoft R Server.
État
Microsoft a confirmé qu’il s’agit d’un problème dans les produits Microsoft.
Dans les futures versions Microsoft R Server, le paramètre MKL_CBWR=AUTO sera le paramètre par défaut.
Références
Problèmes connus dans SQL Server Machine Learning Services Exclusion de responsabilité des informations
tierces
Exclusion de responsabilité de tiers
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.
La colonne bloquée dans la table sysprocesses est
remplie pour les attentes de verrou
12/08/2021 • 3 minutes to read
Cet article indique que la colonne bloquée dans le tableau est remplie pour sysprocesses les attentes de verrou.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 906344
Résumé
Dans SQL Server, vous pouvez remarquer que la colonne bloquée dans la table système est remplie pour les
attentes de verrou en plus des sysprocesses attentes de verrouillage. Parfois, vous pouvez remarquer de
courtes périodes de temps lorsqu’un ID de processus de serveur unique (SPID) est signalé comme se bloquant
lui-même. Ce comportement est normal.
Plus d’informations
Les latches sont utilisées pour synchroniser l’accès aux pages de données mises en cache et à d’autres objets en
mémoire. En règle générale, les verrous sont maintenus brièvement et les temps d’attente des verrous sont
relativement petits. SQL Server des diagnostics pour vous aider à résoudre les cas dans lesquels un SPID attend
un long moment pour un verrou. Ces diagnostics provoquent la réflexion de la colonne bloquée dans la table
système sur le propriétaire d’un verrou qui bloque la demande de verrou sysprocesses d’un autre SPID.
La propriété du verrou est uniquement suivi pour les verrous verrous qui sont en mode verrouillage exclusif
(EX) ou de mise à jour (UP). La propriété n’est pas suivi pour les verrous verrous qui sont en mode verrou
partagé . Cela signifie que la colonne bloquée ne sera pas remplie pour certaines demandes de verrou.
La plupart du temps, vous pouvez ignorer la valeur dans la colonne bloquée si les conditions suivantes sont
vraies :
La valeur dans la waittime colonne est faible.
Le waittype spid est un type d’attente de verrou.
Pour plus d’informations sur les valeurs possibles dans la colonne, voir waittype sys.dm_os_wait_stats
(Transact-SQL).
Lorsqu’un SPID attend un verrou de page d’I/S, vous remarquerez peut-être que la colonne bloquée signale
brièvement que le SPID se bloque lui-même. Ce comportement est un effet secondaire de la façon dont les
latches sont utilisées pour les opérations d’entrée et de fin sur les pages de données. Lorsqu’un thread émettra
une demande d’O/S, le SPID qui émettra la demande d’O/S acquiert un verrou sur la page. Toutes SQL Server
opérations d’opérations d’SQL Server sont asynchrones. Par conséquent, le SPID essaiera d’acquérir un autre
verrou sur la même page si le SPID qui a émis la demande d’I/S doit attendre la fin de la demande. Ce deuxième
verrou est bloqué par le premier verrou. Par conséquent, la colonne bloquée signale que le SPID se bloque lui-
même. Lorsque la demande d’O/S se termine, le premier verrou est relâché. Ensuite, la deuxième demande de
verrou est accordée.
Par exemple, les conditions suivantes peuvent se produire :
1. SPID 55 souhaite lire une page de données qui n’existe pas dans le pool de mémoires tampons.
2. SPID 55 acquiert un verrou EX sur la page. Étant donné que la page n’existe pas encore en mémoire, le
mode verrou demandé est EX. Le mode verrouillage EX force d’autres SPID qui souhaitent également
accéder à la page à attendre la fin de la demande d’I/S. Le mode verrou EX empêche également d’autres
SPID d’émettre une demande d’E/S en double pour la même page.
3. SPID 55 demande de lecture de la page à partir du disque.
4. Étant donné que SPID 55 souhaite lire la page, SPID 55 doit attendre la fin de la demande d’O/S. Pour
attendre la fin de la demande d’E/S, SPID 55 tente d’acquérir un autre verrou qui a le mode verrou
partagé (SH) sur la même page. Étant donné qu’un verrou EX a déjà été acquis, la demande de
verrouillage SH est bloquée et le SPID est suspendu. Étant donné que le verrou EX qui bloque la demande
de verrouillage SH a également été acquis par SPID 55, le SPID est temporairement signalé comme
bloquant lui-même.
5. Lorsque la demande d’O/S se termine, le verrou EX de la page est libéré.
6. La libération du verrou EX donne le verrou SH à SPID 55.
7. SPID 55 peut désormais lire la page.
Entre les étapes 4 et 5, le tableau indique que sysprocesses SPID 55 est bloqué seul avec un type d’attente
PAGEIOLATCH_ XX . Dans ce type d’attente, XX peut être SH, UP ou EX. Ce comportement indique que SPID 55 a
émis une demande d’I/S et que SPID 55 attend la fin de la demande d’O/S.
Les opérations qui analysent SQL Server du pool de
mémoires tampons sont lentes sur les ordinateurs
mémoire de grande taille
13/08/2021 • 2 minutes to read
Cet article décrit que l’analyse du pool SQL Server tampon de mémoire tampon peut prendre beaucoup de
temps sur des ordinateurs mémoire de grande taille.
S’applique à : SQL Server
Numéro de la ko d’origine : 4566579
Résumé
Certaines opérations dans SQL Server déclenchent une analyse du pool de mémoires tampons (le cache qui
stocke les pages de base de données en mémoire). Voici quelques opérations qui peuvent déclencher une
analyse de pool de mémoires tampons :
Démarrage de base de données
Arrêt/redémarrage de la base de données
Le failover AG
Suppression d’une base de données
Suppression d’un fichier d’une base de données
Sauvegarde complète/différentielle d’une base de données
Restauration d’une base de données
Restauration du journal des transactions
Restauration en ligne
DBCC CheckDB/CheckTable
Sur les systèmes avec une grande quantité de mémoire (1 To ou plus), l’analyse du pool de mémoires tampons
prend beaucoup de temps, ce qui ralentit l’opération qui a déclenché l’analyse.
Il n’existe actuellement aucun correctif à ce problème. S’il est essentiel que l’opération en question se termine
rapidement, envisagez d’effacer le pool de mémoires tampons à l’aide des commandes suivantes
USE <DatabaseName>; CHECKPOINT; GO :
Si le serveur possède plusieurs bases de données, répétez les commandes ci-dessus pour toutes les bases de
données utilisateur sur le serveur.
Une fois que toutes les bases de données sur le serveur ont été point de contrôle, exécutez la commande
DBCC DROPCLEANBUFFERS ;
WARNING
L’abandon de tampons nettoyés du pool de mémoires tampons supprime toutes les pages de base de données non
modifiées de la mémoire. Cela nécessite des requêtes ultérieures pour lire les données des fichiers de base de données sur
le disque et peut entraîner une dégradation grave des performances.
Plus d’informations
Pour plus d’informations sur les problèmes qui peuvent survenir à partir de pools de mémoires tampons de
grande taille, voir SQL Server : ram large et point de contrôle DB.
À partir SQL Server CU23 2017 et SQL Server 2019 CU9,la journalisation suivante et XEvents ont été ajoutés
pour vous aider à identifier les analyses de pool de mémoires tampons longues :
message errorlog
Si une analyse prend plus de 10 secondes, un message est imprimé comme suit :
XEvent buffer_pool_scan_complete
Si une analyse prend plus d’une seconde, un événement XEvent est enregistré comme suit lorsque l’événement
est activé. Le seuil est plus petit pour pouvoir éventuellement capturer à une granularité plus fine.
Cet article vous aide à contourner le problème dans lequel vous rencontrez une baisse des performances pour
les SQL Server lorsque vous exécutez ou l’agrégation de TOP MAX MIN clauses sur des colonnes.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2965553
Symptômes
Supposons que vous avez des tables partitionées dans Microsoft SQL Server. Lorsque vous exécutez TOP une
clause ou une clause MAX d’agrégation sur des colonnes des tables, vous pouvez être en situation de diminution
MIN des performances.
NOTE
Ce problème ne se produit que sur la colonne de partitionnement.
Solution de contournement
Pour contourner ce problème, créer une requête qui collecte les éléments TOP N de chaque partition. Ensuite,
recherchez les éléments TOP N de cette collection d’éléments.
Par exemple, vous disposez d’un tableau T1 qui possède quatre partitions et la fonction de partition est PF1 . La
table est partitionée sur la colonne PCOL et possède un index sur idx_c1 T1.c1 . Vous pouvez rencontrer le
problème de performances lorsque vous exécutez la requête suivante :
FROM dbo.T1
ORDER BY T1.c1
3. Malheureusement, si la table est repartitionée, vous devez réécrire ces requêtes pour utiliser le nouveau
nombre de partitions. Toutefois, vous pouvez également obtenir le nombre de partitions à partir de
sys.partitions . Par conséquent, au lieu d’utiliser une liste constante de partitions, vous pouvez utiliser
le script SQL suivant :
NOTE
Cet article utilise TOP N avec un ordre par clause comme exemple. MAX et MIN les clauses ont des problèmes
similaires. Par conséquent, il est possible de les contourner en les transformant en requêtes TOP 1, avec l’ordre
croissant ou décroit.
Plus d’informations
Lorsque vous interrogez les lignes TOP N d’une colonne indexée sur une table non partitionée, la requête
présente généralement de bonnes performances. Cela est dû au fait que le plan de requête analyse un index
pour déterminer les éléments principaux.
Toutefois, pour une table partitionée, ce n’est actuellement pas le cas, car les index peuvent également être
partitionés. Cela signifie que vous ne pouvez pas simplement interroger les index pour déterminer les éléments
N supérieurs. Ces éléments peuvent être répartis sur toutes les partitions. Par exemple, prenons le cas suivant
où vous avez une table « a » avec deux partitions P0 et P1 partitionn es autour de 0 :
PA RT IT IO N CLÉ VA L EUR
P0 -2 1
P0 -1 1
P0 0 12
P1 1 1
P1 2 1
P1 3 15
PA RT IT IO N CLÉ VA L EUR
Étant donné que chaque index est partitioné, SQL Server pas analyser l’index en même temps pour déterminer
la valeur maximale. Au lieu de cela, il analyse chaque élément du tableau pour déterminer la valeur maximale.
Dans un tableau qui compte des millions de lignes, ce processus peut être inefficace.
Problèmes de performances et de cohérence
lorsque certains modules sont chargés dans SQL
Server d’adressaie
13/08/2021 • 7 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque certains modules sont chargés dans SQL
Server’espace d’adressal.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2033238
Symptômes
Lorsque certains modules sont chargés dans l’espace d Microsoft SQL Server de traitement d'Sqlservr.exe, vous
pouvez rencontrer les symptômes suivants :
Rapports de diverses conditions et messages d’erreur liés à un blocage (par exemple, un message de SQL
Server de planification tel que 17883, des messages de délai d’application, un blocage grave au sein SQL
Server)
Réponse lente de la SQL Server même si la charge simultanée n’est pas anormalement importante
Exceptions (telles que les violations d’accès), messages d’erreur critique concernant la cohérence de la base
de données, messages d’assertion ou arrêt de processus inattendu
Utilisation du processeur à 100 % et temps de récupération de base de données longs lorsque vous utilisez
des tables OLTP en mémoire dans SQL Server
Échecs inattendus ou inexpliqués lorsque SQL Server processus de gestion Windows appels d’API
Cause
Ces problèmes se produisent car les applications ou autres logiciels installés sur un serveur exécutant SQL
Server peuvent charger certains modules dans le processus SQL Server (Sqlservr.exe). Cela peut être effectué
pour obtenir une exigence de logique métier spécifique, une fonctionnalité améliorée ou la surveillance des
intrusions. Ces modules peuvent effectuer des activités non pris en compte qui incluent la déviation des API
Win32 importantes et des routines SQL Server et l’appel d’API à risque. En outre, certains problèmes
intrinsèques au sein de ces modules peuvent entraîner l’altération de diverses structures de mémoire qui sont
nécessaires au SQL Server de fonctionnement correct.
Solution de contournement
WARNING
Cette solution de contournement peut rendre un ordinateur ou un réseau plus vulnérable aux attaques par des
utilisateurs malveillants ou par des logiciels malveillants tels que des virus. Nous ne recommandons pas cette solution de
contournement, mais fournissons ces informations afin que vous pouvez implémenter cette solution de contournement à
votre propre discrétion. Son utilisation relève de votre responsabilité.
NOTE
Dans certains cas, vous pouvez être dans l’devoir d’effectuer toutes ces actions.
Plus d’informations
L’équipe du support technique microsoft (CSS) a identifié les modules suivants qui peuvent provoquer les
symptômes mentionnés dans la section « Symptômes ». Cette liste sera mise à jour à mesure que de nouveaux
problèmes seront trouvés. Cette liste est fournie pour vous aider à identifier le processus mentionné dans la
section « Résolution ». Ce processus implique généralement la collecte d’un ensemble itératif de données de
diagnostic et de suivi pour la durée du problème.
Les modules suivants peuvent entraîner des problèmes de performances et de stabilité lorsqu’ils sont chargés
dans le SQL Server suivant :
ENTAPI.DLL
ENTAPI.DLL est chargé dans le processus SQL Server si vous installez Mc AntivirusScan Enterprise sur un
serveur exécutant Microsoft SQL Server, puis configurez ce logiciel pour surveiller les SQL Server.
Lorsque ce module est chargé, les API Win 32 importantes sont également SQL Server processus. Si vous
remarquez que ce module est chargé dans le processus SQL Server, configurez Mc AntivirusScan
Enterprise pour exclure SQL Server (Sqlservr.exe) de diverses surveillances avancées, telles que la
Protection contre le dépassement de mémoire tampon.
HIPI.DLL, HcSQL.dll, HcApi.dll, HcThe.dll
Ces fichiers DLL sont chargés dans le processus SQL Server si vous installez le logiciel de prévention des
intrusions de l’hôte Mc Llc sur le même système que SQL Server. Si vous remarquez que ce module est
chargé dans un processus SQL Server, configurez la prévention des intrusions hôtes Mc Antivirus pour
exclure les SQL Server (Sqlservr.exe) de sa liste de surveillance.
SOPHOS_DETOURED.DLL et SOPHOS_DETOURED_x64.DLL, SWI_IFSLSP_64.dll
Ces fichiers DLL sont chargés dans le processus SQL Server si vous installez le programme Antivirus
Sophos sur un serveur en cours d’exécution SQL Server. Si vous remarquez que ce module est chargé
dans le processus SQL Server, vous pouvez configurer la sous-clé de Registre AppInit_Dlls pour éviter de
charger ce module dans SQL Server processus.
PIOLEDB.DLL et PISDK.DLL
Ces fichiers DLL sont chargés dans le processus SQL Server si vous utilisez le fournisseur PI OLEDB pour
accéder aux données à partir d’un serveur PI ou si vous utilisez des procédures stockées étendues qui
utilisent le SDK PI. Si vous remarquez que ces modules sont chargés dans le processus SQL Server,
contactez le fournisseur de ces modules pour configurer le fournisseur OLEDB en tant que fournisseur
hors processus. Cette configuration permet d’éviter la nécessité de charger ces modules dans SQL Server
processus.
.DLL UMPPC,SCRIPTCONTROL.DLL
Ces fichiers DLL sont chargés dans l’espace d’adressaison de l’agent SQL Server ou SQL Server si vous
activez le paramètre de prévention « Données supplémentaires du mode utilisateur » pour les
programmes de protection anti-virus/point de terminaison CrowdStrike. Vous remarquerez peut-être des
échecs SQL Server’agent tente de créer de nouveaux processus lors de l’exécution de travaux. Vous
pouvez également rencontrer des échecs lors de la tentative de lancement SQL Server Management
Studio.
DLL relative au noir carbone
perfiCrcPerfMonMgr.dll
Ce fichier DLL est chargé dans le processus SQL Server si vous installez le client Trend Micro OfficeScan.
Reportez-vous au paramètre de liste d’exclusion des fournisseurs de logiciels dans la liste
d’exclusionsd’analyse recommandée pour les produits trend Micro Endpoint .
Pour plus d’informations sur la façon de définir des stratégies d’exclusion pour Sqlservr.exe dans le logiciel
d’application abordé dans cet article, consultez le manuel du produit ou contactez le fournisseur du logiciel.
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.
Les informations et la solution de ce document représentent l’affichage actuel de Microsoft Corporation sur ces
problèmes à la date de publication. Cette solution est disponible par le biais de Microsoft ou d’un fournisseur
tiers. Microsoft ne recommande pas spécifiquement un fournisseur tiers ou une solution tierce que cet article
pourrait décrire. Il peut également y avoir d’autres fournisseurs tiers ou solutions tierces que cet article ne décrit
pas. Étant donné que Microsoft doit répondre à l’évolution des conditions du marché, ces informations ne
doivent pas être interprétées comme un engagement de Microsoft. Microsoft ne peut pas garantir ou approuver
la précision des informations ou des solutions présentées par Microsoft ou par un fournisseur tiers mentionné.
Microsoft n’offre aucune garantie et exclut toutes les représentations, garanties et conditions, qu’elles soient
express, implicites ou statutaires. Celles-ci incluent, sans s’y limiter, les représentations, les garanties ou les
conditions de titre, de non-contrefaçon, de condition satisfaisante, de qualité et d’aptitude à un usage particulier,
en ce qui concerne tout service, solution, produit ou tout autre matériel ou information. En aucun cas Microsoft
ne sera responsable de toute solution tierce mentionné dans cet article.
Références
Des déviations ou des techniques similaires peuvent entraîner des comportements inattendus avec SQL
Server
Comment exécuter un objet COM basé sur une DLL en dehors SQL Server processus
S’applique à
SQL Server 2005 Developer Edition
SQL Server 2005 Enterprise Edition
SQL Server 2005 Enterprise X64 Edition
SQL Server 2005 Express Edition
SQL Server 2005 Express Edition services avancés
SQL Server 2005 Édition Standard
SQL Server 2005 Standard X64 Edition
SQL Server 2005 Workgroup Edition
SQL Server Développeur 2008
SQL Server 2008 Enterprise
SQL Server 2008 Express
SQL Server 2008 Express avec services avancés
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Express avec services avancés
SQL Server 2012 Analysis Services
SQL Server 2012 Business Intelligence
SQL Server Développeur 2012
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Express
SQL Server Web 2014
SQL Server 2014 Standard
SQL Server Développeur 2016
SQL Server 2016 Enterprise
SQL Server 2016 Enterprise Core
SQL Server 2016 Express
SQL Server Web 2016
SQL Server 2016 Standard
SQL Server Développeur 2017 sur Windows
SQL Server 2017 Enterprise sur Windows
SQL Server 2017 Enterprise Core sur Windows
SQL Server 2017 Standard Windows
SQL Server 2017 sur Windows (toutes les éditions)
L’utilisation de pilotes de filtre système peut
entraîner SQL Server Moteur de base de données
dégradation des performances et des problèmes de
cohérence
14/08/2021 • 5 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque certains pilotes de filtre sont chargés sur un
ordinateur en cours d’exécution SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2454053
Symptômes
Vous pouvez rencontrer les symptômes suivants lorsque certains pilotes de filtre sont chargés dans un système
qui exécute Microsoft SQL Server composants :
Utilisation élevée du processeur pour le processus SQL Server, en particulier le temps processeur privilégié
Réponse lente de la SQL Server même lorsque la charge/l’activité simultanée n’est pas anormalement
importante
Rapports de diverses conditions et messages d’erreur liés à un blocage (SQL Server messages de
planification tels que 17883, les messages de délai d’arrêt de l’application et le blocage grave dans SQL
Server)
Cause
Les pilotes de filtre peuvent être installés sur un système dans le cadre du programme d’installation d’une
application pour fournir un certain type de fonctionnalité. Par exemple, la protection antivirus, les sauvegardes
en ligne, les services de chiffrement et les installations de compression ou de défragmentation des données. Ces
pilotes de filtre s’insèrent eux-mêmes dans la pile de pilotes Windows pour améliorer ou modifier le
comportement des demandes qui passent par la pile de pilotes et qui sont destinées à un appareil.
Dans certaines conditions, ces demandes peuvent prendre beaucoup de temps ou consommer des ressources
excessives. Lorsque cela se produit, divers problèmes se produisent et sont abordés dans la section Symptômes.
En outre, il peut y avoir une forme d’incompatibilité entre les différents pilotes de filtre présents dans la même
pile de pilotes, ce qui peut également entraîner certains des problèmes abordés dans la section Symptômes.
Résolution
L’approche générale pour résoudre ces situations est la suivante.
NOTE
Pour plus d’informations sur chacune des étapes suivantes, voir la section Plus d’informations :
WARNING
Cette solution de contournement peut rendre un ordinateur ou un réseau plus vulnérable aux attaques par des
utilisateurs malveillants ou par des logiciels malveillants tels que des virus. Nous ne recommandons pas cette
solution de contournement, mais fournissons ces informations afin que vous pouvez implémenter cette solution
de contournement à votre propre discrétion. Son utilisation relève de votre responsabilité.
Dans certains cas, vous pouvez être dans l’devoir d’effectuer toutes ces actions. Reportez-vous à la section Plus
d’informations pour obtenir des instructions spécifiques à certains pilotes de filtre.
Plus d’informations
L’équipe du support technique et des services client (CSS) de Microsoft a identifié les pilotes de filtre suivants
qui peuvent provoquer les symptômes mentionnés dans cet article. Cette liste est mise à jour lorsque de
nouveaux problèmes sont trouvés. Cette liste est fournie pour faciliter le processus d’identification décrit dans la
section Résolution. La recherche du pilote de filtre problématique implique généralement la collecte d’un
ensemble itératif de données de diagnostic et de suivi lorsque le problème se produit.
Les pilotes de filtre suivants peuvent entraîner des problèmes de performances et de stabilité pour SQL Server :
MFEBOPK.SYS
Ce pilote de filtre est utilisé pour la fonctionnalité de protection de dépassement de mémoire tampon
dans Mc AntivirusScan Enterprise. Si cette fonctionnalité est activée, vous remarquerez que sqlservr.exe
figure dans la liste des processus protégés par la protection de dépassement de mémoire tampon. Si
vous avez ce pilote de filtre sur un système qui exécute SQL Server, vous devez effectuer les actions
spécifiées dans la section Résolution. Vous pouvez également consulter le lien suivant pour plus
d’informations :
Problème à fort impact : les serveurs peuvent ne plus être répondeurs en raison de plusieurs
problèmes
NLEMSQL64.SYS et NLEMSQL.SYS
Ce pilote de filtre est installé par le logiciel de chiffrement NetLib. Lorsque ce pilote de filtre est installé
sur un ordinateur exécutant SQL Server et que vous effectuez une sauvegarde sur un partage réseau,
vous pouvez rencontrer des échecs qui retournent l’erreur du système d’exploitation 1 : Fonction
incorrecte. Pour résoudre ce problème, contactez le fournisseur de logiciels pour obtenir les mises à jour
du pilote de filtre.
MFETDIK.SYS
Ce pilote de filtre est utilisé pour la fonctionnalité de Mini-Firewall antivirus Mc Antivirus dans les
produits Mc AntivirusScan Enterprise et Mc Antivirus McShield. Si cette fonctionnalité est activée, vous
remarquerez que sqlservr.exe figure dans la liste des processus surveillés par la fonctionnalité antivirus.
Si vous avez ce pilote de filtre sur un système qui exécute SQL Server, vous devez effectuer les actions
spécifiées dans la section Résolution. Vous pouvez également envisager d’ajouter SQL Server processus à
la liste des processus à faible risque dans la configuration antivirus.
Pour plus d’informations générales sur les pilotes de filtre, reportez-vous aux liens suivants :
Types de pilotes WDM
Comment désactiver temporairement le pilote de filtre en mode noyau dans Windows
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.
Microsoft fournit des informations de contact de sociétés tierces afin de vous aider à obtenir un support
technique. Ces informations de contact peuvent être modifiées sans préavis. Microsoft ne garantit pas
l'exactitude des informations concernant les sociétés tierces.
Les informations et la solution de ce document représentent l’affichage actuel de Microsoft Corporation sur ces
problèmes à la date de publication. Cette solution est disponible par le biais de Microsoft ou d’un fournisseur
tiers. Microsoft ne recommande pas spécifiquement un fournisseur tiers ou une solution tierce que cet article
pourrait décrire. Il peut également y avoir d’autres fournisseurs tiers ou solutions tierces que cet article ne décrit
pas. Étant donné que Microsoft doit répondre à l’évolution des conditions du marché, ces informations ne
doivent pas être interprétées comme un engagement de Microsoft. Microsoft ne peut pas garantir ou approuver
la précision des informations ou des solutions présentées par Microsoft ou par un fournisseur tiers mentionné.
Microsoft n’offre aucune garantie et exclut toutes les représentations, garanties et conditions, qu’elles soient
express, implicites ou statutaires. Celles-ci incluent, sans s’y limiter, les représentations, les garanties ou les
conditions de titre, de non-contrefaçon, de condition satisfaisante, de qualité et d’aptitude à un usage particulier,
en ce qui concerne tout service, solution, produit ou tout autre matériel ou information. En aucun cas Microsoft
ne sera responsable de toute solution tierce mentionné dans cet article.
Une utilisation élevée du processeur se produit
lorsque vous exécutez des requêtes dans SQL
Server
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où l’utilisation élevée du processeur se produit lorsque vous
exécutez des requêtes dans SQL Server.
S’applique à : SQL Server
Numéro de la ko d’origine : 2009160
Symptômes
Lorsque vous exploitez un serveur qui exécute Microsoft SQL Server et qui a une charge de travail hautement
simultanée, vous remarquez certains problèmes de performances dans lesquels les requêtes contribuent
considérablement à une utilisation élevée du processeur ou à des demandes d’octroi de mémoire extrêmes.
Vous pouvez également faire face à d’autres effets secondaires, tels que les conditions OOM, la pression de la
mémoire pour planifier l’urgence du cache ou des RESOURCE_SEMAPHORE attentes inattendues.
En outre, vous remarquerez peut-être que les plans de requête pour les requêtes qui consomment beaucoup de
processeurs ou de mémoires ont l’attribut OPTIMIZED pour un opérateur de jointrie de boucles imbrique
définie sur True .
Cause
Ce problème se produit dans certains cas, car SQL Server processeur de requêtes introduit une opération de tri
pour l’optimisation, bien qu’elle ne soit pas requise. Cette opération est appelée « boucles imbrmbrées
optimisées » ou « tri par lots ».
Dans ce cas, le plan ne touche qu’un plus petit nombre de lignes et le coût d’installation de l’opération de tri peut
l’emporte sur ses avantages. Par conséquent, cela entraîne des performances médiocres.
Résolution
Pour résoudre le problème, utilisez l’indicateur de suivi 2340 pour désactiver l’optimisation. Sinon, pour
désactiver l’optimisation au niveau de la requête, appliquez l’indication de requête suivante :
Avant d’utiliser cet indicateur de suivi, vous pouvez tester minutieusement vos applications pour vous assurer
que vous bénéficiez des avantages attendus en terme de performances lorsque vous désactivez cette
optimisation. Cela est dû au fait que l’optimisation du tri peut être utile en cas d’augmentation importante du
nombre de lignes touchés par le plan.
Plus d’informations
Moteur de base de données Options de démarrage du service
S’applique à
SQL Server 2019
SQL Server 2017 sur Windows (toutes les éditions)
SQL Server 2017 sur Linux (toutes éditions)
SQL Server 2016
SQL Server 2014
SQL Server 2012
SQL Server 2010
SQL Server 2008
SQL Server 2008 Workgroup
SQL Server Web 2008
SQL Server 2008 Express avec services avancés
SQL Server 2008 Express
SQL Server 2008 Enterprise
SQL Server 2008 Developer- SQL Server 2005
SQL Server 2005 Édition Standard
SQL Server 2005 Express Edition services avancés
SQL Server 2005 Express Edition
SQL Server Version d’évaluation 2005
SQL Server 2005 Enterprise X64 Edition
SQL Server 2005 Enterprise Edition
SQL Server 2005 Developer Edition
Le Moniteur de ressources entre une condition non
rapportant sur un serveur exécutant SQL Server
13/08/2021 • 4 minutes to read
Cet article fournit plus d’informations sur le moniteur de ressources qui ne produit pas de résultats.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2216485
Symptômes
Sur un serveur exécutant Microsoft SQL Server 2008 ou une version ultérieure, la tâche De l’Observateur de
ressources enregistre le message suivant toutes les 5 secondes :
Cause
La tâche Moniteur de ressources s’est régulièrement chargée d’écouter les événements de mémoire classés
comme faibles, élevés ou réguliers. Le moniteur avertit les abonnés aux événements lorsque ces événements se
produisent.
Ces événements de mémoire peuvent être externes aux SQL Server. Les événements externes incluent des
notifications du système d’exploitation et sont à l’échelle du système. D’autres événements sont internes SQL
Server. Les événements internes incluent les notifications du pool de mémoires tampons et sont à l’échelle du
processus. Lorsque de telles notifications sont reçues, différents consommateurs de mémoire ont une utilisation
plus courte de la mémoire.
NOTE
Les consommateurs peuvent être des employés de mémoire qui sont des magasins de cache, des magasins d’utilisateurs
ou des magasins d’objets.
Si certains consommateurs de mémoire utilisent une grande quantité de mémoire, la préparation du tri que les
consommateurs effectuent peut prendre beaucoup de temps.
La tâche Scheduler Monitor s’exécute toutes les 5 secondes. Le moniteur de planification vérifie si le moniteur de
ressources est passé d’un consommateur à un autre au cours des 60 dernières secondes. Lorsque le Moniteur
de planification détecte que le Moniteur de ressources n’a pas été déplacé au-delà d’un consommateur pendant
60 secondes, le moniteur de planification interprète ce scénario comme le moniteur de ressources entrant dans
un état non-rendement. Cette interprétation amène le moniteur de planification à enregistrer le message
d’erreur mentionné dans la section Symptômes.
NOTE
À compter SQL Server 2019, l’intervalle de 60 secondes est augmenté jusqu’à 120 secondes. Cette augmentation réduit
la fréquence de ces notifications de diagnostic. Elle réduit également la génération des fichiers de vidage mémoire.
Ces messages sont également élevés si la vitesse à laquelle le Moniteur de ressources libère de la mémoire est
inférieure à 2 Mo toutes les 5 secondes.
Ces messages ne sont qu’une indication que le moniteur de ressources est occupé à nettoyer les grands
consommateurs. Ces messages n’indiquent pas nécessairement un problème avec le Moniteur de ressources
lui-même.
Résolution
À partir des Service Packs suivants, le message du Moniteur de ressources sans rendement s’étend pour isoler
facilement l’employé de la mémoire qui conduit à la condition non-rendement :
Service Pack 2 de Microsoft SQL Server 2008
Service Pack 1 de Microsoft SQL Server 2008 R2
Le nouveau message ressemblera à l’exemple suivant :
Resource Monitor (0x9b0) Worker 0x0000000003A2C1C0 appears to be non-yielding on Node Node_#. Memory
freed: 0 KB. Last wait: > lastwaittype. Last clerk: type clerk_type, name clerk_name. Approx CPU Used:
kernel 0 ms, user 0 ms, Interval: Interval_value.
Les descriptions des différents champs utilisés dans ce message sont les suivantes :
Mémoire libérée : Ce champ indique la quantité de mémoire libérée par le Moniteur de ressources
pour l’intervalle spécifié. Elle est mesurée en kilo-octets. Si la vitesse à laquelle la mémoire est libérée ne
dépasse pas 2 Mo toutes les 5 secondes, le moniteur du programme de planification détecte cette
condition comme une condition qui n’a pas de rendement.
Dernière attente : Ce champ est le dernier type d’attente pour le thread Moniteur de ressources. Vous
pouvez utiliser ce champ en combinaison avec le Approx CPU Used champ. Cette combinaison de champs
permet d’identifier si le thread Moniteur de ressources est en cours d’exécution ou en attente d’une partie
significative de l’intervalle.
Dernier employé : Ce champ est le type et le nom de l’employé de la mémoire qui a émissé sa mémoire
lorsque la condition de non-rendement s’est produite.
Utilisation approximative du processeur : Ce champ est le noyau et le temps utilisateur utilisés par
l’Observateur de ressources, tel que mesuré en millisecondes. Vous pouvez utiliser ce champ avec
d’autres champs pour vérifier que le moniteur de ressources progresse pendant l’intervalle spécifié.
Inter valle : Ce champ est le temps écoulé depuis que le dernier employé a été averti comme mesuré en
millisecondes.
Vous pouvez utiliser ce message pour identifier la source de la notification de mémoire faible. Vous pouvez
également utiliser les entrées RING_BUFFER_RESOURCE_MONITOR à partir de l’heure du message.
Ressources
Pour plus d’informations sur l’interprétation RING_BUFFER_RESOURCE MONITOR, consultez le billet de blog
techcommunity suivant :
Fonctionnement : quelles sont les RING_BUFFER_RESOURCE_MONITOR me le dire ?
La tâche Moniteur de ressources peut résoudre les problèmes de performances liés à la mémoire SQL Server.
SQL Server écoute et répond aux notifications de mémoire. Pour plus d’informations sur ces éléments, consultez
les articles de blog MSDN suivants :
Message SQL Server ensemble de travail
Résolution des problèmes de performances dans SQL Server 2008
L’hypothèse d’un contenu joint dans le New
Cardinality Estimateor dégrade les performances
des requêtes
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre les problèmes de performances qui peuvent se produire dans SQL Server 2014
et versions ultérieures lorsque vous compilez vos requêtes à l’aide du nouvel estimateur de cardinalité.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 3189675
Symptômes
Prenons l’exemple du scénario suivant :
Vous utilisez SQL Server 2014 ou une version ultérieure.
Vous exécutez une requête qui contient des prédicats de filtres joints et non joints.
Vous compilez la requête à l’aide de la nouvelle Estimation de la cardinalité (SQL Server) (Nouveau CE).
Dans ce scénario, vous faites face à une dégradation des performances des requêtes.
Ce problème ne se produit pas si vous compilez la requête à l’aide du ce hérité.
Résolution
Dans SQL Server 2014 et versions ultérieures, vous pouvez utiliser l’indicateur de suivi 9476 pour forcer le
Nouveau CE à utiliser l’hypothèse De contenu simple au lieu de l’hypothèse de contenu de base par défaut. (Voir
la section Plus d’informations.)
L’activation de cet indicateur de suivi peut améliorer le choix du plan de requête sans avoir à revenir
complètement au modèle CE hérité si les conditions suivantes sont vraies :
Vous pouvez faire l’expérience d’un choix de plan de requête sous-timal qui entraîne une dégradation globale
des performances pour les requêtes qui contiennent des jointeurs et des prédicats de filtre non joints.
Vous pouvez vérifier une imprécision significative dans une estimation de « cardinalité de jointure »
(autrement dit, le nombre réel ou estimé de lignes qui diffèrent considérablement).
Cette imprécision n’existe pas lorsque vous compilez des requêtes à l’aide du ce hérité.
Vous pouvez activer cet indicateur de suivi globalement, au niveau de la session ou au niveau de la requête.
NOTE
L’utilisation incorrecte des indicateurs de suivi peut dégrader les performances de votre charge de travail. Pour plus
d’informations, voir Hints (Transact-SQL) - Query.
Plus d’informations
Depuis SQL Server 2014, le New Cardinality Estimateor a été introduit pour le niveau de compatibilité de base
de données 120 et supérieur. Le nouveau ce modifie plusieurs hypothèses à partir du ce hérité dans le modèle
utilisé par l’optimiseur de requête lorsqu’il estime la cardinalité pour différents opérateurs et prédicats.
L’une de ces modifications est liée à l’hypothèse d’un contenu joint.
Le modèle CE hérité suppose que les utilisateurs interrogent toujours les données qui existent. Cela signifie que,
pour un prédicat de jointage qui implique une opération équijoin pour deux tables, les colonnes jointes existent
sur les deux côtés de la jointre. En présence de prédicats de filtres non joints supplémentaires par rapport à la
table de jointeurs, le ce hérité suppose un certain niveau de corrélation pour les prédicats de jointeurs et les
prédicats de filtre non joints. Cette corrélation implicite est appelée Contenu simple.
Sinon, le nouveau ce utilise le contenu de base comme corrélation. Le nouveau modèle CE suppose que les
utilisateurs peuvent interroger des données qui n’existent pas. Cela signifie que les prédicats de filtre sur des
tables distinctes peuvent ne pas être corrélés les uns avec les autres. Par conséquent, nous utilisons une
approche probabiliste.
Pour de nombreux scénarios pratiques, l’utilisation de l’hypothèse De base de contenu crée de meilleures
estimations. Cela permet, à son tour, de créer des choix de plan de requête plus efficaces. Toutefois, dans certains
cas, l’utilisation de l’hypothèse de l’utilisation de l’ment simple peut fournir de meilleurs résultats. Si cela se
produit, vous pouvez faire face à un choix de plan de requête moins efficace lorsque vous utilisez le Nouveau CE
au lieu du ce hérité.
Recommandations pour réduire la contention
d’allocation dans SQL Server base de données
tempdb
15/08/2021 • 9 minutes to read
Cet article vous aide à résoudre le problème où vous remarquez un blocage grave lorsque le serveur rencontre
une charge importante.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2154845
Symptômes
Sur un serveur en cours d’Microsoft SQL Server, vous remarquez un blocage grave lorsque le serveur rencontre
une charge importante. Dynamic Management Views [ ou ] indique que ces demandes ou tâches sont en attente
sys.dm_exec_request sys.dm_os_waiting_tasks de ressources tempdb. En outre, le type d’attente PAGELATCH_UP
est , et la ressource d’attente pointe vers des pages dans tempdb . Ces pages peuvent être au format 2:1:1, 2:1:3,
et ainsi de suite (pages PFS et SGAM dans tempdb).
NOTE
Si une page est divisible par 8088, il s’agit d’une page PFS. Par exemple, la page 2:3:905856 est un pfs dans file_id=3 dans
tempdb .
Cause
Lorsque la base de données tempdb est très utilisée, SQL Server peut être en conflit lorsqu’elle tente
d’allouer des pages. Selon le degré de contention, les requêtes et les requêtes qui impliquent tempdb risquent
de ne pas répondre brièvement.
Lors de la création de l’objet, deux (2) pages doivent être allouées à partir d’une étendue mixte et affectées au
nouvel objet. Une page est pour la carte d’allocation d’index (IAM) et la seconde pour la première page de l’objet.
SQL Server suit les étendues mixtes à l’aide de la page SGAM (Shared Global Allocation Map). Chaque page
SGAM suit environ 4 gigaoctets de données.
Pour allouer une page à partir de l’étendue mixte, SQL Server doit analyser la page d’espace libre de page (PFS)
pour déterminer quelle page mixte est libre à allouer. La page PFS assure le suivi de l’espace disponible sur
chaque page, et chaque page PFS suit environ 8 000 pages. La synchronisation appropriée est conservée pour
apporter des modifications aux pages PFS et SGAM ; et qui peut bloquée d’autres modificateurs pendant de
courtes périodes.
Lorsque SQL Server recherche une page mixte à allouer, il démarre toujours l’analyse sur le même fichier et la
même page SGAM. Cela provoque un conflit intense sur la page SGAM lorsque plusieurs allocations de pages
mixtes sont en cours. Cela peut entraîner les problèmes documentés dans la section Symptômes.
NOTE
Les activités de dé allocation doivent également modifier les pages. Cela peut contribuer à augmenter la contention.
Pour en savoir plus sur les différents mécanismes d’allocation utilisés par SQL Server (SGAM, GAM, PFS, IAM),
consultez la section Références.
Résolution
SQL Server 2016 et versions ultérieures :
Révision
Optimisation des performances de base de données tempdb dans SQL Server.
TEMPDB : fichiers et indicateurs de suivi et mises à jour, Oh My!
Appliquez la mise à jour à jour SQL Server 2016 et 2017 pour tirer parti de la mise à jour suivante.
Une amélioration a été apportée afin de réduire davantage la contention dans SQL Server 2016 et
SQL Server 2017. En plus de l’allocation round robin sur tous les fichiers de données tempdb, le
correctif améliore l’allocation de page PFS en faisant des allocations round robin sur plusieurs
pages PFS dans le même fichier de données. Pour plus d’informations, voir KB4099472 -
Amélioration de l’algorithme de tour robin de page PFS dans SQL Server 2014, 2016 et 2017.
Pour plus d’informations sur ces recommandations et d’autres modifications introduites dans SQL 2016
SQL Server 2016 : il s’exécute simplement plus rapidement : modifications -T1117 et -T1118 pour
TEMPDB et les bases de données utilisateur
SQL Server 2016 - Il s’exécute simplement plus rapidement : configuration TEMPDB automatique
SQL Server 2014 et versions antérieures :
Pour améliorer la concurrence de tempdb, essayez les méthodes suivantes :
Augmentez le nombre de fichiers de données dans tempdb pour optimiser la bande passante du
disque et réduire la contention dans les structures d’allocation. En règle générale, si le nombre de
processeurs logiques est inférieur ou égal à huit (8), utilisez le même nombre de fichiers de
données que les processeurs logiques. Si le nombre de processeurs logiques est supérieur à huit
(8), utilisez huit fichiers de données. Si la contention persiste, augmentez le nombre de fichiers de
données par multiples de quatre (4) jusqu’au nombre de processeurs logiques jusqu’à ce que la
contention soit réduite à des niveaux acceptables. Vous pouvez également apporter des
modifications à la charge de travail ou au code.
Envisagez d’implémenter les recommandations des meilleures pratiques dans Working with
tempdb dans SQL Server 2005.
Si les étapes précédentes ne réduisent pas considérablement la contention d’allocation et que la
contention se trouve sur les pages SGAM, implémentez l’indicateur de suivi -T1118 . Sous cet
indicateur de suivi, SQL Server alloue des étendues complètes à chaque objet de base de données,
éliminant ainsi la contention sur les pages SGAM.
NOTE
Cet indicateur de suivi affecte chaque base de données sur l’instance de SQL Server. Pour plus
d’informations sur la façon de déterminer si la contention d’allocation se trouve sur les pages
SGAM, voir la contention de surveillance causée par les opérations DML.
Pour SQL Server environnements 2014, veillez à appliquer le Service Pack 3 pour tirer parti du
correctif documenté dans l’article de la Ko suivant. Cette amélioration réduit davantage la
contention dans SQL Server environnements 2014. En plus de l’allocation round robin sur tous les
fichiers de données tempdb, le correctif améliore l’allocation de page PFS en faisant des allocations
round robin sur plusieurs pages PFS dans le même fichier de données.
KB4099472 - Amélioration de l’algorithme de tour robin de page PFS SQL Server 2014, 2016 et
2017
Blog de l’équipe MSSQLQl : Fichiers et indicateurs de suivi et mises à jour dans SQL Server tempdb
La liste suivante explique comment l’utilisation de l’indicateur de suivi -T1118 réduit la contention :
-T1118 est un paramètre à l’échelle du serveur.
Incluez l’indicateur de suivi -T1118 dans les paramètres de démarrage de SQL Server afin que l’indicateur
de suivi reste en vigueur même après SQL Server recyclé.
-T1118 supprime presque toutes les allocations de page unique sur le serveur.
En désactivant la plupart des allocations de page unique, vous réduisez la contention sur la page SGAM.
Si -T1118 est allumé, presque toutes les nouvelles allocations sont réalisées à partir d’une page GAM (par
exemple, 2:1:2) qui alloue huit (8) pages (une étendue) à la fois à un objet plutôt qu’à une seule page à partir
d’une étendue pour les huit (8) premières pages d’un objet, sans l’indicateur de suivi.
Les pages IAM utilisent toujours les allocations de page unique de la page SGAM, même si -T1118 est
allumé. Toutefois, lorsqu’il est combiné avec le correctif 8.00.0702 et l’augmentation des fichiers de données
tempdb, l’effet net est une réduction de la contention sur la page SGAM. Pour les problèmes d’espace,
consultez la section suivante.
Inconvénients
L’inconvénient de l’utilisation de -T1118 est que vous pouvez constater une augmentation de la taille de la base
de données si les conditions suivantes sont vraies :
De nouveaux objets sont créés dans une base de données utilisateur.
Chacun des nouveaux objets occupe moins de 64 Ko de stockage.
Si ces conditions sont vraies, vous pouvez allouer 64 Ko (huit pages * 8 Ko = 64 Ko) pour un objet qui ne
nécessite que 8 Ko d’espace, ce qui vous permet de perdre 56 Ko de stockage. Toutefois, si le nouvel objet utilise
plus de 64 Ko (huit pages) au cours de sa durée de vie, l’indicateur de suivi n’a aucun inconvénient. Par
conséquent, dans le pire des cas, SQL Server peut allouer sept (7) pages supplémentaires lors de la première
allocation uniquement pour les nouveaux objets qui ne dépassent jamais une (1) page.
Références
Surveillance et dépannage tempDB : goulot d’étranglement d’allocation
Gestion de TempDB dans SQL Server : Configuration tempDB
SQL Server TempDB - Nombre de fichiers - La brute
SQL Server (2005 et 2008) Trace Flag 1118 (-T1118) Utilisation
Résoudre les problèmes de blocage causés par
l’escalade de verrouillage dans SQL Server
13/08/2021 • 11 minutes to read
Résumé
L’escalade de verrouillage est le processus de conversion de nombreux verrous finaux (tels que les verrous de
ligne ou de page) en verrous de table. Microsoft SQL Server détermine dynamiquement quand faire une
escalade de verrouillage. Lorsqu’il prend cette décision, SQL Server tient compte du nombre de verrous qui sont
placés dans une analyse particulière, du nombre de verrous détenus par l’ensemble de la transaction et de la
mémoire utilisée pour les verrous dans le système dans son ensemble. En règle générale, SQL Server
comportement par défaut de l’utilisateur entraîne une escalade de verrouillage uniquement à ces moments où
cela améliorerait les performances ou lorsque vous devez réduire la mémoire de verrouillage système excessive
à un niveau plus raisonnable. Toutefois, certaines conceptions d’applications ou de requêtes peuvent déclencher
une escalade de verrouillage à un moment où cette action n’est pas souhaitable, et le verrouillage de table
remontée peut bloquer d’autres utilisateurs. Cet article explique comment déterminer si l’escalade de
verrouillage est à l’origine du blocage et comment gérer l’escalade de verrou indésirable.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 323630
En supprimant ces enregistrements quelques centaines à la fois, vous pouvez réduire considérablement
le nombre de verrous qui s’accumulent par transaction. Cela permet d’éviter l’escalade de verrouillage.
Par exemple, vous exécutez la requête suivante :
Réduisez l’encombrement de verrouillage de la requête en rendant la requête aussi efficace que possible.
Des analyses de grande taille ou de nombreuses recherche de signet peuvent augmenter le risque
d’escalade de verrouillage. En outre, elles augmentent le risque d’blocages et affectent négativement la
concurrence et les performances. Une fois que vous avez identifié que la requête à l’origine de l’escalade
de verrouillage, recherchez les opportunités de créer de nouveaux index ou d’ajouter des colonnes à un
index existant pour supprimer les analyses d’index ou de tableau et optimiser l’efficacité des recherches
d’index. Examinez le plan d’exécution et créez potentiellement de nouveaux index non exclusifs pour
améliorer les performances des requêtes. Pour plus d’informations, voir SQL Server Index Architecture
and Design Guide.
L’un des objectifs de cette optimisation est de faire en sorte que les requêtes d’index retournent le moins
de lignes possible pour réduire le coût des recherche de signets (optimisez la sélectivité de l’index pour la
requête). Si SQL Server qu’un opérateur logique de recherche de signet retournera de nombreuses
lignes, il peut utiliser une clause pour rechercher le PREFETCH signet. Si SQL Server est utilisé pour une
recherche de signet, il doit augmenter le niveau d’isolation de transaction d’une partie de la requête en «
lecture répétable » pour une partie de la PREFETCH requête. Cela signifie que ce qui peut ressembler à
une instruction à un niveau d’isolation « en lecture seule » peut acquérir plusieurs milliers de verrous de
clé (à la fois sur l’index en cluster et sur un SELECT index non verrouillé). Cela peut entraîner le
dépassement des seuils d’escalade de verrouillage par une telle requête. Ceci est particulièrement
important si vous constatez que le verrou réamorcer est un verrou de table partagé, bien qu’ils ne soient
pas fréquemment visibles au niveau d’isolation « en lecture seule » par défaut. Si une clause Bookmark
Lookup WITH est à l’origine de l’escalade, envisagez d’ajouter des colonnes à l’index non réservé qui
apparaît dans la recherche d’index, ou l’opérateur logique d’analyse d’index sous l’opérateur logique
Bookmark Lookup dans le plan de PREFETCH requête. Il peut être possible de créer un index de
couverture (un index qui inclut toutes les colonnes d’une table qui ont été utilisées dans la requête), ou au
moins un index qui couvre les colonnes qui ont été utilisées pour les critères de jointeur ou dans la clause
WHERE s’il n’est pas pratique d’inclure tout le texte dans la liste « sélectionner une colonne ».
Une jointation de boucle imbriée peut également utiliser, ce qui PREFETCH entraîne le même
comportement de verrouillage.
L’escalade de verrouillage ne peut pas se produire si un autre SPID détient actuellement un verrou de
table incompatible. L’escalade de verrouillage est toujours resserré jusqu’à un verrou de table et jamais à
un verrou de page. En outre, si une tentative d’escalade de verrouillage échoue parce qu’un autre SPID
contient un verrou TAB incompatible, la requête qui a tenté l’escalade ne bloque pas en attendant un
verrou TAB. Au lieu de cela, il continue d’acquérir des verrous à son niveau d’origine, plus granulaire
(ligne, clé ou page), en faisant régulièrement des tentatives d’escalade supplémentaires. Par conséquent,
une méthode pour empêcher l’escalade de verrouillage sur une table particulière consiste à acquérir et à
maintenir un verrou sur une autre connexion qui n’est pas compatible avec le type de verrouillage
escamorcer. Un verrou IX (intention exclusive) au niveau de la table ne verrouille pas les lignes ou les
pages, mais il n’est toujours pas compatible avec un verrou de tabulation S (partagé) ou X (exclusif). Par
exemple, supposons que vous devez exécuter un travail par lot qui modifie de nombreuses lignes dans la
table mytable et qui a provoqué le blocage en raison de l’escalade de verrouillage. Si ce travail se termine
toujours en moins d’une heure, vous pouvez créer un travail Transact-SQL qui contient le code suivant et
planifier le démarrage du nouveau travail quelques minutes avant l’heure de début du travail par lot :
BEGIN TRAN;
SELECT * FROM mytable (UPDLOCK, HOLDLOCK) WHERE 1 = 0;
WAITFOR DELAY '1:00:00';
COMMIT TRAN;
Cette requête acquiert et maintient un verrou IX sur montable pendant une heure. Cela empêche
l’escalade de verrouillage sur la table pendant cette période. Ce lot ne modifie aucune donnée ou ne
bloque pas les autres requêtes (sauf si l’autre requête force un verrouillage de table à l’aide de l’indicateur
TABLOCK ou si un administrateur a désactivé les verrous de page ou de ligne à l’aide de ALTER INDEX).
Éliminer l’escalade de verrouillage causée par un manque de capacité de recherche de ressources, un
terme de base de données relationnel utilisé pour décrire si une requête peut utiliser des index pour les
prédicats et les colonnes de jointage. Pour plus d’informations sur la sargabilité, voir Considérations sur
les requêtes du Guide de conception. Par exemple, une requête relativement simple qui ne semble pas
demander beaucoup de lignes( ou peut-être une seule ligne) peut encore finir par analyser une table/un
index entier. Cela peut se produire s’il existe une fonction ou un calcul dans le côté gauche d’une clause
WHERE. Les exemples de type sargabilité incluent les conversions de type de données implicites ou
explicites, la fonction système ISNULL(), une fonction définie par l’utilisateur avec la colonne transmise en
tant que paramètre ou un calcul sur la colonne, tel que ou WHERE CONVERT(INT, column1) = @a
WHERE Column1*Column2 = 5 . Dans ce cas, la requête ne peut pas rechercher l’index existant, même si elle
contient les colonnes appropriées, car toutes les valeurs de colonne doivent être récupérées en premier et
transmises à la fonction. Cela entraîne une analyse de l’intégralité de la table ou de l’index et entraîne
l’acquisition d’un grand nombre de verrous. Dans de telles circonstances, SQL Server atteindre le seuil
d’escalade du nombre de verrous. La solution consiste à éviter d’utiliser des fonctions par rapport aux
colonnes de la clause WHERE, garantissant ainsi des conditions sargables.
NOTE
Lorsqu’une erreur 1204 se produit, elle interrompt le traitement de l’instruction active et entraîne la récupération de la
transaction active. La restauration proprement dite peut bloquer les utilisateurs ou entraîner un temps de récupération de
base de données long si vous redémarrez SQL Server service.
Vous pouvez ajouter cet indicateur de suivi (-T1211) à l’aide Gestionnaire de configuration SQL Server. Vous
devez redémarrer le service SQL Server pour qu’un nouveau paramètre de démarrage prenne effet. Si vous
exécutez DBCC TRACEON (1211, -1) la requête, l’indicateur de suivi prend effet immédiatement.
Toutefois, si vous n’ajoutez pas le paramètre de démarrage -T1211, l’effet d’une commande est perdu lors du
redémarrage DBCC TRACEON SQL Server service. L’activement de l’indicateur de suivi empêche toute escalade de
verrouillage ultérieure, mais elle n’inverse pas les escalades de verrouillage qui se sont déjà produites dans une
transaction active.
Si vous utilisez un conseil de verrouillage, tel que ROWLOCK, cela modifie uniquement le plan de verrouillage
initial. Les conseils de verrouillage n’empêchent pas l’escalade de verrouillage.
Recommandations
Les méthodes abordées dans la section Empêcher l’escalade de verrouillage sont de meilleures options que la
désactivation de l’escalade au niveau de la table ou de l’instance. En outre, les méthodes préventives produisent
généralement de meilleures performances pour la requête que la désactivation de l’escalade de verrouillage.
Microsoft recommande d’activer cet indicateur de suivi uniquement pour atténuer les blocages graves causés
par l’escalade de verrouillage, tandis que d’autres options, telles que celles abordées dans cet article, sont en
cours d’examen.
Voir aussi
Comprendre et résoudre les problèmes SQL Server blocage
Résoudre les problèmes de requêtes lentes sur SQL Server
Résoudre la contention d’insertion de
PAGELATCH_EX page dans SQL Server
15/08/2021 • 6 minutes to read
Cet article explique comment résoudre la contention d’insertion de PAGELATCH_EX page dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 4460004
Symptômes
Plusieurs scénarios sont envisageables :
Vous avez une colonne qui inclut des valeurs séquentielles, telles qu’une colonne Identity ou une colonne
DateTime, qui est insérée par le biais de la fonction Getdate().
Vous disposez d’un index en cluster dont la colonne séquentielle est une colonne de début.
NOTE
Le scénario le plus courant est une clé primaire en cluster sur une colonne Identity. Moins fréquemment, ce
problème peut être observé pour les index nonclustered.
Votre application fait fréquemment des opérations INSERT ou UPDATE sur la table.
Vous avez de nombreuses processeurs sur le système. En règle générale, le serveur dispose de 16
processeurs ou plus. Cela permet à plusieurs sessions d’exécuter simultanément les opérations INSERT
sur la même table.
Dans ce cas, vous pouvez voir une diminution des performances de votre application. Lorsque vous examinez
les types d’attente dans sys.dm_exec_requests, vous observez des attentes sur le type d’PAGELATCH_EX et de
nombreuses sessions en attente de ce type d’attente.
Un autre problème se produit si vous exécutez la requête de diagnostic suivante sur votre système :
select session_id, wait_type, wait_time, wait_resource from sys.dm_exec_requests where
session_id > 50 and wait_type = 'pagelatch_ex'
Dans ce cas, vous pouvez obtenir des résultats semblables à ce qui suit.
90 PAGELATCH_EX 38 5:1:4144
94 PAGELATCH_EX 49 5:1:4144
Vous remarquerez que plusieurs sessions attendent toutes la même ressource qui ressemble à ce qui suit :
database_id = 5, file_id = 1, base de données page_id = 4144
NOTE
Le database_id doit être une base de données utilisateur (le numéro d’ID est supérieur ou égal à 5 ). Si la database_id est
2, vous pouvez, à la place, être confronté au problème qui est abordé dans fichiers, indicateurs de suivi et mises à jour sur
TEMPDB.
Cause
PAGEL ATCH (verrou sur une page de données ou d’index) est un mécanisme de synchronisation de thread. Il
est utilisé pour synchroniser l’accès physique à court terme aux pages de base de données qui se trouvent dans
le cache de mémoire tampon.
PAGEL ATCH diffère d’un PAGETCHTCH . Cette dernière est utilisée pour synchroniser l’accès physique aux
pages lorsqu’elles sont lues ou écrites sur le disque.
Les latches de page sont courantes dans chaque système, car elles garantissent une protection physique des
pages. Un index en cluster ordonne les données par colonne de clé de début. Pour cette raison, lorsque vous
créez l’index sur une colonne séquentielle, toutes les nouvelles insertions de données se produisent sur la même
page à la fin de l’index jusqu’à ce que cette page soit remplie. Toutefois, en cas de charge élevée, les opérations
INSERT simultanées peuvent provoquer un conflit sur la dernière page de l’arborescence B. Cette contention
peut se produire sur des index en cluster et nonclustered. Cela est dû au fait que l’index nonclusté commande
les pages au niveau feuille par la clé de début. This issue is also known as last-page insert contention.
Pour plus d’informations, voir Diagnosing and Resolving Latch Contention on SQL Server.
Résolution
Pour résoudre ce conflit, la stratégie globale consiste à empêcher toutes les opérations INSERT simultanées
d’accéder à la même page de base de données. À la place, faites en sorte que chaque opération INSERT accède à
une page différente et augmente la concurrence. Par conséquent, l’une des méthodes suivantes qui organisent
les données par une colonne autre que la colonne séquentielle atteint cet objectif.
In SQL Server 2019, a new index option (OPTIMIZE_FOR_SEQUENTIAL_KEY) was added that can help resolve
this issue without using any of the following methods. Pour plus d’informations,
OPTIMIZE_FOR_SEQUENTIAL_KEY en arrière-plan.
Méthode 1
Faites de la colonne qui contient des valeurs séquentielles un index non exclusif, puis déplacez l’index en cluster
vers une autre colonne. Par exemple, pour une clé primaire sur une colonne d’identité, supprimez la clé primaire
en cluster, puis re-créez-la en tant que clé primaire non exclusive. Il s’agit de la méthode la plus simple à faire et
elle atteint directement l’objectif.
Par exemple, supposons que vous avez le tableau suivant qui a été défini à l’aide d’une clé primaire en cluster
sur une colonne Identity.
Méthode 2
Réordez la définition d’index en cluster de telle sorte que la colonne de début ne soit pas la colonne séquentielle.
Cela nécessite que l’index en cluster soit un index composite. Par exemple, dans une table client, vous pouvez
faire d’une colonne CustomerLastName la colonne de début, suivie de CustomerID . Nous vous
recommandons de tester minutieusement cette méthode pour vous assurer qu’elle répond aux exigences de
performances.
Méthode 3
Ajoutez une valeur de hachage non importante en tant que clé d’index de début. Cela répartira également les
insertions. Une valeur de hachage est générée en tant que module qui correspond au nombre de processeurs
sur le système. Par exemple, sur un système à 16 processeurs, vous pouvez utiliser un modo de 16. Cette
méthode répartit uniformément les opérations INSERT sur plusieurs pages de base de données.
CREATE TABLE Customers
( CustomerID bigint identity(1,1) not null,
CustomerLastName varchar (32) not null,
CustomerFirstName varchar(32) not null )
go
ALTER TABLE Customers
ADD [HashValue] AS (CONVERT([tinyint], abs([CustomerID])%16)) PERSISTED NOT NULL
go
ALTER TABLE Customers
ADD CONSTRAINT pk_table1
PRIMARY KEY CLUSTERED (HashValue, CustomerID)
Méthode 4
Utilisez un GUID comme colonne de clé de début d’un index pour garantir la distribution uniforme des
insertions.
NOTE
Bien qu’elle atteigne cet objectif, nous ne recommandons pas cette méthode, car elle présente plusieurs défis, notamment
une clé d’index importante, des fractionnements fréquents de page, une densité de page faible, etc.
Méthode 5
Utilisez le partitionnement de table et une colonne calculée avec une valeur de hachage pour répartir les
opérations INSERT. Étant donné que cette méthode utilise le partitionnement de table, elle n’est utilisable que sur
Enterprise éditions de SQL Server.
NOTE
Vous pouvez utiliser des tables partitionées dans SQL Server 2016 SP1 Édition Standard. Pour plus d’informations, voir la
description de « Partitionnement de tableau et d’index » dans l’article Éditions et fonctionnalités SQL Server 2016.
Méthode 6
Vous pouvez également utiliser In-Memory OLTP en particulier si la contention de verrou est élevée. Cette
technologie élimine globalement la contention de verrou. Toutefois, vous devez reconçer et migrer les tableaux
spécifiques, où un conflit de verrous de page est observé, vers un tableau optimisé pour la mémoire. Vous
pouvez utiliser le conseiller d’optimisation de la mémoire et le rapport d’analyse des performances des
transactions pour déterminer si la migration est possible et l’effort impliqué pour la migration. Pour plus
d’informations sur la façon dont In-Memory OLTP élimine la contention d’verrous, téléchargez et examinez le
document dans OLTP en mémoire - Considérations courantessur les modèles de charge de travail et la
migration.
Références
PAGELATCH_EX d’attente et insertions importantes
De nombreux CMEMTHREAD attendent que de
nombreuses entrées du magasin SchemaMgr
existent dans SQL Server
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème de dégradation des performances dans SQL Server.
Version du produit d’origine : Microsoft SQL Server 2017 Windows, SQL Server 2014, SQL Server 2016, SQL
Server 2012
Numéro de la ko d’origine : 4488254
Symptômes
Vous pouvez faire face à une dégradation des performances SQL Server. Lorsque ce problème se produit, vous
observez la situation suivante :
Il existe des millions d’entrées du magasin SchemaMgr dans le cache mémoire. Vous pouvez voir les
informations en exécutant le script T-SQL suivant :
SELECT entries_count
FROM sys.dm_os_memory_cache_counters
where name = 'SchemaMgr Store'
Ce problème peut être accompagné d’une augmentation des attentes et du blocage des verrous, dans
lequel les verrous font référence CMEMTHREAD à un type de wait_resource COMPILE verrou. Vous pouvez
voir les informations en exécutant le script T-SQL suivant :
Cause
Ce problème se produit lorsque le nombre de statistiques HOBT mises en cache atteint une limite interne.
Lorsque la limite est atteinte, le système tente de supprimer de manière agressive les entrées, ce qui provoque
une contention sur l’objet mémoire qui stocke les données.
Résolution
Pour résoudre ce problème, activez l’indicateur de suivi (TF) 8032.
Résoudre les problèmes de blocage causés par les
verrous de compilation
15/08/2021 • 6 minutes to read
Cet article explique comment résoudre les problèmes de blocage causés par les verrous de compilation.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 263889
Résumé
Dans Microsoft SQL Server, une seule copie d’un plan de procédure stockée est généralement mise en cache à la
fois. L’application de cette opération nécessite la sérialisation de certaines parties du processus de compilation,
et cette synchronisation s’accomplit en partie à l’aide de verrous de compilation. Si de nombreuses connexions
exécutent simultanément la même procédure stockée et qu’un verrou de compilation doit être obtenu pour
cette procédure stockée chaque fois qu’elle s’exécute, les ID de session (SPID) peuvent commencer à se bloquer
mutuellement lorsqu’ils tentent d’obtenir un verrou de compilation exclusif sur l’objet.
Voici quelques caractéristiques classiques du blocage de compilation qui peuvent être observées dans la sortie
bloquante :
waittype pour les SPID de session bloqués et (généralement) bloquants est (exclusif) et a la forme , où
est l’ID d’objet de LCK_M_X waitresource la procédure OBJECT: dbid: object_id [[COMPILE]] object_id
stockée.
Les bloqueurs ont waittype la valeur NULL et l’état peut être exécuté. Les bloqueurs ont waittype
LCK_M_X un état de blocage (verrouillage exclusif).
Bien que la durée de l’incident de blocage puisse être longue, il n’existe aucun SPID unique qui bloque les
autres SPID pendant une longue période. Il existe un blocage de déploiement. Une fois la compilation
terminée, un autre SPID prend le rôle de bloqueur de têtes pendant plusieurs secondes ou moins, et ainsi
de suite.
Les informations suivantes sont extraites d’une capture instantanée sys.dm_exec_requests de ce type de blocage
:
Dans la waitresource colonne (6:834102), 6 est l’ID de base de données et 834102 est l’ID d’objet. Cet ID d’objet
appartient à une procédure stockée, et non à une table.
Plus d’informations
La recompilation des procédures stockées est une explication des verrous de compilation sur une procédure ou
un déclencheur stocké. Dans ce cas, la solution consiste à réduire ou à éliminer les recompilateurs.
N O M DE L 'ÉVÉN EM EN T T EXT E
rpc_starting mystoredproc
sp_cache_miss mystoredproc
sql_batch_starting mystoredproc
sp_cache_hit mystoredproc
... ...
sp_cache_miss se produit lorsque la recherche dans le cache par nom échoue, mais qu’un plan mis en
cache correspondant a été trouvé dans le cache une fois que le nom d’objet ambigu a été résolu en ID
d’objet et qu’un événement s’est sp_cache_hit produit.
La solution à ce problème de verrouillage de compilation consiste à s’assurer que les références aux
procédures stockées sont qualifiées par le propriétaire. (Au lieu d’exec, mystoredproc utilisez exec
dbo.mystoredproc.) Bien que la qualification du propriétaire soit importante pour des raisons de
performances, vous n’avez pas besoin de qualifier le processus stocké avec le nom de la base de données
pour empêcher la recherche de cache supplémentaire.
Le blocage provoqué par des verrous de compilation peut être détecté à l’aide de méthodes de résolution
des problèmes de blocage standard.
2. La procédure stockée est précédée du préfixe sp_
Si le nom de votre procédure stockée commence par le préfixe et qu’il ne se trouve pas dans la base de
données maître, vous voyez sp_cache_miss avant que le cache ne soit atteint pour chaque exécution,
même si vous qualifiez la procédure stockée par le sp_ propriétaire. Cela est dû au fait que le préfixe
SQL Server que la procédure stockée est une procédure stockée dans le système et que les procédures
stockées dans le système ont des règles de résolution sp_ de noms différentes. (L’emplacement préféré
se trouve dans la base de données maître.) Les noms des procédures stockées créées par l’utilisateur ne
doivent pas commencer par sp_ .
3. La procédure stockée est invoquée à l’aide d’un cas différent (supérieur/inférieur)
Si une procédure qualifiée par le propriétaire est exécutée à l’aide d’un cas différent (supérieur ou
inférieur) du cas utilisé pour la créer, la procédure peut déclencher un événement CacheMiss ou
demander un verrou COMPILE. Finalement, la procédure utilise le plan mis en cache et n’est pas
recompilée. Toutefois, la demande de verrouillage COMPILE peut parfois provoquer une situation de
chaîne bloquante si de nombreux SPID tentent d’exécuter la même procédure en utilisant un cas différent
de celui utilisé pour la créer. Cela est vrai quel que soit l’ordre de tri ou le classement utilisé sur le serveur
ou sur la base de données. La raison de ce comportement est que l’algorithme utilisé pour rechercher la
procédure dans le cache est basé sur des valeurs de hachage (pour des raisons de performances) et que
les valeurs de hachage peuvent changer si le cas est différent.
La solution consiste à abandonner et à créer la procédure en utilisant le même cas que celui utilisé
lorsque l’application exécute la procédure. Vous pouvez également vous assurer que la procédure est
exécutée à partir de toutes les applications à l’aide de la bonne case (supérieure ou inférieure).
4. La procédure stockée est invoquée en tant qu’événement Language
Si vous essayez d’exécuter une procédure stockée en tant qu’événement de langue plutôt qu’en tant que
RPC, SQL Server doit l’interroger et la compiler, déterminer que la requête tente d’exécuter la procédure
particulière, puis essayer de trouver un plan dans le cache de cette procédure. Pour éviter cette situation
dans laquelle SQL Server doit effectuer une recherche et compiler l’événement de langue, assurez-vous
que la requête est envoyée à SQL en tant que RPC.
Pour plus d’informations, voir la section Procédures stockées système dans l’article Books Online
Creating a Stored Procedure .
Références
La commande OPEN SYMMETRIC KEY empêche la mise en cache du plan de requête
Résoudre les problèmes de requêtes lentes sur SQL
Server
12/08/2021 • 7 minutes to read
Introduction
Cet article explique comment gérer un problème de performances que les applications peuvent faire face avec
des SQL Server : performances lentes d’une requête ou d’un groupe de requêtes spécifique. Si vous dépannagez
un problème de performances, mais que vous n’avez pas isolé le problème à une requête spécifique ou à un
petit groupe de requêtes dont les performances sont plus lentes que prévu, voir Surveiller et régler les
performances avant de continuer.
Cet article part du principe que vous avez utilisé l'298475 de l’article pour affiner l’étendue du problème et que
vous avez capturé un suivi du profileur SQL avec les événements et colonnes de données spécifiques qui sont
détaillés dans l’article 224587.
Le réglage des requêtes de base de données peut être une tâche multi-facettes. Les sections suivantes abordent
les éléments courants à examiner lorsque vous examinez les performances des requêtes.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 243589
NOTE
Si la procédure stockée ou le lot crée et référence des tables temporaires, vous devez utiliser une instruction SET
STATISTICS PROFILE ON ou créer explicitement les tables temporaires avant d’afficher le plan d’exécution.
SHOWPLAN_ALL et SHOWPLAN_TEXT
Pour recevoir une version texte du plan d’exécution estimé, vous pouvez utiliser les options SET
SHOWPLAN_ALL et SHOWPLAN_TEXT SET. Pour plus d’informations, consultez les rubriques SET
SHOWPL AN_ALL (T-SQL) et SET SHOWPL AN_TEXT (T-SQL) dans SQL Server Books Online.
NOTE
Si la procédure stockée ou le lot crée et référence des tables temporaires, vous devez utiliser l’option DÉFINIR LE
PROFIL STATISTIQUES SUR ou créer explicitement les tables temporaires avant d’afficher le plan d’exécution.
PROFIL STATISTIQUES
Lorsque vous affichez le plan d’exécution estimé, graphiquement ou à l’aide de SHOWPLAN, la requête
n’est pas exécutée. Par conséquent, si vous créez des tables temporaires dans un lot ou une procédure
stockée, vous ne pouvez pas afficher les plans d’exécution estimés, car les tables temporaires n’existeront
pas. LE PROFIL STATISTIQUES exécute d’abord la requête, puis affiche le plan d’exécution réel. Pour plus
d’informations, consultez la rubrique SET STATISTICS PROFILE (T-SQL) SQL Server Books Online.
Lorsqu’il s’exécute SQL Query Analyzer, il apparaît sous forme graphique sous l’onglet Plan d’exécution
dans le volet résultats.
Pour plus d’informations sur l’affichage du plan d’exécution estimé, voir la rubrique Afficher le plan d’exécution
estimé dans SQL Server Books Online.
NOTE
L’utilisation d’un conseil de jointage dans une requête de grande taille force implicitement l’ordre de jointage pour
les autres tables de la requête comme si FORCEPLAN elle avait été définie.
Étant donné que l’optimiseur de requête sélectionne généralement le meilleur plan d’exécution pour une
requête, Microsoft vous recommande d’utiliser des conseils de jointeur, des conseils de requête et des conseils
de table uniquement en dernier recours, et uniquement si vous êtes un administrateur de base de données
expérimenté.
Comprendre et résoudre les problèmes SQL Server
blocage
13/08/2021 • 35 minutes to read
S’applique à : SQL Server (toutes les versions pris en charge), Azure SQL Managed Instance
Numéro de la ko d’origine : 224453
Objectif
L’article décrit le blocage dans SQL Server et montre comment résoudre les problèmes de blocage.
Dans cet article, le terme connexion fait référence à une seule session connectée de la base de données. Chaque
connexion apparaît en tant qu’ID de session (SPID) ou session_id dans de nombreux DMV. Chacun de ces SPID
est souvent appelé processus, bien qu’il ne s’agit pas d’un contexte de processus distinct au sens habituel. Au
lieu de cela, chaque SPID se compose des ressources serveur et des structures de données nécessaires pour
répondre aux demandes d’une connexion unique à partir d’un client donné. Une seule application cliente peut
avoir une ou plusieurs connexions. Du point de vue de SQL Server, il n’existe aucune différence entre plusieurs
connexions à partir d’une seule application cliente sur un seul ordinateur client et plusieurs connexions à partir
de plusieurs applications clientes ou de plusieurs ordinateurs clients ; elles sont atomiques. Une connexion peut
en bloquer une autre, quel que soit le client source.
NOTE
Cet ar ticle est axé sur les instances SQL Ser ver, notamment Azure SQL managed instances. Pour plus
d’informations sur la résolution des problèmes de blocage dans Azure SQL Database, voir Comprendre et résoudre Azure
SQL Database problèmes de blocage.
Applications et blocage
Il peut y avoir une tendance à se concentrer sur le réglage côté serveur et les problèmes de plateforme en cas de
problème de blocage. Toutefois, l’attention portée uniquement à la base de données peut ne pas aboutir à une
résolution et peut entraîner une amélioration du temps et de l’énergie à l’examen de l’application cliente et des
requêtes qu’elle soumet. Quel que soit le niveau de visibilité que l’application expose concernant les appels de
base de données effectués, un problème de blocage nécessite néanmoins fréquemment l’inspection des
instructions SQL exactes envoyées par l’application et le comportement exact de l’application concernant
l’annulation des requêtes, la gestion des connexions, l’extraction de toutes les lignes de résultats, etc. Si l’outil de
développement n’autorise pas le contrôle explicite sur la gestion des connexions, l’annulation des requêtes, le
délai d’arrêt des requêtes, l’extraction des résultats, etc., les problèmes de blocage risquent de ne pas pouvoir
être résolus. Ce potentiel doit être examiné attentivement avant de sélectionner un outil de développement
d’applications pour SQL Server, en particulier pour les environnements OLTP sensibles aux performances.
Faites attention aux performances de la base de données pendant la phase de conception et de construction de
la base de données et de l’application. En particulier, la consommation des ressources, le niveau d’isolation et la
longueur du chemin de transaction doivent être évalués pour chaque requête. Chaque requête et transaction
doit être aussi légère que possible. Une bonne gestion des connexions doit être mise en place, sans cela,
l’application peut sembler acceptable avec un petit nombre d’utilisateurs, mais les performances peuvent se
dégrader sensiblement à mesure que le nombre d’utilisateurs augmente.
Avec une conception d’application et de requête appropriée, SQL Server est capable de prendre en charge des
milliers d’utilisateurs simultanés sur un seul serveur, avec peu de blocage.
Exécutez cet exemple de requête plus élaboré, fourni par le Support Microsoft, pour identifier le responsable
d’une chaîne de blocage de sessions multiples, y compris le texte de requête des sessions impliquées dans
une chaîne de blocage.
WITH cteHead ( session_id,request_id,wait_type,wait_resource,last_wait_type,is_user_process,request_cpu_time
,request_logical_reads,request_reads,request_writes,wait_time,blocking_session_id,memory_usage
,session_cpu_time,session_reads,session_writes,session_logical_reads
,percent_complete,est_completion_time,request_start_time,request_status,command
,plan_handle,sql_handle,statement_start_offset,statement_end_offset,most_recent_sql_handle
,session_status,group_id,query_hash,query_plan_hash)
AS ( SELECT sess.session_id, req.request_id, LEFT (ISNULL (req.wait_type, ''), 50) AS 'wait_type'
, LEFT (ISNULL (req.wait_resource, ''), 40) AS 'wait_resource', LEFT (req.last_wait_type, 50) AS
'last_wait_type'
, sess.is_user_process, req.cpu_time AS 'request_cpu_time', req.logical_reads AS 'request_logical_reads'
, req.reads AS 'request_reads', req.writes AS 'request_writes', req.wait_time,
req.blocking_session_id,sess.memory_usage
, sess.cpu_time AS 'session_cpu_time', sess.reads AS 'session_reads', sess.writes AS 'session_writes',
sess.logical_reads AS 'session_logical_reads'
, CONVERT (decimal(5,2), req.percent_complete) AS 'percent_complete', req.estimated_completion_time AS
'est_completion_time'
, req.start_time AS 'request_start_time', LEFT (req.status, 15) AS 'request_status', req.command
, req.plan_handle, req.[sql_handle], req.statement_start_offset, req.statement_end_offset,
conn.most_recent_sql_handle
, LEFT (sess.status, 15) AS 'session_status', sess.group_id, req.query_hash, req.query_plan_hash
FROM sys.dm_exec_sessions AS sess
LEFT OUTER JOIN sys.dm_exec_requests AS req ON sess.session_id = req.session_id
LEFT OUTER JOIN sys.dm_exec_connections AS conn on conn.session_id = sess.session_id
)
, cteBlockingHierarchy (head_blocker_session_id, session_id, blocking_session_id, wait_type,
wait_duration_ms,
wait_resource, statement_start_offset, statement_end_offset, plan_handle, sql_handle,
most_recent_sql_handle, [Level])
AS ( SELECT head.session_id AS head_blocker_session_id, head.session_id AS session_id,
head.blocking_session_id
, head.wait_type, head.wait_time, head.wait_resource, head.statement_start_offset,
head.statement_end_offset
, head.plan_handle, head.sql_handle, head.most_recent_sql_handle, 0 AS [Level]
FROM cteHead AS head
WHERE (head.blocking_session_id IS NULL OR head.blocking_session_id = 0)
AND head.session_id IN (SELECT DISTINCT blocking_session_id FROM cteHead WHERE blocking_session_id != 0)
UNION ALL
SELECT h.head_blocker_session_id, blocked.session_id, blocked.blocking_session_id, blocked.wait_type,
blocked.wait_time, blocked.wait_resource, h.statement_start_offset, h.statement_end_offset,
h.plan_handle, h.sql_handle, h.most_recent_sql_handle, [Level] + 1
FROM cteHead AS blocked
INNER JOIN cteBlockingHierarchy AS h ON h.session_id = blocked.blocking_session_id and
h.session_id!=blocked.session_id --avoid infinite recursion for latch type of blocking
WHERE h.wait_type COLLATE Latin1_General_BIN NOT IN ('EXCHANGE', 'CXPACKET') or h.wait_type is null
)
SELECT bh.*, txt.text AS blocker_query_or_most_recent_query
FROM cteBlockingHierarchy AS bh
OUTER APPLY sys.dm_exec_sql_text (ISNULL ([sql_handle], most_recent_sql_handle)) AS txt;
Pour capturer les transactions de longue durée ou non prises en compte, utilisez un autre ensemble de dvd
pour afficher les transactions ouvertes en cours, notamment sys.dm_tran_database_transactions,
sys.dm_tran_session_transactions, sys.dm_exec_connectionset sys.dm_exec_sql_text . Plusieurs DMV sont
associés au suivi des transactions. Consultez d’autres DMV sur les transactions ici.
SELECT [s_tst].[session_id],
[database_name] = DB_NAME (s_tdt.database_id),
[s_tdt].[database_transaction_begin_time],
[sql_text] = [s_est].[text]
FROM sys.dm_tran_database_transactions [s_tdt]
INNER JOIN sys.dm_tran_session_transactions [s_tst] ON [s_tst].[transaction_id] = [s_tdt].[transaction_id]
INNER JOIN sys.dm_exec_connections [s_ec] ON [s_ec].[session_id] = [s_tst].[session_id]
CROSS APPLY sys.dm_exec_sql_text ([s_ec].[most_recent_sql_handle]) AS [s_est];
Référence sys.dm_os_waiting_tasks qui se trouve au niveau de la couche thread/task de SQL Server. Cela
renvoie des informations sur les SQL wait_type que la demande rencontre actuellement. Comme
sys.dm_exec_requests , seules les demandes actives sont renvoyées par sys.dm_os_waiting_tasks .
NOTE
Pour plus d’informations sur les types d’attente, y compris les statistiques d’attente agrégées au fil dutemps, consultez la
sys.dm_db_wait_stats .
Utilisez la sys.dm_tran_locks DMV pour obtenir des informations plus granulaires sur les verrous qui ont été
placés par les requêtes. Cette DMV peut renvoyer de grandes quantités de données sur une instance de SQL
Server production et est utile pour diagnostiquer les verrous actuellement détenus.
En raison de inner JOIN on , la requête suivante limite la sortie des demandes actuellement bloquées
uniquement, de leur statut d’attente et de sys.dm_os_waiting_tasks sys.dm_tran_locks leurs verrous :
Avec les fichiers DMV, le stockage des résultats de la requête dans le temps fournira des points de données qui
vous permettront de passer en revue le blocage sur un intervalle de temps spécifié pour identifier les tendances
ou les blocages persistants. L’outil de recherche pour les CSS pour résoudre ces problèmes consiste à utiliser le
collecteur de données PSSDiag. Cet outil utilise les « statistiques SQL Server perf » pour collecter au fil du temps
des jeux de résultats à partir de DMV référencés ci-dessus. Comme cet outil évolue constamment, examinez la
dernière version publique de DiagManager sur GitHub.
ÉTAT SIGN IF IC AT IO N
sys.dm_exec_sessions.open_transaction_count
Cette colonne indique le nombre de transactions ouvertes dans cette session. Si cette valeur est
supérieure à 0, le SPID se trouve dans une transaction ouverte et peut détenir des verrous acquis
par n’importe quelle instruction au sein de la transaction.
sys.dm_exec_requests.open_transaction_count
De même, cette colonne indique le nombre de transactions ouvertes dans cette demande. Si cette
valeur est supérieure à 0, le SPID se trouve dans une transaction ouverte et peut détenir des
verrous acquis par n’importe quelle instruction au sein de la transaction.
sys.dm_exec_requests.wait_type , wait_time et last_wait_type
Si la valeur est NULL, la demande n’attend actuellement rien et la valeur indique le dernier
sys.dm_exec_requests.wait_type que la demande a last_wait_type wait_type rencontré. Pour
plus d’informations et une description des types d’attente les sys.dm_os_wait_stats plus courants,
voir sys.dm_os_wait_stats. La wait_time valeur peut être utilisée pour déterminer si la demande
progresse. Lorsqu’une requête sur la table renvoie une valeur dans la colonne inférieure à la
valeur d’une requête précédente de , cela indique que le verrou précédent a été acquis et libéré et
attend maintenant un nouveau verrou (en supposant qu’il n’a pas la valeur sys.dm_exec_requests
wait_time wait_time sys.dm_exec_requests wait_time zéro). Cela peut être vérifié en comparant
la sortie, qui affiche la ressource pour laquelle la demande wait_resource sys.dm_exec_requests
est en attente.
sys.dm_exec_requests.wait_resource Cette colonne indique la ressource qu’une demande bloquée
attend. Le tableau suivant répertorie wait_resource les formats courants et leur signification :
Autres colonnes
Les colonnes restantes sys.dm_exec_sessions et sys.dm_exec_request peuvent également fournir
des informations sur la racine d’un problème. Leur utilité varie en fonction des circonstances du
problème. Par exemple, vous pouvez déterminer si le problème se produit uniquement à partir de
certains clients ( ), sur certaines bibliothèques réseau ( ), lorsque le dernier lot envoyé par un SPID
était en hostname client_interface_name cours last_request_start_time sys.dm_exec_sessions
d’exécution, start_time pendant combien de temps une demande a été en cours d’exécution dans
sys.dm_exec_requests , etc.
EST - C E Q UE
VO US RÉSO LVEZ A UT RES
SC ÉN A RIO WA IT _T Y P E O P EN _T RA N ÉTAT ? SY M P TÔ M ES
EST - C E Q UE
VO US RÉSO LVEZ A UT RES
SC ÉN A RIO WA IT _T Y P E O P EN _T RA N ÉTAT ? SY M P TÔ M ES
NOTE
Le blocage pendant l’exécution de la requête peut être dû à une escalade de requête, un scénario dans le cas où
les verrous de ligne ou de page sont recalés en verrous de table. Microsoft SQL Server détermine dynamiquement
quand effectuer une escalade de verrouillage. Le moyen le plus simple et le plus sûr d’empêcher l’escalade de
verrouillage consiste à réduire l’encombrement des transactions et à réduire l’encombrement des requêtes
coûteuses afin que les seuils d’escalade de verrouillage ne soient pas dépassés. Pour plus d’informations sur la
détection et la prévention d’une escalade excessive des verrous, voir Résoudre le problème de blocage provoqué
par l’escalade de verrouillage.
2. Blocage provoqué par un SPID en cours d’arrêt avec une transaction noncommande
Ce type de blocage peut souvent être identifié par un SPID qui est en attente ou en attente d’une
commande, mais dont le niveau d’imbrmbrage de transaction ( , de ) est supérieur @@TRANCOUNT
open_transaction_count à sys.dm_exec_requests zéro. Cela peut se produire si l’application subit un délai
d’application ou émet une annulation sans également émettre le nombre requis d’instructions ROLLBACK
et/ou COMMIT. Lorsqu’un SPID reçoit un délai d’délai de requête ou une annulation, il met fin à la requête
et au lot actuels, mais ne annule pas ou ne validera pas automatiquement la transaction. L’application est
responsable de cette opération, SQL Server ne peut pas supposer qu’une transaction entière doit être
annulée en raison de l’annulation d’une seule requête. Le délai ou l’annulation de la requête apparaîtra en
tant qu’événement de signal ATTENTION pour le SPID dans la session d’événement étendu.
Pour démontrer une transaction explicite noncommande, émettre la requête suivante :
SELECT @@TRANCOUNT;
ROLLBACK TRAN
DROP TABLE #test;
La sortie de la deuxième requête indique que le niveau d’imbriquement de transaction est un. Tous les
verrous acquis dans la transaction sont toujours détenus jusqu’à la fin de la transaction. Si des
applications ouvrent et valider explicitement des transactions, une communication ou une autre erreur
peut laisser la session et sa transaction dans un état ouvert.
Utilisez le script plus tôt dans cet article pour identifier les transactions actuellement
sys.dm_tran_active_transactions noncommandes dans l’instance.
Résolutions :
En outre, cette classe de problème de blocage peut également être un problème de performances
et vous oblige à la poursuivre en tant que telle. Si le temps d’exécution de la requête peut être
réduit, le délai d’exécution ou l’annulation de la requête ne se produit pas. Il est important que
l’application soit en mesure de gérer les scénarios de délai d’délai ou d’annulation s’ils surviennent,
mais vous pouvez également tirer parti de l’examen des performances de la requête.
Les applications doivent gérer correctement les niveaux d’imbriquement des transactions, sinon
elles peuvent provoquer un problème de blocage suite à l’annulation de la requête de cette
manière. Vous devez tenir compte des éléments suivants :
Dans le programme de traitement des erreurs de l’application cliente, exécutez la suite d’une
erreur, même si l’application cliente ne pense pas qu’une IF @@TRANCOUNT > 0 ROLLBACK TRAN
transaction est ouverte. La vérification des transactions ouvertes est requise, car une procédure
stockée appelée pendant le lot aurait pu démarrer une transaction à l’insu de l’application
cliente. Certaines conditions, telles que l’annulation de la requête, empêchent l’exécution de la
procédure au-delà de l’instruction en cours. Ainsi, même si la procédure possède une logique
pour vérifier et abandonner la transaction, ce code de annulation ne sera pas exécuté dans de
tels IF @@ERROR <> 0 cas.
Si le regroupement de connexions est utilisé dans une application qui ouvre la connexion et
exécute quelques requêtes avant de libérer la connexion au pool, telle qu’une application Web,
la désactivation temporaire de la mise en pool de connexions peut aider à résoudre le
problème jusqu’à ce que l’application cliente soit modifiée pour gérer les erreurs de manière
appropriée. En désactivant la mise en pool de connexions, le fait de libérer la connexion
entraîne une déconnexion physique de la connexion SQL Server, ce qui entraîne la désactivation
par le serveur de toutes les transactions ouvertes.
À utiliser pour la connexion ou dans les procédures stockées qui commencent des transactions
et ne sont pas nettoyées SET XACT_ABORT ON suite à une erreur. En cas d’erreur d’utilisation, ce
paramètre abandonne toutes les transactions ouvertes et retourne le contrôle au client. Pour
plus d’informations, voir SET XACT_ABORT (Transact-SQL).
NOTE
La connexion n’est pas réinitialisée tant qu’elle n’a pas été réutilisée à partir du pool de connexions, il est donc
possible qu’un utilisateur puisse ouvrir une transaction, puis libérer la connexion au pool de connexions, mais elle
risque de ne pas être réutilisée pendant plusieurs secondes, pendant laquelle la transaction reste ouverte. Si la
connexion n’est pas réutilisée, la transaction est abandonnée à l’arrêt de la connexion et supprimée du pool de
connexions. Par conséquent, il est optimal pour l’application cliente d’abandonner les transactions dans son
système de gestion des erreurs ou de l’utiliser pour éviter SET XACT_ABORT ON ce délai potentiel.
Cau t i on
Following SET XACT_ABORT ON , T-SQL statement following a statement that causes an error will not be
executed. Cela peut affecter le flux prévu du code existant.
3. Blocage provoqué par un SPID dont l’application cliente correspondante n’a pas récupéré toutes les lignes
de résultats jusqu’à la fin
Après l’envoi d’une requête au serveur, toutes les applications doivent immédiatement extraire toutes les
lignes de résultats jusqu’à la fin. Si une application n’récupère pas toutes les lignes de résultats, des
verrous peuvent être laissés sur les tables, bloquant ainsi d’autres utilisateurs. Si vous utilisez une
application qui envoie des instructions SQL de manière transparente au serveur, l’application doit extraire
toutes les lignes de résultats. Si ce n’est pas le cas (et si elle ne peut pas être configurée pour le faire),
vous risquez de ne pas pouvoir résoudre le problème de blocage. Pour éviter ce problème, vous pouvez
restreindre les applications à faible comportement à une base de données de rapports ou de prise de
décision, distincte de la base de données OLTP principale.
Résolution :
L’application doit être réécrite pour extraire toutes les lignes du résultat jusqu’à son achèvement. Cela
n’exclut pas l’utilisation de OFFSET et FETCH dans la clause ORDER BY d’une requête pour effectuer la
pagination côté serveur.
4. Blocage provoqué par un blocage de client/serveur distribué
Contrairement à un blocage classique, un blocage distribué n’est pas détectable à l’aide du gestionnaire
de verrouillage SGBD. Cela est dû au fait qu’une seule des ressources impliquées dans le blocage est SQL
Server verrou. L’autre côté du blocage se trouve au niveau de l’application cliente, sur lequel SQL Server
n’a aucun contrôle. Voici deux exemples de la façon dont cela peut se produire et des moyens possibles
par l’application de l’éviter.
R : Blocage distribué client/serveur avec un thread client unique
Si le client dispose de plusieurs connexions ouvertes et d’un thread d’exécution unique, le blocage
distribué suivant peut se produire. Pour des raisons de concision, le dbproc terme utilisé ici fait référence
à la structure de connexion client.
SPID1------blocked on lock------->SPID2
/\ (waiting to write results
| back to client)
| |
| | Server side
| ================================|==================================
| <-- single thread --> | Client side
| \/
dbproc1 <------------------- dbproc2
(waiting to fetch (effectively blocked on dbproc1, awaiting
next row) single thread of execution to run)
Dans le cas ci-dessus, un thread d’application client unique a deux connexions ouvertes. Il envoie de
manière asynchrone une opération SQL sur dbproc1. Cela signifie qu’il n’attend pas le retour de l’appel
avant de poursuivre. L’application envoie ensuite une autre SQL sur dbproc2 et attend les résultats pour
commencer à traiter les données renvoyées. Lorsque les données commencent à revenir (selon le dbproc
qui répond d’abord , supposons qu’il s’agit de dbproc1), elle traite pour terminer toutes les données
renvoyées sur ce dbproc. Il récupère les résultats de dbproc1 jusqu’à ce que SPID1 soit bloqué sur un
verrou détenu par SPID2 (car les deux requêtes s’exécutent de manière asynchrone sur le serveur). À ce
stade, dbproc1 attend indéfiniment plus de données. SPID2 n’est pas bloqué sur un verrou, mais tente
d’envoyer des données à son client, dbproc2. Toutefois, dbproc2 est effectivement bloqué sur dbproc1 au
niveau de la couche d’application, car le thread unique d’exécution de l’application est utilisé par dbproc1.
Cela entraîne un blocage qui ne peut SQL Server détecter ou résoudre, car une seule des ressources
impliquées est SQL Server ressource.
B. Blocage distribué client/serveur avec un thread par connexion
Même s’il existe un thread distinct pour chaque connexion sur le client, une variante de ce blocage
distribué peut toujours se produire comme indiqué ci-après.
SPID1------blocked on lock-------->SPID2
/\ (waiting on net write) Server side
| |
| |
| INSERT |SELECT
| ================================|==================================
| <-- thread per dbproc --> | Client side
| \/
dbproc1 <-----data row------- dbproc2
(waiting on (blocked on dbproc1, waiting for it
insert) to read the row from its buffer)
Ce cas est similaire à l’exemple A, sauf que dbproc2 et SPID2 exécutent une instruction avec l’intention
d’effectuer un traitement de ligne à la fois et de remettre chaque ligne à travers une mémoire tampon à
dbproc1 pour un , ou instruction sur le même SELECT INSERT UPDATE DELETE tableau. Finalement,
SPID1 (en cours d’effectuer le , ou ) devient bloqué sur un verrou détenu par INSERT UPDATE DELETE
SPID2 (en cours d’effectuer SELECT le ). SPID2 écrit une ligne de résultat dans le client dbproc2. Dbproc2
tente ensuite de transmettre la ligne dans une mémoire tampon à dbproc1, mais trouve que dbproc1 est
occupé (il est bloqué en attente sur SPID1 pour terminer le courant , qui est bloqué sur INSERT SPID2). À
ce stade, dbproc2 est bloqué au niveau de la couche d’application par dbproc1 dont spid (SPID1) est
bloqué au niveau de la base de données par SPID2. Là encore, cela entraîne un blocage qui ne peut SQL
Server détecter ou résoudre, car une seule des ressources impliquées est SQL Server ressource.
Les exemples A et B sont des problèmes fondamentaux que les développeurs d’applications doivent
connaître. Ils doivent coder les applications pour gérer ces cas de manière appropriée.
Résolutions :
Lorsqu’un délai d’délai d’une requête est fourni, si le blocage distribué se produit, il est rompu lorsqu’il
arrive. Pour plus d’informations sur l’utilisation d’un délai d’accès à une requête, référencez la
documentation de votre fournisseur de connexions.
5. Blocage provoqué par une session dans un état de récupération
Une requête de modification de données qui est ENLISÉ, ou annulée en dehors d’une transaction définie
par l’utilisateur, sera annulée. Cela peut également se produire en tant que conséquence secondaire de la
déconnexion de la session réseau client, ou lorsqu’une demande est sélectionnée en tant que victime du
blocage. Cela peut souvent être identifié en observant la sortie de , qui peut indiquer la ROLLBACK , et la
colonne sys.dm_exec_requests command peut afficher la percent_complete progression.
Une requête de modification de données qui est ENLISÉ, ou annulée en dehors d’une transaction définie
par l’utilisateur, sera annulée. Cela peut également se produire en tant que conséquence secondaire du
redémarrage de l’ordinateur client et de la déconnexion de sa session réseau. De même, une requête
sélectionnée en tant que victime du blocage sera revenir en arrière. Une requête de modification de
données ne peut souvent pas être revenir en arrière plus rapidement que les modifications initialement
appliquées. Par exemple, si une instruction ou une instruction a été en cours d’exécution pendant une
heure, la mise à jour peut prendre au moins DELETE INSERT une UPDATE heure. Il s’agit d’un
comportement attendu, car les modifications apportées doivent être recalées, sinon l’intégrité
transactionnelle et physique de la base de données serait compromise. Dans la mesure où cela doit se
produire, SQL Server le SPID est dans un état de récupération ou d’or (ce qui signifie qu’il ne peut pas
être sélectionné en tant que victime d’un blocage). Cela peut souvent être identifié en observant la sortie
sp_who de , qui peut indiquer la commande ROLLBACK. La status colonne de sys.dm_exec_sessions
indiquera un état ROLLBACK.
NOTE
Les restaurations longues sont rares lorsque la fonctionnalité récupération accélérée de base de données est
activée. Cette fonctionnalité a été introduite dans SQL Server 2019.
Résolution :
Vous devez attendre la fin de la session pour récupérer les modifications qui ont été apportées.
Si l’instance est fermée au milieu de cette opération, la base de données sera en mode de récupération au
redémarrage et inaccessible tant que toutes les transactions ouvertes n’auront pas été traitées. La
récupération de démarrage prend essentiellement la même durée par transaction que la récupération au
moment de l’utilisation, et la base de données est inaccessible pendant cette période. Par conséquent, le
fait de forcer le serveur à réparer un SPID dans un état de récupération est souvent contre-productif.
Dans SQL Server 2019 avec la récupération de base de données accélérée activée, cela ne doit pas se
produire.
Pour éviter cette situation, n’effectuez pas d’opérations d’écriture par lot importantes, ni d’opérations de
création d’index ou de maintenance pendant les heures de pointe sur les systèmes OLTP. Si possible,
effectuez ces opérations pendant les périodes de faible activité.
6. Blocage provoqué par une connexion orpheline
Il s’agit d’un scénario de problème courant. Si l’application cliente s’arrête ou si la station de travail cliente
est redémarré ou si une erreur d’abandon par lots se trouve, la session réseau sur le serveur risque de ne
pas être immédiatement annulée dans certaines conditions. Cela peut se produire si l’application ne
retent pas la transaction dans les blocs CATCH ou FINALLY de l’application.
Dans ce scénario, alors que l’exécution d’un lot SQL a été annulée, la connexion SQL et la transaction
restent ouvertes par l’application. Du point SQL Server du point de vue de l’instance, le client semble
toujours être présent et les verrous acquis peuvent toujours être conservés.
Résolution :
La meilleure façon d’éviter cette condition consiste à améliorer la gestion des erreurs d’application, en
particulier pour les arrêts inattendus. Envisagez également l’utilisation de la connexion, ou dans toutes les
procédures stockées qui commencent des transactions et ne sont pas nettoyées suite SET XACT_ABORT ON
à une erreur. En cas d’erreur d’utilisation, ce paramètre abandonne toutes les transactions ouvertes et
retourne le contrôle au client. Pour plus d’informations, voir SET XACT_ABORT (Transact-SQL).
Pour résoudre une connexion orpheline d’une application cliente qui s’est déconnectée sans nettoyer
correctement ses ressources, vous pouvez mettre fin au SPID à l’aide de la KILL commande. Pour
référence, voir KILL (Transact-SQL).
La KILL commande prend la valeur SPID comme entrée. Par exemple, pour mettre fin à SPID 9, vous
pouvez émettre la commande suivante :
KILL 99
NOTE
La KILL commande peut prendre jusqu’à 30 secondes, en raison de l’intervalle entre les vérifications de la KILL
commande.
Voir aussi
Surveillance des performances à l’aide du magasin de requêtes
Résoudre les problèmes de blocage causés par l’escalade de verrouillage dans SQL Server
Guide du verrouillage des transactions et du système de version des lignes
DÉFINIR LE NIVEAU D’ISOLATION DES TRANSACTIONS
Démarrage rapide : événements étendus dans SQL Server
Mises à jour recommandées et options de
configuration pour SQL Server avec des charges de
travail hautes performances
12/08/2021 • 18 minutes to read
Cet article inclut une liste des améliorations des performances et des options de configuration disponibles pour
SQL Server 2012 et versions ultérieures.
Version du produit d’origine : SQL Server 2014, SQL Server 2012
Numéro de la ko d’origine : 2964518
NOTE
Dans SQL Server 2016 et versions ultérieures, la plupart des indicateurs de suivi mentionnés dans cet article sont le
comportement par défaut et vous n’avez pas besoin de les activer dans ces versions.
IMPORTANT
Lorsque vous activez des correctifs avec des indicateurs de suivi dans les environnements Always On, sachez que vous
devez activer les indicateurs de correction et de suivi sur tous les réplicas qui font partie du groupe de disponibilité.
L IEN
D’A RT IC L E/ B LO G DE
SC ÉN A RIO ET L A B A SE DE
SY M P TÔ M E À P L A GES DE VERSIO N S VERSIO N S ET P L A GES C O N N A ISSA N C ES
P REN DRE EN ET DE B UIL D DE B UIL D N O N Q UI F O URN IT P L US
C OMPT E IN DIC AT EUR DE SUIVI A P P L IC A B L ES A P P L IC A B L ES DE DÉTA IL S
Les travaux T7471 SQL Server 2014 SP1 Aucun Amélioration des
statistiques CU6 vers SP/CU performances des
prennent actuel statistiques de mise à
beaucoup de jour SQL 2014 &
temps. SQL 2016
Impossible
d’exécuter
plusieurs
travaux de
mise à jour
statistiques
en parallèle.
Configurer l’option de configuration du serveur degré max Utilisez la sp_configure stockée pour modifier la
de parallélisme configuration afin de configurer l’option de configuration du
serveur degré maximum de parallélisme pour votre instance
de SQL Server, comme indiqué dans l’article de la Base de
connaissances.
RESSO URC E EN L IGN E A RT IC L E/ L IVRES DE L A B A SE DE
C O N N A ISSA N C ES A C T IO N S REC O M M A N DÉES
Calculer les limites de capacité par édition de SQL Server Êdition Entreprise licence serveur + licence d’accès client est
limitée à 20 cœurs par instance SQL Server client. Il n’existe
aucune limite dans le modèle de gestion des licences serveur
basée sur le cœur. Envisagez de mettre à niveau votre
édition de SQL Server vers la référence SKU appropriée pour
tirer parti de toutes les ressources matérielles.
Performances lentes sur Windows server lors de l’utilisation Examinez l’article et travaillez avec votre administrateur
du plan d’alimentation « équilibré » Windows pour implémenter l’une des solutions qui sont
notées dans la section « Résolution » de l’article.
Optimiser pour la PARAMÉTISATION FORCÉE des charges de Les entrées dans le cache du plan sont délogées en raison de
travail ad hoc la croissance d’autres caches ou d’employés de mémoire.
Vous pouvez également rencontrer des problèmes de cache
de plan lorsque le cache atteint son nombre maximal
d’entrées. Outre l’indicateur de suivi 8032 mentionné ci-
dessus, envisagez l’option d’optimisation des charges de
travail ad hoc et l’option de base de données PARAMÈTRES
FORCÉS.
Comment réduire la pagination de la mémoire du pool de Attribuez le droit d’utilisateur Activer les pages de
mémoires tampons dans SQL Server configuration de la verrouillage en mémoire (Windows) au compte de
mémoire et les considérations de taille dans SQL Server démarrage SQL service de verrouillage. Découvrez comment
2012 et versions ultérieures activer la fonctionnalité « pages verrouillées » dans SQL
Server 2012. Définissez la mémoire maximale du serveur à
environ 90 % de la mémoire physique totale. Assurez-vous
que les options de configuration de la mémoire du serveur
qui configurent la mémoire ne comptent que pour les nodes
configurés pour utiliser les paramètres de masque d’affinité.
SQL Server pages et grandes pages expliquées... Envisagez d’activer TF 834 si vous avez un serveur avec une
Optimisation des options de SQL Server lors de l’exécution grande quantité de mémoire, en particulier avec une charge
dans des charges de travail hautes performances de travail analytique ou d’entrepôt de données. N’oubliez pas
que le TF 834n’est pas recommandé si vous utilisez des index
columnstore .
ALTER WORKLOAD GROUP : conseils de requête d’octroi de Si de nombreuses requêtes épuisent de grandes quantités
mémoire de mémoire, réduisez la valeur par défaut du groupe de
charges de travail dans la configuration du gouverneur de
ressources de 25 % par défaut à une valeur
request_max_memory_grant_percent inférieure. De
nouvelles options d’octroi de mémoire de requête sont
disponibles min_grant_percent max_grant_percent (et)
dans SQL Server
RESSO URC E EN L IGN E A RT IC L E/ L IVRES DE L A B A SE DE
C O N N A ISSA N C ES A C T IO N S REC O M M A N DÉES
Initialisation de fichier instantané Travaillez avec votre administrateur Windows pour accorder
au compte de service SQL Server le droit d’utilisateur «
Effectuer les tâches de maintenance en volume » en fonction
des informations de la rubrique Books Online.
Considérations sur les paramètres « autogrow » et « Vérifiez les paramètres actuels de votre base de données et
autoshrink » dans SQL Server assurez-vous qu’ils sont configurés en suivant les
recommandations de l’article de la Base de connaissances.
Points de contrôle de base de données (SQL Server) Envisagez d’activer les points de contrôle indirects sur les
bases de données utilisateur pour optimiser le
comportement des opérations d’SQL Server 2012 et 2014.
CORRECTIF : Synchronisation lente lorsque les disques ont Si vous avez un groupe de disponibilité dans lequel le journal
des tailles de secteur différentes pour les fichiers journaux de des transactions sur le réplica principal se trouve sur un
réplica principal et secondaire dans les environnements SQL disque de taille de secteur de 512 byte et que le journal des
Server AG et Logshipping transactions du réplica secondaire se trouve sur un lecteur
avec une taille de secteur de 4K, il se peut que la
synchronisation soit lente. Dans ce cas, l’activation de TF
1800 doit corriger le problème.
Choix des développeurs : progression des requêtes - Si votre SQL Server n’est pas déjà liée au processeur et
à tout moment, n’importe où qu’une surcharge de 1,5 à 2 % est négligeable pour vos
Mise à jour pour exposer les statistiques d’exécution charges de travail, nous vous recommandons d’activer TF
de requête par opérateur dans showplan XML et 7412 comme indicateur de suivi de démarrage. Cet
l’événement étendu SQL Server 2014 SP2 indicateur active le profilage léger dans SQL Server 2014 SP2
ou version ultérieure, ce qui vous permet d’apporter des
dépannages de requête en direct dans les environnements
de production.
NOTE
Le nom de la mise à jour cumulative dans la colonne Mise à jour requise fournit la première mise à jour cumulative SQL
Server résoudre ce problème. Une mise à jour cumulative contient tous les correctifs logiciels et toutes les mises à jour
incluses dans la version précédente SQL Server mise à jour. Par conséquent, nous vous recommandons d’installer la
dernière mise à jour cumulative afin de résoudre les problèmes.
A RT IC L E DE L A B A SE DE
SY M P TÔ M ES M ISE À JO UR REQ UISE C O N N A ISSA N C ES
Les écritures enthousiastes lors de l' SQL Server 2012 SP2 CU1 CORRECTIF : performances médiocres
select-into pour les tables temporaires SQL Server 2012 SP1 CU10 sur les opérations d’entrée/de-la
provoquent des problèmes de lorsque vous exécutez une sélection
performances. dans une opération de table
temporaire SQL Server 2012
Vous rencontrez SQL Server 2014 RTM CU1 CORRECTIF : les performances
PWAIT_MD_RELATION_CACHE ou SQL Server 2012 SP1 CU9 diminuent après un ALTER INDEX...
MD_LAZYCACHE_RWLOCK patientez L’opération ONLINE est abandonnée
après l’abandon SQL Server 2012 ou SQL Server 2014
ALTER INDEX ... ONLINE d’une
opération de requête.
Les requêtes ont soudainement des SQL Server 2014 RTM CU1 CORRECTIF : les threads ne sont pas
résultats médiocres sur l’édition SQL Server 2012 SP1 CU7 programmés de manière SQL Server
standard du produit. 2012 ou SQL Server 2014 Édition
Standard
Performances ralenties en raison d’une SQL Server 2012 SP1 CU4 CORRECTIF : vous pouvez faire face à
baisse soudaine de la durée de vie de des problèmes de performances SQL
la page. Server 2012
Utilisation élevée du processeur par le SQL Server 2012 SP1 CU3 CORRECTIF : Pointe du processeur
moniteur de ressources sur les lorsqu’il n’y a aucune charge sur un
systèmes avec une configuration serveur après l’installation SQL Server
NUMA, une mémoire élevée et une « 2012 sur le serveur
mémoire serveur maximale » définie
sur une faible valeur.
Le programme de planification qui SQL Server 2012 SP1 CU2 CORRECTIF : Erreur 17883 lorsque
n’offre pas de rendement pendant que vous exécutez une requête sur un
l’allocation de mémoire pour le tri serveur qui dispose de nombreuses
s’exécute est associé à de grandes processeurs et d’une grande quantité
quantités de mémoire accordées sur de mémoire dans SQL Server 2012 ou
les systèmes où une grande quantité SQL Server 2008 R2
de mémoire est installée.
Programmeur sans rapport de SQL Server 2012 SP1 CU1 CORRECTIF : « Le processus semble ne
rendement lorsque l’opérateur de tri pas produire sur le scheduler »
parcourt de nombreux compartiments message d’erreur lorsque vous
dans le pool de mémoires tampons sur exécutez une requête dans SQL Server
des systèmes avec une mémoire 2012
importante.
Utilisation élevée du processeur SQL Server 2012 SP2 CU1 CORRECTIF : la charge de travail de
lorsque vous exécutez des requêtes SQL Server 2014 RTM CU2 compilation de requête intense n’est
simultanées qui prennent beaucoup de pas mise à l’échelle avec un nombre
temps à compiler sur des systèmes croissant de cœurs sur le matériel
avec plusieurs nodes NUMA et de NUMA et entraîne une saturation du
nombreux cœurs. processeur SQL Server
Les allocations de mémoire pour les SQL Server 2012 SP1 CU3 CORRECTIF : résoudre SQL Server
opérateurs de tri prennent beaucoup problèmes de performances dans les
de temps sur les systèmes NUMA avec environnements NUMA
une mémoire importante en raison
des allocations de nœuds distants.
A RT IC L E DE L A B A SE DE
SY M P TÔ M ES M ISE À JO UR REQ UISE C O N N A ISSA N C ES
Erreurs de mémoire en mémoire SQL SQL Server 2012 RTM CU1 CORRECTIF : Erreur de mémoire
Server est installé sur un ordinateur insatisfait lorsque vous exécutez une
NUMA avec une grande quantité de instance de SQL Server 2012 sur un
RAM et SQL Server a beaucoup de ordinateur qui utilise NUMA
pages étrangères.
Contention spinlock sur SQL Server 2014 RTM CU1 CORRECTIF : performances ralenties
SOS_CACHESTORE et SQL Server 2012 SP1 CU7 dans SQL Server 2012 ou SQL Server
SOS_SELIST_SIZED_SLOCK lorsque 2014 lorsque vous créez un index sur
vous créez un index sur le type de un type de données spatiales d’une
données spatiales dans une grande grande table
table.
Type d’attente CMEMTHREAD élevé SQL Server 2014 RTM CU1 CORRECTIF : performances ralenties
lorsque vous créez un index sur un SQL Server 2012 SP1 CU7 dans SQL Server lorsque vous créez un
type de données spatiales dans des index sur un type de données spatiales
tables de grande taille. d’une table de grande taille dans une
instance SQL Server 2012 ou SQL
Server 2014
Problèmes de performances dus aux SQL Server 2014 RTM CU1 CORRECTIF : des problèmes de
attentes CMEMTHREAD pendant SQL Server 2012 SP1 CU9 performances se produisent dans les
l’allocation de mémoire sur environnements NUMA lors du
SOS_PHYS_PAGE_CACHE des traitement de pages étrangères SQL
ordinateurs de grande taille. Server 2012 ou SQL Server 2014
La commande CHECKDB prend Package de mise à jour cumulative 6 CORRECTIF : la commande DBCC
beaucoup de temps pour les bases de pour SQL Server 2014 CHECKDB/CHECKTABLE peut prendre
données de grande taille. plus de temps SQL Server 2012 ou
SQL Server 2014
Remarques importantes
Si toutes les conditions du tableau 1 s’appliquent à vous :
Recommandations pour SQL Server 2014 : appliquer au moins la mise à jour cumulative 1 pour SQL
Server 2014 pour la version finale et ajouter « -T8048 -T9024 -T1236 -T1117 -T1118 » à la liste des
paramètres de démarrage SQL Server.
Recommandations pour SQL Server 2012 : appliquer SP2 et ajouter « -T8048 -T9024 -T1236 -T1117 -
T1118 » à SQL Server liste des paramètres de démarrage.
Pour obtenir des informations générales sur l’utilisation des indicateurs de suivi, consultez la rubrique
DBCC TRACEON - Trace Flags (Transact-SQL) dans SQL Server Books Online.
Vous trouverez plus d’informations sur le nombre de processeurs, la configuration NUMA, etc., dans
votre journal d’erreurs SQL Server dans SQL Server Management Studio (SSMS).
Pour trouver la version de SQL Server, vérifiez ce qui suit :
Comment déterminer la version et l’édition de SQL Server et de ses composants
Références
DBCC (Transact-SQL)
DBCC TRACEON - Trace Flags (Transact-SQL)
Comment obtenir le dernier Service Pack pour SQL Server 2012
Où trouver des informations sur les dernières SQL Server builds
SQL Server de la communauté sur les mises à jour importantes SQL Server
Correctifs liés aux performances et à la stabilité dans les builds post-SQL Server 2012 SP1
Dernières builds de SQL Server 2012
Dernières builds de SQL Server 2012 SP1
Dernières builds de SQL Server 2012 SP2
Dernières builds de SQL Server 2014
S’applique à
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Business Intelligence
SQL Server Développeur 2014
SQL Server 2014 Standard
SQL Server Web 2014
SQL Server 2014 Express
SQL Server 2012 Business Intelligence
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
Mises à jour recommandées et options de
configuration pour SQL Server 2017 et 2016 avec
des charges de travail hautes performances
13/08/2021 • 40 minutes to read
Cet article décrit une liste des améliorations des performances et des options de configuration disponibles pour
SQL Server 2016 et versions ultérieures.
Version du produit d’origine : SQL Server 2017 Windows, SQL Server 2016
Numéro de la ko d’origine : 4465518
Introduction
Cet article décrit les améliorations et modifications de performances disponibles pour Microsoft SQL Server
2017 et SQL Server 2016 par le biais de différentes mises à jour de produits et options de configuration.
Nous vous recommandons d’envisager d’appliquer ces mises à jour pour améliorer les performances de SQL
Server instances. Le degré d’amélioration dépend de différents facteurs, notamment le modèle de charge de
travail, les points de contention, la disposition du processeur (nombre de groupes de processeurs, de sockets, de
nœuds NUMA et de cœurs dans un nœud NUMA) et la quantité de mémoire disponible dans le système.
L’équipe de support SQL Server a utilisé ces mises à jour et modifications de configuration pour obtenir des
gains de performances raisonnables pour les charges de travail des clients qui utilisent des systèmes matériels
qui comprenaient plusieurs nodes NUMA et de nombreux processeurs. L’équipe de support technique
continuera à mettre à jour cet article avec d’autres mises à jour à l’avenir.
IMPORTANT
Si vous avez activé les indicateurs de suivi, veillez à consulter les informations de cet article après avoir exécuté la
migration vers SQL Server 2017 ou SQL Server 2016. De nombreux indicateurs de suivi et options de configuration
répertoriés dans cet article sont devenus des options par défaut dans SQL Server 2017 et SQL Server 2016.
NOTE
La version et la build applicables indiquent la mise à jour spécifique dans laquelle l’indicateur de modification ou
de suivi a été introduit. Si aucune cu n’est spécifiée, toutes les CUS du SP sont incluses.
La version et la build non applicables indiquent la mise à jour spécifique dans laquelle l’indicateur de modification
ou de suivi est devenu le comportement par défaut. Par conséquent, le simple fait d’appliquer cette mise à jour sera
suffisant pour en bénéficier.
IMPORTANT
Lorsque vous activez des correctifs qui ont des indicateurs de suivi dans les environnements Always On, sachez que vous
devez activer les indicateurs de correction et de suivi sur tous les réplicas qui font partie du groupe de disponibilité.
A RT IC L E DE L A B A SE
SC ÉN A RIO ET DE C O N N A ISSA N C ES
SY M P TÔ M E À P L A GES DE VERSIO N S VERSIO N S ET P L A GES O U L IEN DE B LO G
P REN DRE EN ET DE B UIL DS DE B UIL D N O N P O UR P L US
C OMPT E IN DIC AT EUR DE SUIVI A P P L IC A B L ES A P P L IC A B L ES D’IN F O RM AT IO N S
tempdb est T3468 SQL Server 2016 SP1 Aucun Point de contrôle
largement utilisé et a CU5 vers le SP/CU indirect et tempdb -
de nombreuses actuel SQL Server le bon, le mauvais et
modifications 2017 CU1 vers le le programmeur non
apportées aux SP/CU actuel réparateur
données dans KB4040276 -
tempdb Vous CORRECTIF : Les
rencontrez des points de contrôle
messages de indirects sur la base
planification qui n’ont de données tempdb
pas de rapport lors provoquent une
de l’utilisation d’un erreur «
point de contrôle Programmeur non
indirect pour la base réparateur de
de données tempdb rendement » dans
SQL Server 2016 et
2017
Des transactions T3427 SQL Server 2016 SP1 SQL Server 2017 KB3216543 -
courtes fréquentes se CU2 vers SQL Server RTM CORRECTIF : les
produisent dans 2016 SP2 CU2 charges de travail qui
tempdbYou utilisent de
remarquez une nombreuses
augmentation de transactions courtes
l’utilisation du et fréquentes dans
processeur pour ces SQL Server 2016 et
transactions La 2017 peuvent
conformité aux consommer plus de
critères courants processeur qu’SQL
n’est pas activée Server 2014
A RT IC L E DE L A B A SE
SC ÉN A RIO ET DE C O N N A ISSA N C ES
SY M P TÔ M E À P L A GES DE VERSIO N S VERSIO N S ET P L A GES O U L IEN DE B LO G
P REN DRE EN ET DE B UIL DS DE B UIL D N O N P O UR P L US
C OMPT E IN DIC AT EUR DE SUIVI A P P L IC A B L ES A P P L IC A B L ES D’IN F O RM AT IO N S
Configurer l’option de configuration du serveur degré max Utilisez la procédure stockée pour modifier la configuration
de parallélisme afin de configurer l’option de configuration du serveur degré
maximum de parallélisme pour votre instance de SQL Server
selon l’article de la sp_configure Base de connaissances.
A RT IC L E DE L A B A SE DE C O N N A ISSA N C ES O U RESSO URC E
B O O K S O N L IN E A C T IO N S REC O M M A N DÉES
Calculer les limites de capacité par édition Limitation de Êdition Entreprise licence de licence d’accès client et serveur
licence principale pour SQL Server 2012 est limitée à 20 cœurs par instance SQL Server client.
Il n’existe aucune limite dans le modèle de gestion des
licences serveur basée sur le cœur.
Envisagez de mettre à niveau votre édition de SQL Server
vers la référence SKU appropriée pour utiliser toutes les
ressources matérielles.
Performances lentes sur Windows server lors de l’utilisation Examinez l’article et travaillez en collaboration avec votre
du plan d’alimentation équilibrée administrateur Windows pour implémenter l’une des
solutions répertoriées dans la section Résolution de l’article.
optimiser pour les charges de travail ad hoc Configuration Les entrées dans le cache du plan sont délogées en raison de
du serveur Option DE CONFIGURATION FORCÉE la croissance d’autres caches ou d’employés de mémoire.
PARAMÉTISATION FORCÉE Vous pouvez également rencontrer des problèmes de cache
de plan lorsque le cache atteint son nombre maximal
d’entrées. Outre l’indicateur de suivi 8032 mentionné ci-
dessus, envisagez l’option d’optimisation des charges de
travail ad hoc et l’option de base de données PARAMÈTRES
FORCÉS.
Comment réduire la pagination de la mémoire du pool de Attribuez le droit d’utilisateur Activer les pages de
mémoires tampons dans SQL Server verrouillage en mémoire (Windows) au compte de
Considérations sur la configuration de la mémoire et le SQL démarrage SQL service de verrouillage. Découvrez comment
Server 2012 et versions ultérieures activer la fonctionnalité « pages verrouillées » dans SQL
Server 2012. Définissez la mémoire maximale du serveur à
environ 90 % de la mémoire physique totale. Assurez-vous
que les options de configuration de la mémoire du serveur
qui configurent la mémoire ne comptent que pour les nodes
configurés pour utiliser les paramètres de masque d’affinité.
SQL Server pages et grandes pages expliquées... Envisagez d’activer le TF 834 si vous disposez d’un serveur
Optimisation des options de SQL Server lors de l’exécution qui dispose de beaucoup de mémoire, en particulier pour
dans des charges de travail hautes performances une charge de travail analytique ou d’entrepôt de données.
Gardez à l’esprit que l’interopérabilité des index
Columnstoreavec le modèle de mémoire de grande page
SQL Server .
Problèmes de performances des requêtes associés à un Si le cache de sécurité atteint une taille importante et que
cache de sécurité de grande taille Comment personnaliser le vous rencontrez des problèmes de performances et une
quota pour le magasin de cache TokenAndPermUserStore contention de spinlock, envisagez d’activer les indicateurs de
dans SQL Server 2005 Service Pack 3 DBCC TRACEON - suivi T4610 et T4618 pour réduire la taille maximale de
Trace Flags (Transact-SQL) TokenAndPermuserStore.
ALTER WORKLOAD GROUP KB3107401 - De nouvelles Si de nombreuses requêtes épuisent de grandes quantités
options d’octroi de mémoire de requête sont disponibles de mémoire, réduisez la valeur par défaut du groupe de
(min_grant_percent et max_grant_percent) dans SQL Server charges de travail dans la configuration du gouverneur de
2012 ressources de 25 % par défaut à une valeur
request_max_memory_grant_percent inférieure. De
nouvelles options d’octroi de mémoire de requête sont
disponibles min_grant_percent max_grant_percent (et )
dans SQL Server.
SQL 2016 - Il s’exécute simplement plus rapidement : Ajoutez plusieurs fichiers de données de taille égale pour la
configuration TEMPDB automatique base de données tempdb s’il s’agit d’un serveur mis à
niveau. Pour les nouvelles installations, le programme
d’installation le fait automatiquement.
A RT IC L E DE L A B A SE DE C O N N A ISSA N C ES O U RESSO URC E
B O O K S O N L IN E A C T IO N S REC O M M A N DÉES
TEMPDB - Fichiers et indicateurs de suivi et mises à jour Utiliser les optimisations tempdb et améliorer l’évolutivité en
évitant ou en réduisant DDL sur les objets temp
Considérations sur les paramètres « autogrow » et « Vérifiez les paramètres actuels de votre base de données et
autoshrink » dans SQL Server assurez-vous qu’ils sont configurés selon les
recommandations de l’article de la Base de connaissances.
Points de contrôle indirects Envisagez d’activer les points de contrôle indirects sur les
bases de données utilisateur pour optimiser le
comportement des opérations d’SQL Server 2014 et 2012.
SQL Server : ram de grande taille et point de contrôle DB Envisagez d’activer les points de contrôle indirects sur les
bases de données utilisateur pour optimiser le
comportement des opérations d’opérations d’entreprise
dans SQL Server 2014 et 2012. Examinez les ajustements
requis pour tempdb dans le point de contrôle indirect de
référence et tempdb : le bon, le mauvais et le programme de
planification sans rendement
KB3009974 - CORRECTIF : synchronisation lente lorsque les Si vous disposez d’un groupe de disponibilité dans lequel le
disques ont des tailles de secteur différentes pour les fichiers journal des transactions sur le réplica principal se trouve sur
journaux de réplica principal et secondaire dans les un disque dont la taille de secteur est de 512 byte et que le
environnements SQL Server AG et Logshipping journal des transactions du réplica secondaire se trouve sur
un lecteur dont la taille de secteur est de 4 Ko, la
synchronisation peut être lente. Dans ce cas, l’activation de
TF 1800 doit corriger le problème.
Infrastructure de profilage de requête KB3170113 - Si votre SQL Server n’est pas déjà liée au processeur et
3170113 - Mise à jour pour exposer les statistiques qu’une surcharge de 1,5 à 2 % est négligeable pour vos
d’exécution de requête par opérateur dans showplan XML et charges de travail, nous vous recommandons d’activer TF
événement étendu dans SQL Server 2014 SP2 7412 comme indicateur de suivi de démarrage. Cet
indicateur active le profilage léger dans SQL Server 2014 SP2
ou version ultérieure. Cela vous permet de résoudre les
problèmes de requête en direct dans les environnements de
production.
Identifier les régressions de choix de plan à l’aide du magasin Utilisez la fonctionnalité magasin de requêtes pour identifier
de requêtes Activer le meilleur plan de requête les requêtes qui ont régressé ou dont les performances sont
médiocres Si les problèmes de performances de requête se
produisent en raison de l’estimation de la cardinalité,
sélectionnez la version CE appropriée : option d’étendue
base de données, conseil de requête, niveau de compatibilité
de base de données ou indicateur de suivi
LEGACY_CARDINALITY_ESTIMATION
LEGACY_CARDINALITY_ESTIMATION 9481
L’hypothèse d’un contenu joint dans le New Cardinality Évaluez les requêtes qui utilisent des jointeurs et des filtres
Estimateor dégrade les performances des requêtes pour comprendre l’effet d’un contenu simple et de base.
Utilisez l’indicateur de suivi 9476 pour le contenu simple au
lieu du contenu de base lorsque vous utilisez l’estimateur de
cardinalité par défaut.
A RT IC L E DE L A B A SE DE C O N N A ISSA N C ES O U RESSO URC E
B O O K S O N L IN E A C T IO N S REC O M M A N DÉES
Améliorations apportées au niveau de compatibilité 130 Utilisez le niveau de compatibilité de base de données 130
Améliorations du niveau de compatibilité 140 ou ultérieur pour bénéficier des améliorations suivantes :
Seuil adaptatif et agressif pour la mise à jour des statistiques
existantes pour les tableaux plus volumineux
Amélioration du mécanisme d’échantillonnage et de
verrouillage pour la mise à jour des statistiques
Statistiques échantillonn es par un processus multi-thread
Possibilité d’exécuter insert-select à l’aide du niveau de
compatibilité de base de données parallelismUse 140 ou
ultérieur pour bénéficier des améliorations suivantes :
Amélioration de l’estimation de la cardinalité et de la qualité
de la planifier à l’aide de nouvelles fonctionnalités telles que
l’exécution entrecoupées pour les fonctions à valeurs de
table à plusieurs instructions et la jointation adaptative
Amélioration de l’utilisation de la mémoire par le biais du
retour d’octroi de mémoire
SQL Server 2016/2017 : modèle de réplica secondaire du Si vous faites l’objet d’un trop grand nombre d’attentes ( ou
groupe de disponibilité et performances ), examinez ce blog pour prendre des mesures correctives
(appliquer le correctif applicable, évaluer l’utilisation
appropriée du PARALLEL_REDO_TRAN_TURN
DPT_ENTRY_LOCK modèle de DIRTY_PAGE_TABLE_LOCK
réaxyment)
KB2634571 : les améliorations apportées à la commande Si vous exécutez des commandes DBCC CHECK sur des
DBCC CHECKDB peuvent accélérer les performances lorsque bases de données de grande taille (plusieurs To), envisagez
vous utilisez l’option PHYSICAL_ONLY Les améliorations d’utiliser les indicateurs de suivi T2562, T2549 et T2566.
apportées à la commande CHECKDB DBCC peuvent Plusieurs vérifications sont maintenant situées sous l’option
améliorer les performances lorsque vous utilisez les détails EXTENDED_LOGICAL_CHECK dans SQL Server 2016.
de l’option PHYSICAL_ONLY optionT2566 dans DBCC
TRACEON - Indicateurs de suivi A plus rapide CHECKDB -
Partie IV (UDT CLR SQL)
Protéger les SQL Server contre les attaques contre les Évaluez attentivement les performances de l’ombrage
vulnérabilités de canal latéral de Spectre et Derdown d’adresse virtuelle (KVAS) du noyau, de l’indirection de la
table des pages du noyau (KPTI) et de l’atténuation de la
prédiction de branche indirecte (IBP) sur différentes charges
de travail SQL Server dans votre environnement.
IN F O RM AT IO N S ET RÉF ÉREN C ES
C AT ÉGO RIE RÉSUM É DE L A M O DIF IC AT IO N SUP P L ÉM EN TA IRES
Conversions de type de données de SQL Server 2016 (13.x) inclut des Pour plus d’informations, voir SQL
traitement des requêtes améliorations dans certaines Server 2016dans la gestion de certains
conversions de types de données et types de données et des opérations
certaines opérations (principalement peu courantes.
rares).
Groupe de disponibilité Pour la base de données secondaire, SQLS titre16 !, Épisode 2 : Amorçage
l’amorçage automatique d’initialisation automatique des groupes de
utilise les points de terminaison de disponibilité
mise en miroir de base de données
pour diffuser le contenu de la base de
données au second niveau et les
appliquer.
Groupe de disponibilité SQL Server 2016 utilise moins de SQL 2016 - Il s’exécute simplement
commutateurs de contexte lorsqu’il plus rapidement : commutateurs de
transporte des blocs de journaux du contexte avec transport de journal
principal au secondaire. AlwaysOn SQL Server 2016 - Il
s’exécute simplement plus rapidement :
groupes de disponibilité AlwaysOn
surchargés
Groupe de disponibilité SQL Server 2016 utilise des SQL 2016 - Il s’exécute simplement
algorithmes de compression améliorés plus rapidement : Compression
et la compression parallèle des parallèle AlwaysOn / Algorithmes
données de bloc de journaux. améliorés
Groupe de disponibilité SQL Server 2016 tire parti du matériel SQL 2016 - Il s’exécute simplement
basé sur les fonctionnalités de plus rapidement - Chiffrement
chiffrement AES-NI pour améliorer AlwaysOn AES-NI
l’évolutivité et les performances de la
livraison des journaux Always On par
un facteur significatif.
IN F O RM AT IO N S ET RÉF ÉREN C ES
C AT ÉGO RIE RÉSUM É DE L A M O DIF IC AT IO N SUP P L ÉM EN TA IRES
Performances SQL Server 2016 détecte les SQL 2016 - Il s’exécute simplement
fonctionnalités de processeur pour plus rapidement : le magasin de
AVX ou SSE et utilise les fonctionnalités colonnes utilise des instructions
vectorielles basées sur le matériel pour vectorielles (SSE/AVX)
améliorer l’évolutivité et les
performances lors de la compression,
de la création de dictionnaires et du
traitement des données du magasin de
colonnes.
Performances SQL Server 2016 tire parti des SQL 2016 - Il s’exécute simplement
instructions du vecteur UC pour plus rapidement - BULK INSERT utilise
améliorer les performances d’insertion des instructions vectorielles (SSE/AVX)
en bloc.
Performances SQL Server 2016 active un insert ... SQLS titre16!, Épisode 3 : Insertion
Instruction SELECT à utiliser à l’aide du parallèle... SELECT
parallélisme réduisant
considérablement le temps de
chargement des données.
Tempdb Les allocations sont tempdb et les SQL 2016 - Il s’exécute simplement
bases de données utilisateur utilisent plus rapidement : modifications -
des étendues complètes uniformes. La T1117 et -T1118 pour TEMPDB et les
croissance des fichiers dans tempdb se bases de données utilisateur
produit pour tous les fichiers en même
temps.
SQL SYSTÈME D’EXPLOITATION Partitionner dynamiquement les objets SQL 2016 - Il s’exécute simplement
mémoire pour réduire la contention plus rapidement : partitionnement
d’objets mémoire. d’objet mémoire dynamique
(CMemThread)
SQL SYSTÈME D’EXPLOITATION SQL Server 2016 surveille les modèles SQL 2016 - Il s’exécute simplement
d’utilisation quantum des travailleurs plus rapidement : algorithmes de
permettant à tous les employés planification mis à jour
d’obtenir un traitement équitable et
d’améliorer l’évolutivité.
SQL SYSTÈME D’EXPLOITATION SQL Server 2016 interroge la SQL 2016 - Il s’exécute simplement
disposition matérielle et configure plus rapidement : automatique soft
automatiquement la fonction NUMA NUMA
(Soft NUMA) sur les systèmes qui
rapportent au moins 8 processeurs par
nœud NUMA. Le partitionnement
déclenche différents ajustements dans
le moteur de base de données pour
améliorer l’évolutivité et les
performances.
VÉRIFICATION DBCC Spécifiez MAXDOP pour gérer les SQLS rendez-vous16!, Épisode 6 :
ressources qui sont consommées par DBCC CHECKDB avec MAXDOP
la commande CHECK DBCC.
VÉRIFICATION DBCC DBCC CHECK utilise un algorithme SQL 2016 - Il s’exécute simplement
d’analyse des pages amélioré qui offre plus rapidement : DBCC s’étend 7x
moins de contention et des mieux
fonctionnalités avancées de lecture
avant.
VÉRIFICATION DBCC Les commandes CHECK DBCC SQL 2016 - Il s’exécute simplement
prennent beaucoup de temps SQL plus rapidement : vérifications
Server évaluent des types de données étendues DBCC
et des index spéciaux. Ces vérifications
ont été déplacées sous
EXTENDED_LOGICAL_CHECKS option.
Page de codes Les utilitaires INSERT en BLOC ou bcp SQLSriert16!, Épisode 10 : « Je peux
ont été améliorés pour charger les faire un verre ... », mais puis-je le
données UTF-8 dans une table SQL charger dans une base de données ?
Server.
IN F O RM AT IO N S ET RÉF ÉREN C ES
C AT ÉGO RIE RÉSUM É DE L A M O DIF IC AT IO N SUP P L ÉM EN TA IRES
Spatial SQL Server 2016 supprime les activités SQL 2016 - Il s’exécute simplement
PInvoke et PUnInvoke pendant plus rapidement : Implémentation
l’exécution SQL T pour de nombreuses spatiale native
méthodes spatiales.
Spatial SQL Server 2016 améliore l’évolutivité SQL 2016 - Il s’exécute simplement
du TVP qui utilise des données plus rapidement : TVP avec des
spatiales à l’aide de validations colonnes spatiales
spatiales natives.
SQL Server 2016SQL Server Restauration & La sauvegarde du journal CORRECTIF : Erreurs 33111
2017 sauvegarde d’une base de données TDE et 3013 lors de la backing
échoue et renvoie l’erreur up TDE-encrypted database
33111 par intermittence in SQL Server
lorsque vous recherchez Mise à jour cumulative 2
une copie plus ancienne du pour SQL Server 2017
certificat qui a été utilisée Mise à jour cumulative 6
pour chiffrer le deK dans le pour SQL Server 2016 SP1
passé si maxTRANSFERSIZE Mise à jour cumulative 9
n’est pas utilisé par défaut. pour SQL Server 2016
SQL Server 2016SQL Server Restauration & Instruction RESTORE CORRECTIF : RESTORE
2017 sauvegarde HEADERONLY pour une HEADERONLY, instruction
sauvegarde compressée pour une sauvegarde
TDE lente à se terminer compressée TDE lente à se
dans SQL Server terminer dans SQL Server
Mise à jour cumulative 8
pour SQL Server 2017
Mise à jour cumulative 1
pour SQL Server 2016 SP2
SQL Server 2016 Restauration & Erreur 9004 lorsque vous CORRECTIF : Erreur 9004
sauvegarde essayez de restaurer une lorsque vous essayez de
sauvegarde compressée à restaurer une sauvegarde
partir de plusieurs fichiers compressée à partir de
pour une base de données plusieurs fichiers pour un
TDE de grande taille dans grand chiffrement TDE
SQL Server Mise à jour cumulative 7
pour SQL Server 2016 RTM
DESC RIP T IO N DU M ISE À JO UR
VERSIO N A P P L IC A B L E Z O N E O U C O M P O SA N T P RO B L ÈM E RÉSO L U REC O M M A N DÉE
SQL Server 2016SQL Server Restauration & La restauration d’une Mise à jour cumulative 7
2017 sauvegarde [VDI] sauvegarde compressée pour SQL Server 2017
TDE échoue lors de Mise à jour cumulative 1
l’utilisation du client VDI pour SQL Server 2016 SP2
Mise à jour cumulative 9
pour SQL Server 2016 SP1
SQL Server 2016SQL Server Restauration & La sauvegarde de la base de CORRECTIF : la sauvegarde
2017 sauvegarde [VSS] données de disponibilité par de la base de données de
le biais d’une application disponibilité via une
basée sur VSS peut échouer application basée sur VSS
SQL Server peut échouer SQL Server
Mise à jour cumulative 1
pour SQL Server 2017
Mise à jour cumulative 9
pour SQL Server 2016 RTM
Mise à jour cumulative 5
pour SQL Server 2016 SP1
Mise à jour cumulative 8
pour SQL Server 2014 SP2
SQL Server 2016SQL Server Always On AG Les requêtes qui récupèrent CORRECTIF : les requêtes
2017 Columnstore des données à l’aide de la de récupération de données
recherche d’index non utilisant la recherche d’index
cluster prennent plus de non en cluster prennent
temps beaucoup plus de temps
dans SQL Server
Mise à jour cumulative 2
pour SQL Server 2017
Mise à jour cumulative 6
pour SQL Server 2016
Service Pack 1
Mise à jour cumulative 9
pour SQL Server 2016
SQL Server 2016SQL Server Always On AG Les performances sont CORRECTIF : Ag Toujours en
2017 lentes pour une ag always cours lent lors du
on lorsque vous traiterez traitement d’une requête de
une requête de lecture lecture dans SQL Server
Mise à jour cumulative 8
pour SQL Server 2017
Mise à jour cumulative 1
pour SQL Server 2016 SP2
Mise à jour cumulative 9
pour SQL Server 2016 SP1
SQL Server 2016SQL Server Mémoire Erreur de mémoire hors Erreur de mémoire en
2017 mémoire lorsque l’espace mémoire lorsque l’espace
d’adressa visite virtuel du d’adressa SQL Server virtuel
processus SQL Server est du processus est faible en
faible SQL Server
Mise à jour cumulative 4
pour SQL Server 2017
Mise à jour cumulative 8
pour SQL Server 2016 SP1
SQL Server 2016 Mémoire Une fuite de mémoire se Une fuite de mémoire se
produit lorsque vous utilisez produit lorsque vous utilisez
stockage Azure dans SQL stockage Azure dans SQL
Server Server 2014 ou 2016
Mise à jour cumulative 5
pour SQL Server 2016 RTM
Mise à jour cumulative 2
pour SQL Server 2016 SP1
Mise à jour cumulative 2
pour SQL Server 2016
DESC RIP T IO N DU M ISE À JO UR
VERSIO N A P P L IC A B L E Z O N E O U C O M P O SA N T P RO B L ÈM E RÉSO L U REC O M M A N DÉE
SQL Server 2016SQL Server OLTP en mémoire Utilisation de points de CORRECTIF : une utilisation
2017 contrôle disque importants importante du point de
pour un groupe de fichiers contrôle de disque se
optimisé en mémoire produit pour In-Memory
groupe de fichiers optimisé
lors de charges de travail
importantes non en
mémoire
Mise à jour cumulative 6
pour SQL Server 2017
Mise à jour cumulative 8
pour SQL Server 2016 SP1
Mise à jour cumulative 1
pour SQL Server 2016
SQL Server 2016 OLTP en mémoire Les fichiers de point de CORRECTIF : les fichiers de
contrôle se développent de point de contrôle se
manière excessive lorsque développent de manière
vous insérez des données excessive lorsque vous
dans des tables optimisées insérez des données dans
pour la mémoire des tables optimisées pour
la mémoire SQL Server
2016
Mise à jour cumulative 2
pour SQL Server 2016 SP1
Mise à jour cumulative 4
pour SQL Server 2016
SQL Server 2016SQL Server OLTP en mémoire La récupération de la base La récupération d’une base
2017 de données prend de données avec des tables
beaucoup de temps optimisées pour la mémoire
lorsqu’elle contient des prend beaucoup de temps
tables optimisées pour la SQL Server 2017 et 2016
mémoire Mise à jour cumulative 4
pour SQL Server 2017
Mise à jour cumulative 7
pour SQL Server 2016 SP1
SQL Server 2016SQL Server tempdb Modification de table Une contention tempdb
2017 tempdb contentionTemp importante se produit SQL
lourde qui a des contraintes Server 2016 ou 2017
nommées nécessite une Mise à jour cumulative 5
drop synchrone de la table SQL Server 2017
temp Mise à jour cumulative 8
pour SQL Server 2016 SP1
SQL Server 2016SQL Server tempdb Les points de contrôle CORRECTIF : Les points de
2017 indirects sur la base de contrôle indirects sur la
données tempdb base de données tempdb
provoquent l’erreur « provoquent l’erreur «
Programmeur non rapport Programmeur non
de rendement » réparateur de rendement »
dans SQL Server 2017 et
2016
Mise à jour cumulative 1
pour SQL Server 2017
Mise à jour cumulative 5
pour SQL Server 2016
Service Pack 1
Mise à jour cumulative 8
pour SQL Server 2016
SQL Server 2016SQL Server tempdb Les charges de travail qui Les charges de travail qui
2017 utilisent de nombreuses utilisent de nombreuses
transactions fréquentes et transactions fréquentes et
courtes peuvent courtes dans SQL Server
consommer plus d’UC 2017 et 2016 peuvent
consommer plus d’UC
qu’SQL Server 2014
Mise à jour cumulative 4
pour SQL Server 2017
Mise à jour cumulative 2
pour SQL Server 2016 SP1
DESC RIP T IO N DU M ISE À JO UR
VERSIO N A P P L IC A B L E Z O N E O U C O M P O SA N T P RO B L ÈM E RÉSO L U REC O M M A N DÉE
SQL Server 2016SQL Server Journal des transactions Erreur 9002 en l’absence KB4087406 - CORRECTIF :
2017 d’espace disque suffisant Erreur 9002 en l’absence
pour la croissance critique d’espace disque suffisant
des journaux pour la croissance critique
des journaux dans SQL
Server 2014, 2016 et 2017
Mise à jour cumulative 5
SQL Server 2017
Mise à jour cumulative 1
pour SQL Server 2016 SP2
Mise à jour cumulative 8
pour SQL Server 2016 SP1
Mise à jour cumulative 11
pour SQL Server 2014 SP2
SQL Server 2016 Cache de sécurité Une utilisation élevée du KB3195888 - CORRECTIF :
processeur entraîne des une utilisation élevée du
problèmes de performances processeur entraîne des
dans SQL Server 2016 High problèmes de performances
spinlock contention for SQL Server 2016 et 2017
SECURITY_CACHE and Mise à jour cumulative 2
CMED_HASH_SET SQLS pour SQL Server 2016
cumulative 16!, Épisode 8 :
Comment la mise à jour
cumulative 2 de SQL Server
2016 (CU2) peut améliorer
les performances des
charges de travail
hautement simultanées
SQL Server 2017 Magasin de requêtes Une violation d’accès se Violation d’accès lorsque le
produit lorsque le magasin Magasin de requêtes
de requêtes collecte des collecte des statistiques
statistiques d’runtime d’SQL Server 2017
Mise à jour cumulative 5
SQL Server 2017
SQL Agent Amélioration : les travaux SQL Server’agent SQL Server Les travaux de l’agent peuvent démarrer sans
peuvent démarrer sans attendre la récupération de toutes attendre la récupération de toutes les bases de données SQL
les bases de données Server 2017 sur Linux
Mise à jour cumulative 9 pour SQL Server 2017
Stockage Amélioration : activer le mécanisme de « purge Activer le mécanisme de purge forcée dans SQL Server 2017
forcée » SQL Server 2017 sur Linux
Mise à jour cumulative 6 pour SQL Server 2017
Stockage Amélioration : déplacer la base de données KB4053439 - Amélioration : déplacer la base de données
principale et le fichier journal des erreurs vers un autre principale et le fichier journal des erreurs vers un autre
emplacement emplacement dans SQL Server 2017 sur Linux
Mise à jour cumulative 4 pour SQL Server 2017
AG Amélioration : améliorations pour les groupes de KB4339875 : améliorations pour les groupes de disponibilité
disponibilité Always On sur un cluster pacemaker dans SQL Always On sur un cluster pacemaker dans SQL Server
Server Mise à jour cumulative 8 pour SQL Server 2017
Mémoire Amélioration : limite de mémoire minimale définie KB4052969 - CORRECTIF : limite de mémoire minimale
sur 2 Go pour l’installation ou le démarrage SQL Server définie sur 2 Go pour installer ou démarrer SQL Server 2017
Mise à jour cumulative 2 pour SQL Server 2017
Mémoire CORRECTIF : la phase de montée en puissance de KB4075203 - CORRECTIF : la phase de montée en puissance
mémoire est trop longue après l’activé TF 834 de la mémoire est trop longue une fois le TF 834 activé dans
SQL Server 2017 sur Linux
Mise à jour cumulative 4 pour SQL Server 2017
RÉSUM É DES C H A N GEM EN T S O U A M ÉL IO RAT IO N S IN F O RM AT IO N S ET RÉF ÉREN C ES SUP P L ÉM EN TA IRES
Th AD CORRECTIF : Can’t create a login based on a user KB4073670 - CORRECTIF : Can’t create a login based on a
that belongs to the parent domain user that belongs to the parent domain in SQL Server 2017
on Linux
Mise à jour cumulative 4 pour SQL Server 2017
Th AD Mise à jour : améliore les SQL serveur en limitant le KB4463314 - La mise à jour améliore SQL performances du
KDC qui peut être contacté sur des réseaux serveur en limitant le KDC qui peut être contacté sur des
géographiquement importants réseaux géographiquement importants
Mise à jour cumulative 11 pour SQL Server 2017
Th AD CORRECTIF : SQL Server se crashe lorsque vous KB4466962 - CORRECTIF : SQL Server 2017 lorsque vous
utilisez des fournisseurs Active Directory tiers utilisez des fournisseurs Active Directory tiers
Mise à jour cumulative 12 pour SQL Server 2017
Connexions CORRECTIF : Une erreur de résolution de nom KB4053392 - CORRECTIF : une erreur de résolution de nom
se produit lorsque IPv6 est désactivé au démarrage se produit lorsque IPv6 est désactivé au démarrage dans
SQL Server 2017 sur Linux
Mise à jour cumulative 2 pour SQL Server 2017
Connexions CORRECTIF : SQL Server n’écoute pas l’adresse KB4053393 - CORRECTIF : SQL Server 2017 sur Linux
IP non parefault spécifiée par le script mssql-conf n’écoute pas l’adresse IP non parefault spécifiée par le script
mssql-conf
Mise à jour cumulative 2 pour SQL Server 2017
Installation CORRECTIF : échecs de mise à niveau de script Erreurs lors de la mise SQL Server cu4 2017 ou ultérieure et
lors de l’application de la mise à jour un jour l’activation de SQL Agent sur Linux
Mise à jour cumulative 6 pour SQL Server 2017
Conteneur CORRECTIF : Can’t stop the SQL Server Linux KB4093805 - CORRECTIF : can’t stop the SQL Server Linux
Docker container by using the « docker stop » command Docker container by using the « docker stop » command
Mise à jour cumulative 5 SQL Server 2017
Conteneur CORRECTIF : Erreur de mémoire en mémoire KB4347055 - CORRECTIF : Erreur de mémoire lorsque vous
lorsque vous exécutez une SQL Server dans un conteneur exécutez SQL Server 2017 dans un conteneur Docker Linux
Docker Linux Mise à jour cumulative 10 pour SQL Server 2017
RÉSUM É DES C H A N GEM EN T S O U A M ÉL IO RAT IO N S IN F O RM AT IO N S ET RÉF ÉREN C ES SUP P L ÉM EN TA IRES
AG : si vous utilisez le package Pacemaker 1.1.18-11.el7 ou KB4229789 - Mise à jour cumulative 7 SQL Server 2017
une valeur supérieure, ajustez la propriété start-failure-is- Voir la section Notice du pacemaker
fatal
AG CORRECTIF : le pacemaker peut éliminer les processus KB4460203 - CORRECTIF : pacemaker peut éliminer les
de l’agent de ressources lorsque l’opération est à l’attente processus d’agent de ressources lorsque l’opération est SQL
Server groupe de disponibilité AlwaysOn 2017
Mise à jour cumulative 11 pour SQL Server 2017
AG CORRECTIF : deux SQL Server instances sont le réplica KB4316791 - CORRECTIF : deux instances SQL Server sont
principal d’un groupe de disponibilité le réplica principal d’un groupe de disponibilité dans SQL
Server
Mise à jour cumulative 8 pour SQL Server 2017
AG CORRECTIF : Unover inutile lorsque vous utilisez le KB4056922 - CORRECTIF : échec inutile lorsque vous utilisez
groupe de disponibilité AlwaysOn le groupe de disponibilité AlwaysOn dans SQL Server 2017
sur Linux
Mise à jour cumulative 3 SQL Server 2017
AG CORRECTIF : le pacemaker rétrograde le réplica principal KB4076982 - CORRECTIF : Pacemaker rétrograde le réplica
existant d’une ag AlwaysOn et n’en promeut jamais un principal existant d’une ag AlwaysOn dans SQL Server 2017
nouveau sur Linux et n’en promeut jamais un nouveau
Mise à jour cumulative 4 pour SQL Server 2017
AG CORRECTIF : La promotion du réplica local en réplica KB4230542 - CORRECTIF : la promotion du réplica local par
principal échoue lors de l’utilisation de AlwaysOn AG le réplica principal échoue lors de l’utilisation de AlwaysOn
AG dans SQL Server 2017
Mise à jour cumulative 7 pour SQL Server 2017
AG CORRECTIF : le démarrage d’une base de données KB4316790 - CORRECTIF : le démarrage d’une base de
appartenant à un groupe de disponibilité a un temps données appartenant à un groupe de disponibilité est SQL
d’attente Server sur Linux
Mise à jour cumulative 8 pour SQL Server 2017
AG CORRECTIF : Des changements inutiles se produisent KB4316793 - CORRECTIF : des changements inutiles se
lorsqu’une instance de cluster de SQL Server ou always on produisent lorsqu’une instance de cluster de SQL Server
AG est gérée par pacemaker 2017 ou always on ag est gérée par Pacemaker
Mise à jour cumulative 8 pour SQL Server 2017
Dégradation des performances lors de la mise à
niveau du niveau de compatibilité des bases de
données de 120 à 130
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lors de la mise à niveau du niveau de compatibilité
de base de données de 120 à 130.
Version du produit d’origine : SQL Server 2016, SQL Server 2017 sur Windows (toutes les éditions)
Numéro de la ko d’origine : 3212023
Résumé
Prenons l’exemple du scénario suivant :
Vous exécutez une requête spatiale à l’aide d’un filtre avec une fonction telle que STIntersects SQL Server
2016 ou SQL Server 2017 sur Windows.
Le niveau de compatibilité des bases de données est de 120.
La requête utilise un plan d’exécution parallèle.
Vous devez mettre à niveau le niveau de compatibilité de base de données vers 130 et le plan d’exécution est
devenu parallèle à série.
Dans ce scénario, vous risquez de dégrader les performances si la requête renvoie un jeu de résultats important.
Résolution
Pour résoudre ce problème, essayez l’une des méthodes suivantes :
Revenir à votre niveau de compatibilité de base de données à 120. Lorsque vous faites cela, vous ne
pourrez pas bénéficier de certaines des fonctionnalités disponibles dans SQL Server 2016 ou SQL Server
2017 sur Windows sous le niveau de compatibilité de base de données 130. Toutefois, vous serez
toujours en mesure de réaliser de nombreuses améliorations qui ne sont pas liées au niveau de
compatibilité des bases de données, par exemple, une amélioration globale des performances des
opérations de requête avec des types de données spatiales.
Pour obtenir la liste des améliorations SQL Server 2016 qui nécessitent le niveau de compatibilité de
base de données 130, voir ALTER DATABASE (Transact-SQL) Compatibility Level.
Forcez le plan généré avec le niveau de compatibilité de base de données 120 s’il offre de meilleures
performances. Vous pouvez forcer ce plan lors de l’exécution avec le niveau de compatibilité de base de
données 130 à l’aide de USE PLAN l’indication de requête. Pour plus d’informations sur l’utilisation des
conseils, voir Hints (Transact-SQL) - Query.
Vous pouvez également utiliser le magasin de requêtes pour identifier et corriger des choix de plan
spécifiques. Pour plus d’informations sur l’utilisation du magasin de requêtes à cet effet, voir Scénarios
d’utilisation du magasin de requêtes.
Plus d’informations
SQL Server niveaux de compatibilité de base de données 120 et 130 utilisent différentes approches pour
estimer la cardinalité des prédicats, où une fonction définie par l’utilisateur scalante ou une fonction T-SQL
particulière (telle que STIntersects) est comparée à une constante.
Bien que le modèle de coût utilisé par le niveau de compatibilité des bases de données 130 génère des gains de
performances pour de nombreuses charges de travail par rapport au niveau 120, pour certaines requêtes (en
fonction des données et des fonctions utilisées), les performances des plans de requête peuvent diminuer au
niveau 130.
S’applique à
SQL Server 2017 sur Windows (toutes les éditions)
SQL Server 2016 Service Pack 1
SQL Server Développeur 2016
SQL Server 2016 Enterprise
SQL Server 2016 Express
SQL Server 2016 Standard
SQL Server Web 2016
Utilisez la commande DBCC MEMORYSTATUS pour
surveiller l’utilisation de la mémoire SQL Server
13/08/2021 • 17 minutes to read
Cet article explique comment utiliser la commande DBCC MEMORYSTATUS pour surveiller l’utilisation de la
mémoire.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 907877
Résumé
Cet article traite de la sortie de la DBCC MEMORYSTATUS commande. Cette commande est fréquemment utilisée
pour résoudre Microsoft SQL Server problèmes de consommation de mémoire.
Cet article décrit les éléments de la sortie pour le Gestionnaire de mémoire, pour le résumé de l’utilisation de la
mémoire, pour les informations sur la mémoire agrégée, pour les informations de distribution de mémoire
tampon, pour les informations sur le pool de mémoire tampon et pour les informations de cache de procédure.
Il décrit également la sortie sur les objets mémoire globaux, sur les objets mémoire de requête, sur
l’optimisation et sur les courtiers de mémoire.
Introduction
La DBCC MEMORYSTATUS commande fournit un instantané de l’état actuel de la SQL Server. Vous pouvez utiliser la
sortie de cette commande pour résoudre les problèmes de consommation de mémoire dans SQL Server ou
pour résoudre des erreurs spécifiques de mémoire. (De nombreuses erreurs de mémoire inserrable impriment
automatiquement cette sortie dans le journal des erreurs.) Les services de support technique Microsoft peuvent
également vous demander d’exécuter cette commande au cours d’un incident de support spécifique si vous
rencontrez une erreur qui peut être associée à une condition de mémoire faible.
NOTE
L’Moniteur de performances (PerfMon) et le Gestionnaire des tâches ne sont pas correctement responsables de la
mémoire si la prise en charge des extensions de fenêtre d’adresse (AWE) est activée.
Cet article décrit certaines des données que vous pouvez obtenir à partir de la sortie de la DBCC MEMORYSTATUS
commande. Plusieurs sections de cet article incluent des détails d’implémentation propriétaires qui ne sont pas
expliqués ici. Les services de support technique Microsoft ne répondent à aucune question ou ne fournissent
pas plus d’informations sur la signification de compteurs spécifiques au-delà des informations fournies dans cet
article.
Plus d’informations
IMPORTANT
La commande est destinée à être un outil de diagnostic pour les services de support DBCC MEMORYSTATUS technique
Microsoft. Le format de la sortie et le niveau de détail fourni sont sujets à des changements entre les Service Packs et les
lancements de produits. La fonctionnalité que fournit la commande peut être remplacée par un DBCC MEMORYSTATUS
mécanisme différent dans les versions ultérieures du produit. Par conséquent, dans les versions ultérieures du produit,
cette commande peut ne plus fonctionner. Aucun avertissement supplémentaire n’est effectué avant que cette commande
ne soit modifiée ou supprimée. Par conséquent, les applications qui utilisent cette commande peuvent se rompre sans
avertissement.
La sortie de la DBCC MEMORYSTATUS commande a changé par rapport aux précédentes SQL Server. La sortie
contient maintenant plusieurs sections qui n’étaient pas disponibles dans les versions antérieures du produit.
Gestionnaire de mémoire
La première section de la sortie est le Gestionnaire de mémoire. Cette section indique la consommation globale
de mémoire par SQL Server.
Memory Manager KB
------------------------------ --------------------
VM Reserved 1761400
VM Committed 1663556
AWE Allocated 0
Reserved Memory 1024
Reserved Memory In Use 0
(5 row(s) affected)
NOTE
L’ID du nœud mémoire peut ne pas correspondre à l’ID du nœud matériel.
Memory node Id = 0 KB
------------------------------ --------------------
VM Reserved 1757304
VM Committed 1659612
AWE Allocated 0
MultiPage Allocator 10760
SinglePage Allocator 73832
(5 row(s) affected)
NOTE
Ces valeurs indiquent la mémoire allouée par les threads qui s’exécutent sur ce nœud NUMA. Ces valeurs ne sont pas la
mémoire locale du nœud NUMA.
NOTE
Les sommes des valeurs réservées de l’VM et des valeurs de mémoire réservées de l’VM sur tous les nodes mémoire
seront légèrement inférieures aux valeurs correspondantes qui sont signalées dans la section Gestionnaire de mémoire.
Mémoire agrégée
La section suivante contient les informations de mémoire agrégées pour chaque type d’employé et pour chaque
nœud NUMA. Pour un système NUMA, vous pouvez voir une sortie similaire à celle-ci.
NOTE
Le tableau suivant ne contient qu’une partie de la sortie.
MEMORYCLERK_SQLGENERAL (node 0) KB
---------------------------------------------------------------- --------------------
VM Reserved 0
VM Committed 0
AWE Allocated 0
SM Reserved 0
SM Commited 0
SinglePage Allocator 592
MultiPage Allocator 2160
(7 row(s) affected)
MEMORYCLERK_SQLGENERAL (node 1) KB
---------------------------------------------------------------- --------------------
VM Reserved 0
VM Committed 0
AWE Allocated 0
SM Reserved 0
SM Commited 0
SinglePage Allocator 136
MultiPage Allocator 0
(7 row(s) affected)
MEMORYCLERK_SQLGENERAL (Total) KB
---------------------------------------------------------------- --------------------
VM Reserved 0
VM Committed 0
AWE Allocated 0
SM Reserved 0
SM Commited 0
SinglePage Allocator 728
MultiPage Allocator 2160
(7 row(s) affected)
NOTE
Ces ID de nœud correspondent à la configuration du nœud NUMA de l’ordinateur qui exécute SQL Server. Les ID de
nœud incluent les nœuds NUMA logiciels possibles qui sont définis sur les nœuds NUMA matériels ou sur un système
SMP. Pour rechercher le mappage entre les ID de nœud et les processeurs pour chaque nœud, affichez l’ID d’événement
Information 17152. Cet événement est consigné dans le journal des applications dans l’Observateur d’événements
lorsque vous démarrez SQL Server.
Pour un système SMP, vous ne verrez qu’une seule section pour chaque type d’employé. Cette section est
similaire à la suivante.
MEMORYCLERK_SQLGENERAL (Total) KB
---------------------------------------------------------------- --------------------
VM Reserved 0
VM Committed 0
AWE Allocated 0
SM Reserved 0
SM Commited 0
SinglePage Allocator 768
MultiPage Allocator 2160
(7 row(s) affected)
select
type,
sum(virtual_memory_reserved_kb) as [VM Reserved],
sum(virtual_memory_committed_kb) as [VM Committed],
sum(awe_allocated_kb) as [AWE Allocated],
sum(shared_memory_reserved_kb) as [SM Reserved],
sum(shared_memory_committed_kb) as [SM Committed],
sum(multi_pages_kb) as [MultiPage Allocator],
sum(single_pages_kb) as [SinlgePage Allocator]
from
sys.dm_os_memory_clerks
group by type
(7 row(s) affected)
(8 row(s) affected)
(3 row(s) affected)
NOTE
En raison de la nature dynamique de ces informations, la correspondance peut ne pas être exacte. Vous pouvez
utiliser PerfMon pour surveiller l’objet SQL Server: Plan Cache et le DMV pour obtenir des informations détaillées
sur le type d’objets mis en cache, tels que les déclencheurs, les procédures et les objets
sys.dm_exec_cached_plans ad hoc.
TotalPages : cette valeur affiche les pages cumulatives dont vous devez avoir besoin pour stocker tous les
objets mis en cache dans le cache des procédures.
InUsePages : cette valeur affiche les pages du cache de procédures qui appartiennent aux procédures en
cours d’exécution. Ces pages ne peuvent pas être ignorées.
Grants 0
Waiting 0
Available (Buffers) 640
Maximum (Buffers) 640
Limit 640
(5 row(s) affected)
Si la taille et le coût d’une requête répondent à des seuils de mémoire de requête « petits », la requête est mise
dans une file d’attente de requêtes de petite taille. Ce comportement empêche les requêtes plus petites d’être
retardées derrière les requêtes plus volumineuses qui sont déjà dans la file d’attente.
Les éléments de cette section sont les suivants :
Octrois : cette valeur affiche les requêtes en cours d’exécution qui ont des octrois de mémoire.
En attente : cette valeur affiche les requêtes en attente d’octroi de mémoire.
Disponible : cette valeur affiche les mémoires tampons disponibles pour les requêtes à utiliser en tant
qu’espace de travail de hachage et espace de travail de tri. La valeur Disponible est régulièrement mise à jour.
Maximum : cette valeur indique le nombre total de mémoires tampons qui peuvent être données à toutes les
requêtes à utiliser comme espace de travail.
Limite : cette valeur indique la cible d’exécution de requête pour la file d’attente de requête de grande taille.
Cette valeur diffère de la valeur maximale (mémoires tampons), car la valeur maximale (mémoires tampons)
n’est pas mise à jour tant que la file d’attente n’a pas changé.
Requête suivante : cette valeur indique la taille de la demande de mémoire, dans les mémoires tampons,
pour la requête en attente suivante.
En attente : cette valeur indique la quantité de mémoire qui doit être disponible pour exécuter la requête à
laquelle la valeur Requête suivante fait référence. La valeur En attente est la valeur requête suivante
multipliée par un facteur d’espace d’en-tête. Cette valeur garantit effectivement qu’une quantité spécifique de
mémoire sera disponible lors de l’utilisation de la requête en attente suivante.
Coût : cette valeur indique le coût de la requête en attente suivante.
Délai d’attente : cette valeur indique le délai d’attente, en secondes, de la requête en attente suivante.
Temps d’attente : cette valeur indique le temps écoulé, en millisecondes, depuis que la requête en attente
suivante a été mise en file d’attente.
Dernière cible : cette valeur indique la limite de mémoire globale pour l’exécution des requêtes. Cette valeur
est la limite combinée pour la file d’attente de requêtes de grande taille et la file d’attente de requêtes de
petite taille.
Optimisation
La section suivante récapitule les utilisateurs qui tentent d’optimiser les requêtes en même temps.
Optimization Queue Value
------------------------------ --------------------
Overall Memory 156672000
Last Notification 1
Timeout 6
Early Termination Factor 5
(4 row(s) affected)
(6 row(s) affected)
(5 row(s) affected)
(5 row(s) affected)
Les requêtes sont envoyées au serveur pour compilation. Le processus de compilation inclut l’évaluation,
l’algèbre et l’optimisation. Les requêtes sont classées en fonction de la quantité de mémoire consommée par
chaque requête au cours du processus de compilation.
NOTE
Cette quantité n’inclut pas la mémoire requise pour exécuter la requête.
Lorsqu’une requête démarre, le nombre de requêtes qui peuvent être compilées n’est pas limité. À mesure que
la consommation de mémoire augmente et atteint un seuil, la requête doit transmettre une passerelle pour
continuer. Il existe une limite progressivement décroissante des requêtes compilées simultanément après
chaque passerelle. La taille de chaque passerelle dépend de la plateforme et de la charge. Les tailles de
passerelle sont choisies pour optimiser l’évolutivité et le débit.
Si la requête ne peut pas transmettre de passerelle, elle attend que la mémoire soit disponible. Sinon, la requête
retourne une erreur de délai d’délai (Erreur 8628). En outre, la requête peut ne pas acquérir de passerelle si
l’utilisateur annule la requête ou si un blocage est détecté. Si une requête passe plusieurs passerelles, la requête
ne libère pas les passerelles plus petites tant que le processus de compilation n’est pas terminé.
Ce comportement ne permet que quelques compilations intensives en mémoire en même temps. En outre, ce
comportement optimise le débit pour les requêtes plus petites.
Courtiers de mémoire
Les trois sections suivantes montrent des informations sur les courtiers de mémoire qui contrôlent la mémoire
mise en cache, la mémoire volée et la mémoire réservée. Les informations fournies par ces sections ne peuvent
être utilisées que pour les diagnostics internes. Par conséquent, ces informations ne sont pas détaillées ici.
MEMORYBROKER_FOR_CACHE Value
-------------------------------- --------------------
Allocations 1843
Rate 0
Target Allocations 1843
Future Allocations 0
Last Notification 1
(4 row(s) affected)
MEMORYBROKER_FOR_STEAL Value
-------------------------------- --------------------
Allocations 380
Rate 0
Target Allocations 1195
Future Allocations 0
Last Notification 1
(4 row(s) affected)
MEMORYBROKER_FOR_RESERVE Value
-------------------------------- --------------------
Allocations 0
Rate 0
Target Allocations 1195
Future Allocations 0
Last Notification 1
(4 row(s) affected)
S’applique à
SQL Server 2005 Developer Edition
SQL Server 2005 Enterprise Edition
SQL Server 2005 Enterprise X64 Edition
SQL Server 2005 Édition Standard
SQL Server 2005 Standard X64 Edition
SQL Server 2005 Workgroup Edition
Les fournisseurs de services en couches Winsock
peuvent entraîner des problèmes de stabilité du
réseau ou du serveur pour SQL Server
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque les fournisseurs de services en couches
(LSP) Winsock sont chargés dans SQL Server’espace d’adressame.
Version du produit d’origine : Microsoft SQL Server 2005, SQL Server 2008
Numéro de la ko d’origine : 2033448
Symptômes
Vous remarquez un arrêt ou un arrêt brusque de toutes les communications réseau entre SQL Server et les
applications clientes. Cela peut entraîner SQL Server de réponse et des défaillances de service. Vous pouvez
recevoir des exceptions dont les piles d’appels impliquent la manipulation des structures de données qui sont
conservées ou utilisées par les modules chargés dans l’espace d’adressage SQL Server de données. Ces
problèmes sont généralement suivis de messages d’erreur générés par SQL Server Scheduler, tels que les
erreurs 17883 et 17882.
Cause
Une DLL Winsock LSP peut être chargée dans les processus SQL Server et intercepter et surveiller les
communications réseau (y compris les paquets TDS) au niveau Winsock entre les applications clientes et les SQL
Server. Cela se produit lorsque les agents de surveillance du réseau sont installés sur un ordinateur exécutant
SQL Server et que cet ordinateur est choisi pour surveiller l’utilisation du réseau pour surveiller les compteurs
de performance par un fournisseur de services gérés.
Résolution
Exécutez la commande suivante à partir d’une invite de commandes pour connaître la liste de tous les LSP
Winsock installés sur l’ordinateur qui exécute SQL Server :
Exécutez la requête suivante pour savoir lequel de ces LSP installés est chargé dans SQL Server processus :
SELECT [name],[company],[file_version],[product_version]
FROM sys.dm_os_loaded_modules
WHERE company NOT LIKE 'Microsoft%' OR company is NULL
Si vous avez une exigence professionnelle d’utiliser ces fournisseurs, assurez-vous que les dernières mises à
jour sont installées pour ces fournisseurs. Si possible, évitez de surveiller SQL Server trafic lié et évitez de
charger ces modules dans SQL Server processus. Vous pouvez également exclure ce serveur du processus de
surveillance.
Plus d’informations
Architecture Winsock
Fournisseurs de services de transport
102 et syntaxe incorrecte sp_MS des erreurs lorsque
vous créez une réplication d’égal à égal dans SQL
Server
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous créez une composition d’égal à égal à
partir de SQL scripts dans Microsoft SQL Server.
Version du produit d’origine : SQL Server 2017, SQL Server 2016
Numéro de la ko d’origine : 4465517
Symptômes
Lorsque vous créez une composition d’égal à égal à partir de scripts SQL dans Microsoft SQL Server, l’agent de
distribution dans une réplication échoue et génère une syntaxe incorrecte proche des messages d’erreur.
Ces messages d’erreur apparaissent dans l’historique des opérations de l’agent SQL Server, dans un suivi du
profileur SQL ou dans un fichier de journalisation de l’agent généré à l’aide du paramètre -Output. Par exemple,
les messages d’erreur suivants sont générés en exécutant une procédure stockée pour la table de l’exemple de
base de données INSERT Production.product AdventureWorks2017 :
SQL Server Message d’erreur de l’agent
Messages d’erreur :
Syntaxe incorrecte près de « sp_MSins_ProductionProduct ». (Source : MSSQLServer, Numéro d’erreur : 102)
Obtenir de l’aide : http://help/102
Cause
Ce problème se produit lorsque vous ajoutez des articles à une composition pair à pair existante à l’aide de
Microsoft SQL Server Management Studio 17.x.x. Lorsque vous faites cela, la réplication génère un nom de
procédure stockée qui est préfixé à l’aide [dbo] du schéma. Pour ce faire, vous pouvez écrire un script pour la
composition dans la sp_addarticle commande, comme illustré dans l’exemple suivant.
En exécutant un script de réplication pour reconstruire l’environnement d’égal à égal, la logique pare un point («
. ») qui provoque une syntaxe CALL non valide, telle sp_addarticle que CALL [dbo][sp_MSins_ProductionProduct]
.
Résolution
Pour résoudre ce problème, procédez comme suit :
1. Scriptez toutes les publications d’égal à égal, comme indiqué dans la section Cause.
2. Pour supprimer le préfixe de schéma des appels de procédure stockée, recherchez dbo globalement le
ALL [dbo].[ texte. Ensuite, remplacez-le par ALL [ .
NOTE
Si vous créez un nouvel environnement d’égal à égal, la solution la plus rapide à ce problème peut consister à
abandonner la composition, à modifier le script, puis à créer à nouveau l’environnement d’égal à égal.
Si un ou deux tableaux seulement échouent, envisagez d’abandonner ces articles de la composition, de modifier le
script, puis de restaurer les articles dans la composition.
Les tables et les données déterminent l’option que vous devez choisir. Si les tables rompues représentent une
grande partie de la base de données et que les données incluent des modifications, nous vous recommandons
d’essayer de recréer l’environnement d’égal à égal via un nouveau processus de sauvegarde-restauration et
d’utiliser l’Assistant D’égal à égal pour recréer la topologie.
Syntaxe corrigée
Prévention
Lorsque vous ajoutez de nouveaux articles à une composition pair à pair existante, ouvrez la fenêtre Propriétés
de l’ar ticle et supprimez le préfixe de schéma avant d’enregistrer [dbo]. les modifications.
État
Microsoft a confirmé qu’il s’agit d’un problème dans les produits Microsoft répertoriés dans la version
d’origine du produit au début de cet article.
Erreur 1205 lors de la configuration de la réplication
transactionnelle
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre un problème qui se produit lorsque vous configurez la réplication
transactionnelle dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2674882
Symptômes
Prenons l’exemple du scénario suivant :
Vous configurez la réplication transactionnelle dans SQL Server.
La topologie de réplication transactionnelle se compose de plusieurs éditeurs.
Les éditeurs répliquent les données dans la même base de données abonnée.
Les agents de distribution s’exécutent en continu ou selon un calendrier fréquent. Par exemple, les agents de
distribution s’exécutent toutes les minutes.
Dans ce scénario, les agents de distribution peuvent être impliqués dans un scénario de blocage et peuvent être
sélectionnés en tant que victime du blocage. Lorsque ce problème se produit, vous pouvez recevoir un message
d’erreur semblable à ce qui suit :
Erreur 1205
La transaction (ID de processus %d) a été dans un blocage sur les ressources %*ls avec un autre processus
et a été choisie comme victime du blocage. Réexécutez la transaction.
Si vous activez l’indicateur de suivi 1222 pour rediriger les informations de blocage dans le journal d’erreurs
SQL Server, vous recevez un message d’erreur semblable à l’un des éléments suivants :
Cause
Ce problème se produit si l’estimation du nombre de lignes pour la MSreplication_subscriptions table système
de nombres est incorrecte. Si l’estimation du nombre de lignes est incorrecte, le moteur SQL Server base de
données peut utiliser une méthode incorrecte pour mettre à jour la base de données.
NOTE
En règle générale, l’estimation correcte du nombre de lignes est égale au nombre d’abonnements dans la base de
données. Si vous utilisez la fonctionnalité Subscription Flux, l’estimation du nombre de lignes est égale au nombre
d’abonnements multiplié par le nombre de flux configurés pour chaque abonnement.
Résolution
Pour résoudre ce problème, utilisez l’une des méthodes suivantes.
Méthode 1 : utiliser la DBCC UPDATEUSAGE commande
Pour résoudre ce problème, mettez à jour la valeur de nombre de lignes incorrecte. Pour ce faire, exécutez
la commande suivante :
NOTE
La commande détermine les valeurs correctes pour les lignes, les pages utilisées, les pages réservées, les pages
feuilles et les nombres de pages de données pour chaque DBCC UPDATEUSAGE partition d’un tableau. Si ces
valeurs sont correctes, la DBCC UPDATEUSAGE commande ne renvoie aucune donnée. Si des valeurs inexactes sont
trouvées et corrigées, renvoie les lignes et les DBCC UPDATEUSAGE colonnes qui sont mises à jour.
Plus d’informations
Lorsque le problème mentionné dans la section Symptômes se produit, l’estimation du nombre de lignes pour la
table système MSreplication_subscriptions peut être aussi élevée que 4 294 967 296 . Pour vérifier la valeur
rowcount, utilisez l’une des méthodes suivantes.
Méthode 1 : utiliser SQL Server Management Studio
Pour utiliser SQL Server Management Studio pour vérifier la valeur de nombre de lignes pour la
MSreplication_subscriptions table système, suivez les étapes suivantes :
1. Démarrez SQL Server Management Studio, puis connectez-vous à l’instance du serveur abonné.
2. Développez bases de données, puis développez la base de données abonnée.
3. Développez Tables, puis développez Tables système.
4. Cliquez avec le bouton droit sur dbo. MSreplication_subscriptions, puis sélectionnez
Propriétés.
5. Sélectionnez Stockage, puis vérifiez la valeur de nombre de lignes dans le champ Nombre de
lignes.
Méthode 2 : utiliser une instruction de requête
Pour vérifier la valeur rowcount de la table MSreplication_subscriptions système, exécutez la requête
suivante :
Références
Pour plus d’informations sur la détection et la fin des blocages, voir : Detecting and Ending Deadlocks
Pour plus d’informations sur l’instruction ALTER, voir : Transact-SQL statements
Pour plus d’informations sur la commande DBCC UPDATEUSAGE, voir : DBCC UPDATEUSAGE (Transact-SQL)
Messages d’erreur 20011 SQL Server l’échec de
l’Agent de lecture du journal de réplication
13/08/2021 • 5 minutes to read
Cet article décrit les étapes de résolution des problèmes qui peuvent aider à résoudre les problèmes qui se
produisent après l’échec de l’agent de lecture des journaux de réplication SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2892635
Symptômes
Lorsque l’agent de lecture du journal de réplication échoue Microsoft SQL Server, vous recevez un message
d’erreur semblable à celui-ci dans le journal SQL Server de réplication :
En outre, vous pouvez recevoir un ou plusieurs messages d’erreur semblables à ce qui suit :
18805/18836 LogReader n’a pas pu construire l’état de la commande répliquée : <Time stamp> 0,
code : 20011, texte : « Le processus n’a pas pu exécuter « sp_replcmds » sur ' <Server name> '.'.
<Time stamp> Le processus n’a pas pu exécuter « sp_replcmds » sur ' <Server name> '. <Time
stamp> Status: 0, code: 18836, text: 'Invalid Text Info Block for UpdateText: m_pHead->GetType() : 1,
m_TextDataType : 0, m_TextOpType : 3, ti:{RowsetId 7746362867712, {TextTimeStamp 480235880448,
{RowId {PageId 2680944, FileId 1}, SlotId 21 }} , coloffset -1, textInfoFlags 0x4, textSize 177, offset 177,
oldSize 0, newSize 0}.' <Time stamp> Status: 0, code: 18805, text: 'Logreader failed to construct
replicated command from LSN {00150725:00014316:009d}.'. <Time stamp> Status: 0, code: 22037,
text: 'The process could not execute 'sp_replcmds' on <Server name> '.'.
18805/18836 LogReader n’a pas pu construire l’état de la commande répliquée : <Time stamp> 0,
code : 20011, texte : « Le processus n’a pas pu exécuter « sp_replcmds » sur ' <Server name> '.'.
<Time stamp> Le processus n’a pas pu exécuter « sp_replcmds » sur ' <Server name> '. <Time
stamp> Repl Agent Status: 6 <Time stamp> Status: 0, code: 18805, text: 'The Log Reader Agent failed
to construct a replicated command from log sequence number (LSN) {00033a89:0000969c:000a}.
Back up the publication database and contact Customer Support Services.'. <Time stamp> Status: 0,
code: 22037, text: 'The process could not execute 'sp_replcmds' on <Server name> '.'.
Délai d’exécution de LogReader L’agent est en cours d’exécution. Utilisez le moniteur de réplication
pour afficher les détails de cette session d’agent. État de l’agent deplage : 3 Publisher : {call
sp_repldone ( 0x0000172a0002ac900001, 0x0000172a0002ac900001, 0, 0)} Publisher : {call
sp_replcmds (500, 0)} Status: 2, code: 0, text: 'The process could not execute 'sp_replcmds' on
<Publisher name> ''.'. Le processus n’a pas pu exécuter « sp_replcmds » sur ' <Publisher name> '.
État de l’agent deplage : 5 État : 2, code : 0, texte : « Expiration du délai d’expiration ». Déconnexion de
Publisher <Publisher name> ' L’agent a échoué avec l’état « Nouvelle tentative ». Essayez d’exécuter
l’agent ultérieurement.
<Time stamp>Assertion Status: 0, code: 20011, text: 'The process could not execute 'sp_replcmds' on
<Server name> '.'. <Time stamp> Le processus n’a pas pu exécuter « sp_replcmds » sur ' <Server
name> '. <Time stamp> Status: 0, code: 18773, text: 'Could not locate text information records for the
column « ClientPreferences », ID 30 during command construction.'. <Time stamp> Status: 0, code:
3624, text: 'A system assertion check has failed. Pour plus d SQL Server, consultez le journal des
erreurs. En règle générale, un échec d’assertion est dû à un bogue logiciel ou à une altération des
données. Pour vérifier l’altération de la base de données, envisagez d’exécutez DBCC CHECKDB. Si
vous avez accepté d’envoyer des vidages à Microsoft lors de l’installation, un mini-vidage sera envoyé
à Microsoft. Une mise à jour peut être disponible auprès de Microsoft dans le Dernier Service Pack ou
dans un QFE du support technique. '. <Time stamp> Status: 0, code: 22037, text: 'The process could
not execute 'sp_replcmds' on <Server name> '.'.
NOTE
Vous pouvez utiliser la page Comment utiliser DBCC pour afficher le contenu des pages de base de
données.
Le code 18805 vous donne un numéro de séquence de journal (LSN) qui peut fournir l’objet :
2. Convertissez les valeurs d’état au format binaire. Par exemple, pour une valeur d’état de 41, la valeur
binaire est 101001 et le cinquième bit à partir du côté droit, également appelé bit d’état, est sur. Si le bit
d’état est 1, il est déjà définie. Si le bit d’état est 0, il n’est pas définie. Par conséquent, vous devez exécuter
sp_changearticle pour configurer les commandes paramétrables. Pour modifier le bit d’état, exécutez la
commande suivante :
sp_changearticle 'ConstituentRequest_ETL_Trans', 'CRProfile', 'status', 'parameters'
NOTE
Par défaut, la valeur de ce paramètre est 1 800 secondes (30 minutes).
Définissez la valeur du paramètre QueryTimeout sur zéro (0) afin de désactiver le délai d’absence.
Réduisez la valeur du paramètre ReadBatchSize de l’agent de lecture de journaux.
Si l’assertion dans le journal des erreurs correspond aux problèmes de ces articles de la Base de connaissances,
installez le correctif approprié.
Résoudre l’erreur 20598 dans la réplication
transactionnelle
14/08/2021 • 3 minutes to read
Cet article explique comment résoudre l’erreur 20598 dans la réplication transactionnelle et fournit des
solutions de contournement pour le problème.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 3066750
NOTE
Vous pouvez obtenir le même numéro de séquence de transactions à partir du serveur distributeur à l’aide de la
requête suivante :
2. Extrayons les commandes qui m’indiquent le numéro de séquence de transactions sur le serveur
distributeur. Utilisez le numéro de séquence de transaction de l’étape 1 comme paramètre pour cette
commande :
3. À partir de la sortie de l’étape 2, identifiez la commande qui échoue à l’aide de l’ID de commande de
l’étape 1. Reportez-vous à command_id colonne dans le jeu de résultats.
4. Valider les informations de l’article sur l’éditeur. Utilisez l’ID d’article que vous obtenez à l’étape 2 et
vérifiez les détails de l’article que vous essayez de mettre à jour :
Solution de contournement
Pour contourner ce problème, utilisez les deux méthodes suivantes :
Insérez manuellement la ligne manquante à l’abonné. Cela peut permettre à l’agent de distribution de
réessayer la commande ayant échoué et de passer à la réplication.
NOTE
D’autres lignes sont manquantes et doivent être insérées manuellement au niveau de l’abonné en cas d’autres
échecs.
Indiquez à l’agent de distribution d’ignorer cette erreur et de continuer à répliquer le reste des
modifications. L’agent de distribution accepte le skiperrors paramètre. Vous pouvez utiliser ce
paramètre pour transmettre le code d’erreur 20598. Cela peut conserver la configuration de la réplication
intacte pendant que vous attendez une opportunité de synchroniser manuellement les lignes
manquantes.
NOTE
Vous devez évaluer attentivement les effets en aval de l’intégrité référence et les déclencheurs présents sur le
tableau affecté avant de continuer.
Cet article vous aide à résoudre le problème qui vous permet de ne pas attacher une base de données à base de
données à base de données ACTIVÉE à une instance de SQL Server 2016 ou SQL Server 2017 sur Windows.
Version du produit d’origine : SQL Server 2008 et les versions ultérieures
Numéro de la ko d’origine : 3200464
Symptômes
Vous détachez une base de données avec activée sur SQL Server 2014 ou une version antérieure et vous
l’attachez à Change Data Capture une instance SQL Server 2016 ou SQL Server 2017 sur Windows instance.
Dans ce cas, vous rencontrez l’erreur suivante lorsque vous exécutez la sp_cdc_enable_table procédure système
:
Commande
Message d’erreur
Résolution
Pour résoudre ce problème, exécutez une fois que vous avez attaché une base de données à une instance de
sp_cdc_vupgrade SQL Server 2016 ou SQL Server 2017 sur Windows qui a Change Data Capture été activée.
Cet article vous aide à contourner le problème qui se produit lorsque vous essayez d’afficher une composition
dans le Moniteur de réplication.
Version du produit d’origine : SQL Server 2008
Numéro de la ko d’origine : 2650553
Symptômes
Prenons l’exemple du scénario suivant :
Vous commencez Microsoft SQL Server 2008 Management Studio.
Vous démarrez le moniteur de réplication.
Vous développez un éditeur, puis sélectionnez une composition.
Dans ce scénario, vous pouvez recevoir un message d’erreur semblable à ce qui suit :
Une erreur s’est produite lors de la récupération des données de composition. Impossible de caser l’objet de
type « System.DBNull » pour taper « Microsoft.sqlserver.Replication.PublisherMonitor ».
Cause
Ce problème se produit si vous sélectionnez la composition avant que la liste des éditeurs soit remplie.
Solution de contournement
Pour contourner ce problème, attendez que la liste des éditeurs soit entièrement remplie avant de cliquer sur
une composition.
Plus d’informations
En règle générale, le problème mentionné dans la section Symptômes se produit lorsque de nombreux serveurs
sont répertoriés en tant qu’éditeurs. La liste des éditeurs peut également s’remplir lentement si les serveurs
sont occupés ou sur des connexions réseau lentes.
Références
Pour plus d’informations sur le moniteur de réplication, voir : Vue d’ensemble de l’interface du moniteur de
réplication
S’applique à
SQL Server 2008 Developer
SQL Server 2008 Enterprise
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server 2008 Standard
SQL Server Web 2008
Appliquer un correctif pour les SQL Server dans
une topologie de réplication
13/08/2021 • 2 minutes to read
Cet article explique comment appliquer un correctif pour les Microsoft SQL Server dans une topologie de
réplication.
Version du produit d’origine : SQL Server 2005 et les versions ultérieures
Numéro de la ko d’origine : 941232
NOTE
L’objectif du correctif détermine les serveurs sur lesquels vous appliquez le correctif.
Après avoir appliqué le correctif, vous de devez suivre des étapes supplémentaires pour résoudre complètement
le problème pour lequel vous appliquez le correctif. L’article de la Base de connaissances Microsoft qui décrit le
correctif logiciel décrit ces étapes supplémentaires.
Conditions requises
Dans une topologie de réplication, vous pouvez appliquer n’importe quel correctif SQL Server au distributeur
ou au Publisher. Toutefois, si plusieurs versions de SQL Server sont installées, vous devez également respecter
les conditions suivantes :
Après avoir appliqué le correctif, la version de SQL Server sur le distributeur doit être ultérieure ou
identique à la version de SQL Server sur le Publisher.
NOTE
Le distributeur est le même serveur que le Publisher.
Après avoir appliqué le correctif, la version de SQL Server sur le Publisher doit être antérieure ou
identique à la version de SQL Server sur le distributeur.
La SQL Server de version requise pour l’abonné après l’application d’un correctif dépend du type de
composition. Si vous avez un abonné en lecture seule à une composition transactionnelle, vous pouvez
appliquer n’importe quel correctif à l’abonné. Si vous avez un abonné à une composition de fusion, la version de
SQL Server sur l’abonné doit être antérieure ou identique à la version de SQL Server sur le Publisher une fois
que vous avez appliqué le correctif.
Lorsque vous utilisez la synchronisation Web pour répliquer vers l’une des destinations suivantes, vous devez
appliquer un correctif sur un serveur Web qui héberge les composants de réplication :
A SQL Server Subscriber
Une base SQL Server CE
Une base SQL Server Mobile Edition
Une base de données SQL Server Compact Edition
L’utilisation de rowguidcol dans la définition de filtre
n’est pas prise en charge dans la réplication de
fusion
12/08/2021 • 2 minutes to read
Cet article explique que l’utilisation dans la définition de filtre rowguidcol n’est pas prise en charge dans la
réplication de fusion.
Version du produit d’origine : SQL Server 2008 Enterprise, SQL Server 2008 R2 Enterprise, SQL Server 2005
Êdition Entreprise
Numéro de la ko d’origine : 2646528
Résumé
Lors de la conception d’une topologie de réplication, un filtre ne doit pas inclure et utilisé par la réplication
rowguidcol uniqueidentitifier pour identifier les lignes. Par défaut, SQL Server ajoute cette colonne lors de la
configuration de la réplication de fusion sur une table.
Plus d’informations
Pour suivre les modifications, la réplication de fusion (et la réplication transactionnelle avec les abonnements de
mise à jour en file d’attente) doivent être en mesure d’identifier de manière unique chaque ligne de chaque table
publiée.
Pour effectuer cette réplication de fusion, ajoute la colonne rowguid à chaque table, sauf si la table possède déjà
une colonne de type de données avec le jeu de propriétés (auquel cas cette colonne uniqueidentifier
ROWGUIDCOL est utilisée).
Si le tableau est supprimé de la composition, la colonne rowguid est supprimée ; si une colonne existante a été
utilisée pour le suivi, la colonne n’est pas supprimée. Un filtre ne doit pas inclure le rowguidcol filtre utilisé par
la réplication pour identifier les lignes. Lorsque la réplication est configurée, la fonction est fournie par défaut
pour la colonne rowguid ou la colonne utilisateur newsequentialid() avec rowguidcol .
Les clients peuvent fournir un guid pour chaque ligne si nécessaire, même si la valeur 00000000-0000-0000-
0000-00000000000000 ne doit pas être utilisée.
Échec du travail de capture DE LAS lors du
traitement des modifications d’une table avec un
type de données CLR système (géométrie,
géographie ou hierarchyid)
13/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème d’échec d’un travail de capture DE TYPE PRINCIPAL lorsque vous
traitez les modifications d’une table qui possède un type de données CLR système (géométrie, géographie ou
hierarchyid).
S’applique à : SQL Server
Numéro de la ko d’origine : 4538384
Symptômes
Prenons l’exemple du scénario suivant :
Vous activez la fonctionnalité CAPTURE (Change Data Capture) sur une table qui possède un type de données
CLR système, tel que la géométrie, la géographie ou hierarchyid .
Le travail de capture (analyse) SCANNE traite les modifications liées à d’autres tables. Le processus n’a pas
encore atteint la table qui possède le type de données CLR système.
Vous modifiez le langage de manipulation de données (DML) sur la table qui possède le type de données
CLR système. Ensuite, vous modifiez le langage de définition de données (DDL) dans le même tableau (par
exemple, vous ajoutez une colonne).
Dans ce scénario, lorsque le travail de capture PRINCIPAL commence à traiter la table qui possède le type de
données CLR système, il échoue et renvoie le message d’erreur suivant :
Msg 18805, Level 16, State 1, Procedure sp_replcmds, LineLineNumber[Batch Start LineNumber ]
Le Log-Scan n’a pas réussi à créer une commande répliquée à partir du numéro de séquence de journal
(LSN) {nnnnnnnn: nnnnnnnn: nnnn}. Back up the publication database and contact Customer Support
Services.
Msg 22859, Level 16, State 2, Procedure sp_replcmds, LineNumber [Batch Start LineNumber ]
Échec du processus d’analyse des journaux dans le traitement des enregistrements du journal. Reportez-
vous aux erreurs précédentes dans la session en cours pour identifier la cause et corriger les problèmes
associés.
Msg 3621, Level 16, State 6, Procedure sp_replcmds, LineNumber [Batch Start LineNumber ]
L’instruction a été terminée.
Msg 22864, Level 16, State 1, Procedure sp_MScdc_capture_job, Line LineNumber[Batch Start LineNumber ]
L’appel à sp_MScdc_capture_job par le travail de capture pour la base de données « DatabaseName » a
échoué. Recherchez les erreurs précédentes pour la cause de l’échec.
En outre, l’entrée suivante peut être consignée dans le journal des erreurs :
Erreur : 913, Gravité : 16, État : 16. IDID de base de données in trouvable. Il est possible que la base de
données ne soit pas encore activée ou qu’elle soit en transition. Reissue la requête une fois que la base de
données est disponible. Si vous ne pensez pas que cette erreur est due à une base de données en cours de
transition et que cette erreur continue de se produire.
Plus d’informations
Ce problème ne se produit pas si le travail de capture DE LASC traite initialement uniquement le DML, puis traite
la modification DDL lors de l’étape suivante.
Solution de contournement
Pour contourner ce problème, essayez l’une des méthodes suivantes :
Évitez d’utiliser les types de données problématiques (géométrie, géographie, hierarchyid) avec LASO.
Assurez-vous que vous n’avez aucune modification DML en cours lorsque vous a apporté des
modifications DDL sur les tables qui ont des types de données g eometry, geography ou hierarchyid .
Pour éviter ce problème, suivez les étapes suivantes :
1. Quiesce all DML to the table.
2. Exécutez un travail de capture pour traiter les modifications.
3. Exécutez DDL pour la table.
4. Exécutez un travail de capture pour traiter les modifications DDL.
5. Ré-activez le traitement DML.
NOTE
Si vous continuez à faire l’expérience de ce problème, désactivez puis réactivez LA FONCTIONSO sur la table.
SQL Le journal des transactions augmente lorsque
vous utilisez la capture de données de modification
pour Oracle par Attunity
14/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème dans lequel vous remarquez une croissance continue des journaux
de transactions pour une base de données ACTIVÉE.
Version du produit d’origine : SQL Server 2012 et les versions ultérieures
Numéro de la ko d’origine : 2871474
Symptômes
Prenons l’exemple du scénario suivant :
Vous utilisez Microsoft SQL Server 2017 sur Windows, SQL Server 2016, 2014 ou 2012 Modifier la capture
de données pour Oracle par Attunity.
Vous créez une instance CAS pour capturer les modifications des tables de base de données Oracle.
Les valeurs de capture des changements sont stockées dans SQL Server de capture des changements.
Le journal des transactions de la base SQL Server de données s’agrandit et les transactions ne sont pas
marquées pour troncation lorsque les modifications de données sont capturées.
Dans ce scénario, la croissance SQL Server fichier journal des transactions de la base de données s’accumulent
et consomment trop d’espace disque au fil du temps.
Cause
Lorsque la capture des données de modification pour les instances Oracle est configurée, la base de données
SQL qui reçoit les données de modification aura des tables en miroir, avec des transactions marquées pour la
réplication. Ce comportement est dû au fait que LA FONCTION DNS pour Oracle s’appuie sur des procédures
stockées système sous-jacentes qui ressemblent à celles utilisées dans LA fonction SQL SERVER. Toutefois, étant
donné qu’aucune réplication SQL NE peut être impliquée lorsque la réplication DUPLICATION pour Oracle est
utilisée seule, il n’existe aucun lecteur de journal pour effacer les transactions qui sont marquées pour la
réplication. Étant donné que la transaction n’a pas besoin d’être répliquée dans SQL Server, il est possible de
marquer manuellement la transaction comme distribuée à l’aide de la solution de contournement décrite plus
loin dans cet article.
Pour vérifier cette cause exacte, exécutez la commande lorsque vous êtes connecté à la DBCC OPENTRAN base de
données SQL SERVER LA BASE de données PRINCIPALE. Vous verrez un numéro de téléphone LSN non
distribué, comme illustré dans l’exemple suivant :
Vous avez peut-être un LSN non distribué, car LASO pour Oracle utilise LA méthode SQL pour les procédures
stockées et qui, à son tour, utilise le lecteur du journal de réplication. Ce LSN non distribué correspond aux
entrées du journal pour ajouter la table mise en miroir dans la base de données ATTUNity MIRROR.
Si vous exécutez cette requête, log_reuse_wait_desc l’option renvoie une valeur de , indiquant la REPLICATION
cause. Sélectionnez log_reuse_wait_desc le nom dans , où le nom est <your_cdc_database> sys.databases :
REPLICATION <your_cdc_database>
Résolution
1. Exécutez la commande suivante dans une fenêtre de requête qui est connectée à la base de données
activée pour LA CONNEXION dans SQL Server :
exec sp_repltrans
3. Exécutez la commande suivante pour vérifier que la transaction est marquée comme répliquée dans la
base de données PRINCIPALE :
DBCC OPENTRAN
4. Pour vous assurer que le journal des transactions peut être réutilisé, confirmez qu’aucune autre raison de
réutilisation n’est indiquée sur la base de données :
log_reuse_wait_desc name
NOTHING your_cdc_database
5. Vous devez maintenant être en mesure de tronqué le journal des transactions à l’aide de sauvegardes de
journaux. Vous devez également être en mesure de réduire le fichier journal des transactions pour
réduire l’espace disque qui est consommé. Par exemple, exécutez la commande suivante :
BACKUP LOG your_cdc_database TO DISK='c:\folder\logbackup.trn'
DBCC SHRINKFILE (yourcdcdatabase_log, 1024)
Pour plus d’informations, voir Gérer la taille du fichier journal des transactions.
Plus d’informations
Pour plus d’informations, voir Résoudre les erreurs d’instanceSUPdans la capture des données de modification
Microsoft pour Oracle par Attunity.
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.
Lignes de touches dupliquées à partir sys.systableau
de validation dans SQL Server
13/08/2021 • 4 minutes to read
Cet article fournit des informations sur la résolution d SQL Server problème de suivi des changements qui peut
entraîner des doublons de lignes dans le sys.syscommittab fichier.
Version du produit d’origine : SQL Server 2008 et les versions ultérieures
Numéro de la ko d’origine : 3083381
Symptômes
Lorsque vous comparez le fichier en mémoire et le fichier sur disque dans Microsoft SQL Server, vous pouvez
voir des lignes de clé SYSCOMMITTABLE sys.syscommittab en double. Ces valeurs en double peuvent entraîner
l’échec des opérations de sauvegarde et de point de contrôle.
« Impossible d’insérer une ligne de clé en double dans l’objet « sys.sysvalidation » avec un index unique «
si_xdes_id ». La valeur de clé en double est (KeyValue).
Erreur : 3999, Gravité : 17, État : 1.
Échec du purgement de la table de validation sur le disque dans dbidDatabaseID en raison de l’erreur 2601.
Pour plus d’informations, consultez lelog des erreurs. »
Cause
Ce problème se produit en raison d’un problème connu dans SQL Server suivi des changements.
Si vous exécutez SQL Server 2014, vous devez accorder au SID par service un contrôle total sur les
mssqlsystemresource.ldf fichiers et les mssqlsystemresource.mdf fichiers. Pour cela, procédez comme suit :
2. Ouvrez les propriétés mssqlsystemresource.ldf pour mssqlsystemresource.mdf et, puis cliquez sur
l’onglet Sécurité.
3. Recherchez le SID SQL Server service par service et notez les autorisations par défaut :
*Read & execute
*Read
4. Accordez au SQL Server un contrôle total du SID par service, puis fermez les boîtes de dialogue
d’autorisations.
5. Démarrez SQL Server en mode Single-User'écran de démarrage. Pour plus d’informations, voir Démarrer
SQL Server en mode Single-User.
6. Utilisez une sqlcmd ligne de commande pour vous connecter à SQL Server sous le DAC (Dedicated
Administrator Connection). Par exemple :
Script transact-SQL
/*
Create a temporary database to store the necessary rows
required to remove the duplicate data
*/
if exists(select 1 from sys.databases where name = 'dbChangeTrackingMetadata')
begin
drop database dbChangeTrackingMetadata
end
go
create database dbChangeTrackingMetadata
go
--Copy all rows from the SYSCOMMITTABLE into the temporary database
insert into dbChangeTrackingMetadata.dbo.t_SYSCOMMITTABLE
SELECT commit_ts, xdes_id, commit_lbn, commit_csn, commit_time
FROM OpenRowset (table SYSCOMMITTABLE, db_id (), 0, 0)
Cet article vous aide à contourner le problème lorsque vous exécutez l’agent de distribution dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 956032
Symptômes
Sur une instance de Microsoft SQL Server installée sur un ordinateur Windows Server, vous configurez une
composition transactionnelle. Vous utilisez le Distribution Profile for OLEDB streaming profil de l’agent de
distribution. Lorsque vous exécutez l’agent de distribution, vous recevez un message d’erreur comme suit :
L’agent de distribution n’a pas réussi à créer des fichiers temporaires dans le répertoire C:\Program
Files\Microsoft SQL Server \ <nnn> \COM. Code d’erreur 5 renvoyé par le système.
NOTE
<nnn>identifie la version de SQL Server. Pour plus d’informations, voir File Locations for Default and Named Instances of
SQL Server.
Cause
Lorsque vous utilisez le profil pour l’agent de distribution ou que vous utilisez la diffusion en continu OLEDB
dans un profil personnalisé, l’agent de distribution crée des fichiers temporaires dans le
Distribution Profile for OLEDB streaming répertoire suivant :
Si le compte qui exécute SQL Server Agent n’a pas d’accès en écriture au dossier COM, l’agent de distribution
échoue lorsqu’il est en cours d’exécution en tant que travail. Si vous exécutez l’agent de distribution à partir
d’une ligne de commande à l’aide d’un compte qui n’a pas accès en écriture au dossier COM, le même échec se
produit.
Solution de contournement
Pour contourner ce problème, accordez des autorisations d’écriture au dossier COM pour le compte qui exécute
le service SQL Server Agent. Si vous exécutez l’agent de distribution à partir d’une ligne de commande, accordez
des autorisations d’écriture au dossier COM pour le compte que vous utilisez pour exécuter l’agent de
distribution.
NOTE
Si vous modifiez le compte affecté au travail de réplication, le compte doit avoir des autorisations d’écriture sur le dossier
COM.
Si vous rencontrez toujours ce problème par intermittence après avoir suivi ces étapes, vous devez vous assurer
que le dossier COM est exclu de toute analyse antivirus qui se produit sur le système.
Plus d’informations
Le code d’erreur 5 indique que l’erreur est « l’accès est refusé ».
Erreur lors de l’éumation des propriétés
d’abonnement SQL Server 2016 ou 2017
13/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème qui se produit lorsque vous essayez d’éumer les propriétés de
l’abonnement sur une instance d’abonné dans SQL Server Management Studio.
Version du produit d’origine : SQL Server 2017, SQL Server 2016
Numéro de la ko d’origine : 4046801
Symptômes
Prenons l’exemple du scénario suivant :
Vous avez configuré une instance de Microsoft SQL Server 2016 ou 2017 en tant qu’éditeur et
distributeur.
Vous avez configuré un abonnement Push ou Pull à un abonné distant qui n’est pas configuré en tant
qu’éditeur ou distributeur.
Dans ce cas, si vous essayez d’éumer les propriétés de l’abonnement sur une instance d’abonné dans SQL
Server Management Studio, vous recevez un message d’erreur semblable à ce qui suit :
Impossible d’appliquer la valeur « null » à la propriété ServerInstance : la valeur ne peut pas être null.
Solution de contournement
Pour contourner ce problème, utilisez le moniteur de réplication pour l’état et la progression de l’abonnement.
S’applique à
SQL Server 2017 sur Linux (toutes éditions)
SQL Server 2017 sur Windows (toutes les éditions)
SQL Server 2016 Enterprise Core
SQL Server 2016 Standard
SQL Server Développeur 2016
SQL Server 2016 Enterprise
SQL Server 2016 Business Intelligence
SQL Server Web 2016
SQL Server 2016 Express
Appliquer un correctif pour les SQL Server dans
une topologie de mise en miroir de bases de
données et de réplication transactionnelle
13/08/2021 • 4 minutes to read
Introduction
Cet article contient les étapes à suivre pour installer des Service Packs et des correctifs logiciels sur une instance
de Microsoft SQL Server avec les caractéristiques suivantes :
L’instance de SQL Server possède une ou plusieurs bases de données qui participent à la fois à une mise en
miroir de bases de données et à une topologie de réplication transactionnelle.
La base de données participe en tant qu’éditeur, distributeur ou abonné.
NOTE
La base de données de distribution ne peut pas être mise en miroir. Toutefois, il peut co-exister avec la base de données
principale/d’éditeur ou avec le témoin de mise en miroir de base de données.
Plus d’informations
Les étapes à suivre pour appliquer des correctifs à une SQL Server qui participe à une mise en miroir de base de
données ou à une réplication transactionnelle sont documentées dans les rubriques suivantes dans SQL Server
documents :
Mise à niveau ou correction des bases de données répliquées
Mise à niveau des instances mises en miroir
Dans un environnement où une SQL Server est configurée pour participer à la mise en miroir de bases de
données et à la topologie de réplication transactionnelle, si le témoin et le distributeur se trouve sur la même
instance de serveur, les étapes d’installation sont les suivantes :
1. Miroir
2. Témoin/distributeur
3. Principal/éditeur
4. Le(s) abonné(s)
Si le témoin et le distributeur ne sont pas sur le même serveur, les étapes d’installation sont les suivantes :
1. Miroir
2. Témoin
3. Distributeur
4. Principal/éditeur
5. Le(s) abonné(s)
Procedure
1. Si un serveur témoin se trouve dans la session de mise en miroir de bases de données, vous devez
désactiver la fonctionnalité deover automatique pendant le processus de mise à jour. Pour ce faire,
supprimez le serveur témoin de la session de mise en miroir de base de données. Si le serveur n’est pas
un serveur partenaire de certaines autres sessions de mise en miroir de bases de données, suivez ces
étapes pour désactiver le changement automatique sur le serveur témoin :
Utilisez l’instruction Transact-SQL pour désactiver le point de terminaison de mise en miroir
ALTER ENDPOINT de base de données.
Pour plus d’informations, voir Remove the Witness from a Database Mirroring Session (SQL
Server).
Effectuez une sauvegarde complète de la base de données principale/publisher, puis exécutez
DBCC CHECKDB la commande sur la base de données principale.
NOTE
Cette étape est facultative, mais elle est recommandée. Cette étape va entraver l’activité de production. Par
conséquent, vous devez planifier une fenêtre de maintenance pour cette étape.
2. Installez le Service Pack ou le correctif logiciel sur le serveur miroir. N’oubliez pas que vous de devez
mettre à jour plusieurs serveurs à ce stade.
3. Installez le Service Pack ou le correctif logiciel sur le serveur témoin.
4. Installez le Service Pack ou le correctif logiciel sur le distributeur. Si le distributeur se trouve sur la même
instance de serveur que le témoin, ces rôles serveur seront mis à jour en même temps.
NOTE
La réplication est temporairement suspendue pendant l’application de la mise à jour. Les transactions restent dans
le journal des transactions de l’éditeur pendant la mise à jour, puis sont répliquées dès que le service SQL est
redémarré sur le distributeur.
NOTE
Cette étape est facultative, mais recommandée.
NOTE
Le nouveau serveur miroir est identique au serveur principal/éditeur d’origine. N’oubliez pas que vous de devez
mettre à jour plusieurs serveurs à ce stade.
NOTE
Lorsque vous annulerez les modifications que vous avez apportées à l’étape 1, le serveur témoin est de nouveau
ajouté à la session de mise en miroir de base de données.
11. Installez le Service Pack ou le correctif logiciel sur les abonnés. Au cours de ce processus, la réplication du
distributeur vers les abonnés sera temporairement suspendue et les transactions seront mise en file
d’attente dans la base de données de distribution. Si l’abonné est mis en miroir et qu’un autre serveur
témoin est utilisé, suivez les étapes 1 à 3 pour mettre à jour d’abord le serveur miroir, suivi du témoin.
Un SQL Server logique métier personnalisé
remplace une chaîne vide par un caractère de fin de
chaîne
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez un handler de logique métier
personnalisé dans SQL Server.
Version du produit d’origine : SQL Server 2008 Standard, SQL Server 2008 Enterprise, SQL Server 2008 R2
Standard, SQL Server 2008 R2 Enterprise, SQL Server 2008 R2 Datacenter, SQL Server 2012 Standard, SQL
Server 2012 Enterprise, SQL Server 2012 Developer
Numéro de la ko d’origine : 2598605
Symptômes
Prenons l’exemple du scénario suivant :
Vous configurez la réplication de fusion dans Microsoft SQL Server 2012, Microsoft SQL Server 2008 R2 ou
Microsoft SQL Server 2008.
La composition contient un article de tableau.
L’article du tableau contient une colonne de type de varchar données.
La varchar colonne contient une chaîne vide ('').
NOTE
Ce problème ne se produit pas avec une valeur NULL ou une valeur d’espace unique (' ').
Vous configurez l’article du tableau pour utiliser un handler de logique métier personnalisé.
Le handler de logique métier personnalisé gère les événements qui se produisent lors de la synchronisation
de la réplication de fusion.
Le handler de logique métier personnalisé utilise un jeu de données personnalisé pour renvoyer la ligne.
Dans ce scénario, bien qu’aucune erreur ne soit renvoyée, le handler de logique métier personnalisé remplace la
chaîne vide par un seul end-of-string caractère. Par exemple, le responsable de la logique métier personnalisée
remplace la chaîne vide par l’une des chaînes suivantes :
'ASC0'
'0x00'
« \0 » Aucune autre donnée n’est affectée.
Cause
Ce problème se produit en raison de la façon dont les composants de l’agent de fusion et le handler de logique
métier passent des données dans et hors des variables intermédiaires.
Solution de contournement
Vous pourrez peut-être contourner ce problème en utilisant le type de données au lieu nvarchar du varchar
type de données.
Plus d’informations
Le problème décrit dans la section Symptômes peut se produire si le handler de logique métier personnalisé
gère les instructions conflictuelles au niveau de l’éditeur et UPDATE de l’abonné. La chaîne vide est remplacée
par le caractère unique après la copie du jeu de données de l’éditeur ou de l’abonné dans le jeu de données
personnalisé, puis le jeu de données personnalisé est ensuite transmis au rapprochementur de réplication de
end-of-string fusion.
En outre, ce problème se produit si les données ne sont pas modifiées dans du code personnalisé semblable à ce
qui suit :
Cet article explique comment supprimer manuellement la réplication dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 324401
Résumé
Cet article explique comment supprimer une réplication d’un ordinateur qui exécute Microsoft SQL Server. Pour
supprimer une réplication, vous devez supprimer les abonnements, les publications et le distributeur configuré
pour la réplication. Vous pouvez supprimer la réplication en exécutant le script Transact-SQL généré par le
gestionnaire SQL Server Entreprise ou SQL Server Management Studio. Toutefois, si vous ne pouvez pas
générer le script Transact-SQL pour supprimer la réplication, vous pouvez supprimer manuellement la
réplication à l’aide de procédures stockées système et d’autres instructions Transact-SQL. Cet article contient des
informations sur les procédures stockées système qui peuvent être utilisées dans ce processus.
NOTE
Pour plus d’informations sur les procédures stockées système mentionnées dans cet article, voir SQL Server Books Online.
NOTE
Les procédures stockées système pour chaque type de réplication sont répertoriées plus loin dans cet article. Utilisez les
procédures stockées appropriées, selon le type de réplication que vous souhaitez supprimer.
Pour déposer un abonnement de capture instantanée à tous les articles d’une composition de capture
instantanée, suivez les étapes suivantes :
1. Exécutez le script SQL suivant dans l’abonné :
Pour abandonner un abonnement pull à tous les articles d’une composition transactionnelle, suivez les étapes
suivantes :
1. Exécutez le script suivant sur l’abonné :
USE < **Subscription database name** >
GO
EXEC sp_droppullsubscription @publisher = N'<Publisher server name>', @publisher_db = N'<Publisher
database name>', @publication = N'<Publication name>'
USE master
GO
exec sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value =
N'false'
USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'publish', @value =
N'false'
USE master
GO
EXEC sp_replicationdboption @dbname = N'<Publication database name>', @optname = N'merge publish', @value =
N'false'
Déposer le distributeur
Une fois que vous avez publié tous les abonnements et toutes les publications, vous pouvez abandonner le
distributeur approprié. Toutefois, avant de déposer le distributeur, vous devez abandonner la désignation
d’abonné Publisher. Pour ce faire, utilisez les procédures stockées suivantes :
sp_dropsubscriber : vous pouvez utiliser la procédure stockée système pour abandonner la désignation
d’abonné sp_dropsubscriber à partir d’un serveur enregistré. La procédure stockée supprime l’entrée de
Registre de l’abonné. La procédure stockée est Publisher sur la base de données de composition.
sp_dropdistributor : vous pouvez utiliser la sp_dropdistributor procédure stockée système pour
supprimer le distributeur. La procédure stockée est exécuté au distributeur. Pour abandonner la
désignation d’abonné Publisher, exécutez le script suivant à l’Publisher :
USE master
GO
EXEC sp_dropsubscriber @subscriber = N'<Subscriber server name>', @reserved = N'drop_subscriptions'
sp_droparticle : vous pouvez utiliser la procédure stockée système pour déposer un article d’une
composition instantanée ou sp_droparticle de la composition transactionnelle. Vous ne pouvez pas
supprimer un article si un ou plusieurs abonnements à l’article publié existent toujours. Vous devez
exécuter la procédure stockée à l’Publisher sur la base de données de composition. Voici la syntaxe de
cette procédure stockée :
Références
Pour plus d’informations, voir les rubriques suivantes dans SQL Server Books Online :
Désactiver la publication et la distribution
Supprimer une composition
Supprimer un abonnement Push
Supprimer un abonnement Pull
La réplication de fusion ne prend pas en charge les
topologies d’abonné centralisées
12/08/2021 • 6 minutes to read
Cet article vous aide à contourner le problème que la réplication de fusion ne prend pas en charge les
topologies d’abonné centralisées.
Version du produit d’origine : SQL Server 2012, SQL Server 2008, SQL Server 2005
Numéro de la ko d’origine : 2750005
Résumé
La réplication de fusion ne prend pas en charge les topologies d’abonné centralisées. Une base de données
d’abonné à fusion unique ne peut s’abonner qu’à une seule composition de fusion. Par conséquent, tout type de
topologie d’abonné centralisée n’est pas pris en charge dans la réplication de fusion.
NOTE
Cette limitation s’applique à toutes les versions actuellement SQL serveur, mais ne s’applique pas Microsoft SQL Server
Compact abonnés.
Solution de contournement
Pour contourner ce problème, envisagez les alternatives suivantes à l’utilisation d’une topologie d’abonné
centrale et de la réplication de fusion :
Implémenter une composition de fusion centrale unique avec des filtres de ligne paramétisés dans lesquels
les partitions de données fournissent les données pour les bases de données d’abonné individuelles.
Utiliser la réplication transactionnelle au lieu de la réplication de fusion pour implémenter la topologie
d’abonné centrale
NOTE
Pour plus d’informations sur la façon d’implémenter des topologies d’abonné centralisées et d’intégrer des données à
partir de plusieurs sites, voir la section Références.
Plus d’informations
Dans un modèle d’abonné central, la base de données d’abonnés se synchronise avec au moins deux sources de
publication. Dans ce scénario, les sources de publication se composent de l’une des combinaisons suivantes :
Au moins deux publications dans la même base de données d’éditeurs sur la même instance de serveur de
publication.
Au moins deux publications dans deux bases de données d’éditeurs ou plus sur la même instance de serveur
de publication.
Au moins deux publications dans deux bases de données d’éditeurs ou plus sur différentes instances de
serveur de publication.
La réplication de fusion ne prend pas en charge le modèle d’abonné central. Les agents de fusion n’ont pas été
conçus ou testés pour fonctionner dans ce scénario. La seule topologie prise en charge est la topologie dans
laquelle chaque base de données d’abonnés se synchronise avec une seule composition de fusion. Vous devez
tenir compte des éléments suivants :
NOTE
Cela s’applique à toutes les versions de Microsoft SQL Server.
Les métadonnées de réplication de fusion d’une base de données d’abonné sont stockées dans un ensemble
unique de tables de métadonnées. Si plusieurs abonnements sont créés dans la même base de données, les
métadonnées de tous les abonnements sont stockées dans le même ensemble de tables système.
Les métadonnées de réplication sont partagées par plusieurs agents de fusion.
Les agents de fusion synchronisent les informations de publication et d’abonnement entre leurs partenaires
de synchronisation configurés. Par conséquent, chaque synchronisation télécharge également des
métadonnées non liées de la base de données d’abonné vers la base de données de l’éditeur. Des
synchronisations supplémentaires distribuent ensuite ces métadonnées à d’autres nodes non liés dans la
topologie.
Lorsque les agents de fusion synchronisent leurs abonnements en même temps en parallèle. l’interaction
entre les agents de fusion peut affecter la façon dont les modifications sont gérées. Par exemple, le
regroupement des générations par lots pendant la phase de chargement individuelle de chaque
synchronisation peut être affecté.
Vous pouvez avoir des problèmes si vous implémentez un modèle d’abonné de fusion centrale. Voici quelques
exemples des problèmes que vous pouvez avoir à résoudre lorsque vous implémentez un modèle d’abonné de
fusion centrale :
La cohérence des métadonnées de réplication de fusion est compromise après l’abandon d’une
composition, puis sa re-création sur le même serveur d’éditeur et la même base de données qui ont le
même nom. Dans ce scénario, il se peut que les agents de fusion ne se synchronisent pas ultérieurement.
Par exemple, vous pouvez recevoir un ou plusieurs des messages d’erreur suivants :
Impossible d’insérer une ligne de clé en double dans un dbo.sysmergepartitioninfo objet avec
un index uc1sysmergepartitioninfo unique.
La cohérence des métadonnées de réplication de fusion peut être compromise après l’abandon d’un
abonnement, puis sa re-création dans la base de données d’abonné centrale.
La cohérence des métadonnées de réplication de fusion peut être compromise si les abonnements dans
la base de données d’abonnés centrale sont configurés pour utiliser des valeurs différentes pour leurs
filtres de ligne paramétrables. Cela inclut l’utilisation de valeurs différentes pour le paramètre host_name
dans différents abonnements. En outre, nous pensons que le mélange de filtres host_name et
suser_sname contribue à ce problème.
Des conflits inattendus pendant la résolution des conflits peuvent entraîner une perte potentielle de
données. Ce problème peut se produire lorsque les agents de fusion s’exécutent en parallèle sur l’abonné
central.
Un blocage étendu se produit si les agents de fusion s’exécutent en parallèle. Ce problème peut se
produire au début de la phase de téléchargement ou de la synchronisation. Ce problème peut également
se produire lors de la lecture ou de l’écriture des données de modification. Ce problème de performances
peut se répercuter en cascade dans la topologie, en fonction des objets impliqués dans le blocage.
NOTE
Ces problèmes peuvent ne pas se produire immédiatement après la configuration ou la changement de la topologie. Ces
problèmes peuvent se produire de manière inattendue et intermittente ultérieurement. L’étendue des problèmes peut
dépendre du minutage des événements. Par exemple, lorsque des agents de fusion individuels se synchronisent les uns
par rapport aux autres, la gravité du problème peut être affectée par l’événement à l’origine du problème et par la
quantité de données téléchargées ou téléchargées.
Références
Pour plus d’informations sur l’intégration des données de plusieurs sites dans Microsoft SQL Server
2008 R2, voir : Integrating Data from Multiple Sites (Client)
Pour plus d’informations sur l’intégration de données à partir de plusieurs sites dans Microsoft SQL
Server 2008, voir : Integrating Data from Multiple Sites (Client)
Pour plus d’informations sur l’intégration de données à partir de plusieurs sites dans Microsoft SQL
Server 2005, voir : Integrating Data from Multiple Sites (Client)
Pour plus d’informations sur la publication des données et des objets de base de données dans SQL
Server 2012, voir le site web MSDN suivant.
NOTE
Reportez-vous à la rubrique Tableaux de publication de plusieurs publications de cet article. Publier des
données et des objets de base de données
Pour plus d’informations sur la publication des données et des objets de base de données dans SQL
Server 2008 R2, voir le site web MSDN suivant :
NOTE
Reportez-vous à la rubrique Tableaux de publication de plusieurs publications de cet article. Publication de
données et d’objets de base de données
Pour plus d’informations sur la publication des données et des objets de base de données dans SQL
Server 2008, voir le site web MSDN suivant :
NOTE
Reportez-vous à la rubrique Tableaux de publication de plusieurs publications de cet article. Publication de
données et d’objets de base de données
Pour plus d’informations sur la publication des données et des objets de base de données dans SQL
Server 2005, voir le site web MSDN suivant :
NOTE
Reportez-vous à la rubrique Tableaux de publication de plusieurs publications de cet article. Publication de
données et d’objets de base de données
Non-convergence lorsque SQL Server générations
enfants et parents dans des lots de génération
distincts
13/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème de non-convergence qui se produit lorsque SQL Server
générations enfants et parents dans des lots de génération distincts.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 308266
Symptômes
La perte de commandes INSERT dans les tables enfants d’un abonné peut se produire dans les conditions
suivantes :
La topologie de réplication de fusion est hiérarchique, avec un éditeur, un ou plusieurs republiers et un ou
plusieurs abonnés.
Un ou plusieurs articles parents et enfants existent dans une composition de réplication de fusion, avec un
filtre de jointage défini entre eux.
Il existe une contrainte de clé étrangère au niveau du republier et de l’abonné pour NOT FOR REPLICATION la
relation entre ces deux articles.
Les entrées INSERT dans un article enfant se produisent dans une génération distincte de la génération
parent associée par une valeur plus élevée que celle spécifiée dans le paramètre de
-DownloadGenerationsPerBatch l’agent de fusion. Ainsi, l’agent de fusion traite la génération enfant dans un lot
de générations distinctes de la génération parent associée.
Il existe une interruption du traitement de fusion entre l’éditeur et le republier et entre le traitement des lots
de génération enfant et parent.
Solution de contournement
L’architecture de réplication de fusion ne fournit pas de mécanisme permettant de maintenir les modifications
parent et enfant entre elles au-delà des limites de lot de génération. Pour contourner ce problème, vous pouvez :
Augmentez les paramètres de l’agent de fusion et de fusion à leur valeur maximale de
-UploadGenerationsPerBatch 2 000, ce qui élimine pratiquement la possibilité de traiter la génération d’un
article enfant dans un lot distinct de la génération de -DownloadGenerationsPerBatch l’article parent.
OU -
Supprimez la propriété sur les contraintes de clé NOT FOR REPLICATION étrangère au niveau de la
republier. Dans ce cas, l’agent de fusion n’est pas en mesure d’insérer des lignes dans l’article enfant, car il
n’existe aucune ligne d’article parent associée. N’oubliez pas, toutefois, qu’une dégradation des
performances peut être associée à cette modification. Si l’agent de fusion ne parvient pas à insérer ces
lignes enfants, ces modifications doivent être retentées. Le processus de nouvelle tentative de l’agent de
fusion est beaucoup moins efficace que son mode normal de traitement par lots.
Plus d’informations
Voici une séquence d’événements plus détaillée dans laquelle ce problème peut se produire. Les valeurs par
défaut des paramètres de l’agent de fusion et de fusion (qui sont fortement liées à ce problème) sont
-UploadGenerationsPerBatch -DownloadGenerationsPerBatch 100. Dans l’exemple suivant, supposons que les
paramètres et les -UploadGenerationsPerBatch -DownloadGenerationsPerBatch paramètres n’ont pas été modifiés.
INSERTs se produisent au niveau de l’éditeur de niveau supérieur dans un enfant et un article parent. Un
article enfant est tout article d’une composition qui a une contrainte de clé étrangère à une autre table,
appelée article parent. Ces deux articles sont liés par un filtre de jointeur de réplication de fusion et les
contraintes de clé étrangère côté serveur réelles au niveau de la republier et de l’abonné sont marquées avec
la propriété NOT FOR REPLICATION. Vous pouvez exécuter la sp_help stockée sur les tables pour déterminer
si les contraintes ne sont pas pour la réplication, si vous n’êtes pas sûr.
Les entrées INSERT dans la table enfant se produisent (par exemple) dans la génération 110. Les entrées
INSERT dans la table parente se produisent (par exemple) dans la génération 250. La séparation entre ces
générations est supérieure au -DownloadGenerationsPerBatch paramètre.
L’agent de fusion de republier d’éditeur traite le lot de générations qui contiennent les générations 101 à
200. Une fois le traitement de ce lot réussi et le téléchargement des modifications associées dans ces
générations vers le repudier, l’agent de fusion de republier d’éditeur est interrompu. L’interruption se produit
avant que l’agent de fusion puisse traiter les générations 201 à 300 (contenant les modifications apportées à
l’article parent). L’interruption peut être due à une perte de connectivité réseau, à un délai d’interruption de
requête, etc. L’agent de fusion peut valider les lignes de l’article enfant sans les lignes parentes, car la
contrainte de clé étrangère côté serveur est marquée comme NOT FOR REPLICATION, ce qui « suspend » la
vérification de la contrainte.
Avant que l’agent de fusion republier-éditeur recommence le traitement, l’agent de fusion de republisher-
abonné commence une session de fusion. Il commence le processus de téléchargement des modifications à
partir du republisher.
Lorsque l’agent de fusion de l’abonné à la republier traite la génération 110 (l’article enfant INSERTs), il
évalue le filtre de jointeur présent entre l’article enfant et l’article parent. Étant donné que les modifications
apportées à l’article parent n’ont pas encore été apportées au republier, l’agent de fusion détermine que ces
INSERT enfants ne « qualifient » pas le filtre de jointeur. L’agent de fusion télécharge la
MSmerge_genhistor y qui représente la génération 110, mais aucune des modifications apportées à cette
génération. Cet agent de fusion termine correctement sa session.
Une suite d’une série de l’agent de fusion entre l’éditeur et le republier traite avec succès le lot de
générations qui contiennent l’article parent INSERTs (générations 201 à 300) et valider ces modifications au
niveau de la publication.
Enfin, une session d’agent de fusion ultérieure entre le repudier et l’abonné considère la génération 250 et
télécharge l’article parent INSERTs à l’abonné. Toutefois, étant donné que l’abonné connaît également la
génération 110 (génération de l’article enfant), l’agent de fusion ne réévalue pas la partition de l’article
enfant.
Ainsi, les lignes parent-article correctes sont présentes à l’abonné avec des lignes orphaned enfants au niveau
de la republier.
Message d’erreur lorsque vous utilisez le service de
capture de données microsoft change pour Oracle
par Attunity
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez le service de capture de
données de modification pour Oracle par Attunity.
Version du produit d’origine : SQL Server 2012 Enterprise, SQL Server 2012 Developer
Numéro de la ko d’origine : 2672759
Symptômes
Le service de capture de données microsoft change pour Oracle par Attunity arrête la capture des données
pendant les périodes d’inactivité. Lorsque ce problème se produit, vous recevez le message suivant sous l’onglet
État dans la console de gestion Oracle Change Data Capture Designer :
En outre, vous recevez le message suivant lorsque vous essayez d’utiliser le lien Collecter les diagnostics pour
lire la table Xdbcdc_trace dans la base de données SQL SERVER LASO :
OrACDC517E:Oracle Call Interface (OCI) method failed: ORA-00600: internal error code, arguments:
[krvxgintocol11
Cause
Ce problème se produit si la base de données Oracle est la version 11.1.0.7 ou une version antérieure.
Résolution
Pour résoudre ce problème, procédez de l’une des façons suivantes :
Téléchargez et installez une mise à jour pour la version existante de la base de données Oracle.
Mettez à jour la base de données Oracle vers la version 11.2.0.1 ou une version ultérieure.
Plus d’informations
Vous pouvez activer la collecte de données pour détecter le problème décrit dans la section « Symptômes ».
Pour cela, procédez comme suit :
1. Reproduisez le problème.
2. Cliquez sur Collecter les diagnostics sous l’onglet État de la console de gestion Oracle Change Data
Capture Designer.
3. Examinez les fichiers de sortie et les fichiers journaux pour le message d’erreur mentionné dans la section
Symptômes. Par exemple, le message d’erreur mentionné dans la section Symptômes peut apparaître
dans un ou plusieurs des fichiers de sortie suivants :
\app\administrator\diag\rdbms\orclcdc\orclcdc\alert\log.xml
\app\administrator\diag\rdbms\orclcdc\orclcdc\trace\orclcdc_ora_1932.trc
Pour plus d’informations sur le problème, activez le suivi dans la console de gestion Oracle Change Data
Capture Designer. Pour ce faire, ajoutez une nouvelle propriété dans la grille Advanced Paramètres sous
l’onglet Avancé, définissez le nom de la propriété à suivre, puis définissez la valeur sur Source . Une fois que le
problème s’est produit, exécutez la requête suivante pour afficher les données de suivi :
NOTE
Après avoir vu les informations de suivi, supprimez la propriété dans la grille Advanced Paramètres pour éviter les
problèmes de performances.
Références
Pour plus d’informations sur les mises à jour décrites dans la section Résolution, voir My Oracle Support.
Exclusion de responsabilité de tiers
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.
Les déclencheurs de composition Oracle envoient
des données pour les colonnes non publiées lors de
la réplication avec Microsoft SQL Server
12/08/2021 • 5 minutes to read
Cet article vous aide à résoudre le problème qui se produit lors de l’utilisation de la réplication transactionnelle
avec un Publisher Oracle et le filtrage des colonnes.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2310152
Symptômes
Lorsque vous utilisez la réplication transactionnelle avec un Publisher Oracle et le filtrage des colonnes, vous
remarquez que le déclencheur généré par l’Assistant publication (déclencheur de niveau ligne) est le suivi de
toutes les colonnes du tableau, même si seules quelques-unes sont publiées.
Cause
Lorsqu’un filtre vertical est appliqué à une composition créée à l’aide d’un éditeur Oracle configuré avec l’option
Passerelle, SQL Server limite la table de suivi pour n’inclure que les colonnes d’intérêt, mais ne limite pas les
événements déclencheurs. Par conséquent, lorsqu’il existe de nombreuses mises à jour de colonnes de tableau
qui ne sont pas incluses dans la table de suivi, de nombreuses lignes inutiles sont enregistrées dans la table de
suivi.
Solution de contournement
Vous pouvez contourner le problème en modifiant manuellement le déclencheur de base de données généré sur
la base de données Oracle lors de l’installation de la réplication, afin d’inclure une liste de colonnes explicite
pour limiter les colonnes qui, lors de la mise à jour, déclencheront le déclencheur.
Utilisez la procédure suivante pour implémenter la solution de contournement :
1. Vérifier que l’éditeur Oracle est configuré en tant qu’éditeur de passerelle
2. Marquez la table publiée ou son espace de table associé comme étant en lecture seule.
3. Déterminez le nom du déclencheur de ligne et de la table de journaux associés à la table publiée.
4. Modifiez la clause du déclencheur de ligne qui identifie les conditions de déclenchement afin d’inclure une
liste de colonnes explicite contenant uniquement les colonnes publiées.
5. Restituer la table publiée ou son espace de table associé en lecture-écriture.
Pour plus d’informations sur chaque étape, voir les paragraphes suivants :
Comment marquer la table publiée ou son espace de table associé comme étant en lecture seule :
Avant de modifier le déclencheur, vous devez définir le tableau en lecture seule afin qu’aucune modification ne
soit perdue. Si votre version Oracle est antérieure à 11 g, vous devrez marquer l’espace de table associé au
tableau comme étant en lecture seule. La lecture seule d’un espace de table empêche les opérations d’écriture
sur les filtres de données de l’espace de table. Pour déterminer l’espace de table associé à votre table publiée,
exécutez la requête suivante :
select table_name, tablespace_name from all_tables
Pour rendre un fichier de données en lecture seule, utilisez une commande semblable à la suivante :
Comment marquer la table publiée ou son espace de table associé comme étant en lecture seule :
Avant de modifier le déclencheur, vous devez définir le tableau en lecture seule afin qu’aucune modification ne
soit perdue. Si votre version Oracle est antérieure à 11 g, vous devrez marquer l’espace de table associé au
tableau comme étant en lecture seule. La lecture seule d’un espace de table empêche les opérations d’écriture
sur les filtres de données de l’espace de table. Pour déterminer l’espace de table associé à votre table publiée,
exécutez la requête suivante :
Pour rendre un fichier de données en lecture seule, utilisez une commande semblable à la suivante :
Comment déterminer le nom du déclencheur de ligne et de la table de journaux associés à la table publiée :
Tous les déclencheurs et tables de journal ont des noms créés à partir des modèles suivants :
HREPL_ARTICLE N LOG_ V
HREPL_ARTICLE N_TRIGGER_ROW
où N et V sont déterminés de la manière suivante :
N est le article_id associé à la table publiée, qui peut être obtenu à l’aide de la requête SQL suivante auprès du
distributeur :
V est un moteur de conception de version. Si les tables à deux journaux ont la même valeur associée pour N, le
journal actif a la valeur V la plus élevée.
Modification de la clause du déclencheur de ligne qui identifie les conditions de déclenchement afin d’inclure
une liste de colonnes explicite contenant uniquement les colonnes publiées :
Oracle fournit un outil d’interface graphique graphique gratuit SQL développeur qui est bien adapté pour
apporter les modifications nécessaires au déclencheur généré. Vous pouvez utiliser les étapes suivantes dans
l’outil SQL développeur pour apporter les modifications nécessaires :
1. Ouvrez une connexion à votre instance Oracle.
2. Sous les schémas Oracle définis, développez le schéma correspondant à votre utilisateur d’administrateur
de réplication.
3. Recherchez les déclencheurs dans la liste des objets et développez-le pour voir la liste des déclencheurs
dont est propriétaire l’utilisateur de l’administrateur de réplication.
4. Recherchez le déclencheur à modifier et mettez-le en surbrillez. Le texte du déclencheur s’affiche dans le
volet droit.
5. Cliquez avec le bouton droit sur le nom du déclencheur dans la liste et sélectionnez Modifier
6. La modification de la définition du déclencheur est réalisée près du début du déclencheur, qui
ressemblera à ce qui suit :
.. créer ou remplacer LE DÉCLENCHEUR APRÈS LA SUPPRESSION OU L’INSERTION OU LA MISE À
JOUR DE
my_name.my_table
POUR CHAQUE LIGNE...
7. Pour modifier le déclencheur, incluez après le mot clé UPDATE la liste des colonnes du tableau publié qui
ont été incluses dans l’article. Si vous développez tables sous le schéma d’administrateur de repl, puis
développez la table des journaux d’articles associée à la table publiée, les colonnes à inclure sont celles
qui apparaissent dans le journal après les cinq colonnes de métadonnation initiales précédées de HREPL_.
Le mot ON doit apparaître au début de la liste des colonnes. Les modifications nécessaires pour le
tableau my_name.my_table avec les colonnes publiées PK, c1 et c2 sont indiquées ci-dessous.
create or replace TRIGGER AFTER DELETE OR INSERT OR UPDATE ON "PK", "c1", "c2" OF my_name.my_table
FOR EACH ROW...
8. Lorsque vous avez terminé la modification, cliquez avec le bouton droit sur le nom du déclencheur et
sélectionnez Compiler pour compiler votre déclencheur révisé. Assurez-vous que le déclencheur résultant
est identifié comme étant valide après la compilation.
Comment restaurer la table publiée ou son espace de table associé pour lire l’écriture :
Après avoir effectué la modification du déclencheur, veillez à restaurer l’espace de table ou la table en LECTURE
ÉCRITURE, en fonction de ce qui a été marqué EN LECTURE SEULE. L’instruction suivante rend l’espace
my_tablespace de table accessible en my_tablespace :
Dans Oracle 11 g, utilisez la commande modifier la table pour restaurer la table afin d’autoriser les
modifications :
Utilisez la requête suivante dans Oracle 11 g pour vérifier que la table publiée n’est plus en lecture seule :
select table_name, read_only
from dba_tables
Cet article présente les outils de statistiques de performances pour le lecteur de journaux de réplication et
l’agent de distribution SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2892631
Introduction
Des statistiques de performances ont été ajoutées à la table et à la table sur la base de données de
mslogreader_history msdistribution_history distribution dans Microsoft SQL Server. Vous pouvez utiliser ces
statistiques pour consulter l’historique des performances récent des agents de lecture de journaux de réplication
et de distribution de réplication.
NOTE
Ces modifications ont été apportées pour la première fois dans les builds SQL Server suivantes :
9.00.4220
9.00.3315
10.00.1806
10.00.2714
Toutes les cinq minutes, les statistiques de performances pour le lecteur de journaux et les agents de distribution
sont enregistrées dans les tableaux d’historique. Par défaut, seules les données des dernières 48 heures sont
conservées. Un processus de nettoyage supprime les données de plus de 48 heures. La valeur par défaut peut
être modifiée en exécutant la procédure stockée et en spécifiant une sp_changedistributiondb nouvelle valeur
pour le history_retention paramètre.
Voici un exemple de sortie de performances du tableau d’historique pour l’agent de lecture de journaux :
<stats state="1" work="9" idle="295"> <reader fetch="8" wait="0"/> <writer write="9" wait="0"/>
<sincelaststats elapsedtime="304" work="9" cmds="52596" cmdspersec="5753.000000"> <reader fetch="8"
wait="0"/> <writer write="9" wait="0"/> </sincelaststats> </stats>
Le sincelaststats délai d’attente du rédacteur (212 secondes) apparaît élevé. Il s’agit du moment où le thread
rédacteur attend que le thread de lecteur fournisse des mémoires tampons que le thread rédacteur peut
appliquer dans la base de données d’abonnés. Le thread de lecteur de l’agent de distribution exécute la
sp_MSget_repl_commands procédure stockée.
Si vous remarquez des temps d’attente élevés pour les rédacteurs dans les statistiques de performances de
l’agent de distribution, vous devez examiner les performances de l’exécution de l’agent de distribution par
rapport au serveur de distribution et à la base de données. En particulier, vous devez examiner l’heure
d’exécution de sp_MSget_repl_commands la procédure stockée.
Si la valeur est augmentée, vous pouvez recevoir de nouveau des statistiques -messageinterval d’état 1
semblables à ce qui suit :
NOTE
Le délai d’attente d’extraction sincelaststats de 505 secondes est très élevé.
Si vous remarquez des temps d’attente de lecture élevés dans les statistiques de performances de l’agent de
distribution, vous devez examiner les performances de l’exécution de l’agent de distribution par rapport au
serveur abonné et à la base de données. Utilisez l’outil de suivi du profileur pour examiner les performances de
l’exécution des procédures stockées de réplication. En règle générale, les procédures stockées sont nommées
comme suit :
sp_MSupd_<owner tablename >
sp_MSins_<owner tablename >
sp_MSdel_<owner tablename >
En outre, pour déterminer si le goulot d’étranglement est basé sur le matériel ou sur le système, utilisez l’écran
de performances pour surveiller les performances du système. Par exemple, utilisez l’écran de performances
pour surveiller les compteurs de disque physique.
La statistique d’attente de l’auteur sincelaststats de 288 secondes apparaît élevée. Il s’agit du moment où le
thread rédacteur attend que le thread lecteur fournisse des mémoires tampons à appliquer. Le thread lecteur de
l’Agent de lecture de journaux exécute la sp_replcmds procédure stockée. Si vous remarquez des threads
d’attente de rédacteur élevés dans les statistiques de performances de l’Agent de lecture de journaux, vous devez
examiner les performances de l’exécution de l’agent de lecture de journaux sur le serveur de publication et la
base de données, puis examiner la durée d’exécution de la procédure sp_replcmds stockée.
Voici la description de chaque statistique de performances :
NOTE
Le tableau contient des statistiques de performances pour l’agent de lecture de journaux perf_stats_tab et l’agent
de distribution. Les statistiques peuvent être interrogés indépendamment à l’aide de la WHERE TYPE='Distrib' clause
ou de la WHERE TYPE='LogRead' clause.
La procédure stockée ouvre un curseur sur la table et la table, puis appelle la procédure stockée pour chaque ligne afin
d’extraire les données statistiques de performances XML dans le move_stats_to_tab mslogreader_history
msdistribution_history move_stats_to_tab perf_stats_tab tableau.
Les abonnements pull ne s’affichent pas dans
Windows Synchronization Manager
15/08/2021 • 2 minutes to read
S’applique à : SQL Server 2019, SQL Server 2017, SQL Server 2016, SQL Server 2014
Symptômes
Supposons que vous créez un abonnement pull à une composition de fusion. Après l’activation de la
synchronisation avec Windows Synchronization Manager,aucun abonnement n’est répertorié dans le Centre de
synchronisation (mobsync.exe) de l’abonné.
Solution de contournement
NOTE
Cette solution de contournement s’applique uniquement SQL serveurs avec une seule instance.
IMPORTANT
Suivez attentivement les étapes de cette section. Des problèmes graves peuvent se produire si vous modifiez le Registre
de façon incorrecte. Avant de le modifier, vous devez le restaurer.
Cet article vous aide à contourner le problème où certains agents de réplication ne peuvent pas s’exécuter
lorsque vous configurez de nombreux agents de réplication SQL Server pour qu’ils s’exécutent sur un serveur.
Version du produit d’origine : SQL Server 2014, SQL Server 2012
Numéro de la ko d’origine : 949296
Symptômes
Prenons l’exemple du scénario suivant :
Vous configurez de nombreux Microsoft SQL Server agents de réplication 2014 SQL Server 2012 pour qu’ils
s’exécutent sur un serveur. Par exemple, vous configurez plus de 200 agents de réplication pour qu’ils
s’exécutent sur un serveur.
Dans ce scénario, certains agents de réplication ne peuvent pas s’exécuter. En outre, le message d’erreur suivant
est consigné dans le journal système :
Cause
Ce problème se produit parce que le tas de bureau est utilisé.
Solution de contournement
Pour contourner ce problème, utilisez l’une des méthodes suivantes :
Utiliser des comptes distincts pour les agents de réplication créés pour différentes bases de données
Vous pouvez le spécifier lors de la création d’agents de réplication. Vous devez vous assurer que tous les points
tactiles des autorisations sont pris en charge. La procédure de modification des paramètres de sécurité pour les
agents de réplication déjà créés se trouve dans l’affichage et la modification des paramètres de sécurité de
réplication.
Utiliser les paramètres du Registre pour augmenter la taille du tas de bureau
Vous pouvez modifier les entrées de Registre suivantes :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\SessionViewSize
(par exemple, augmentez la valeur de 48 à 64).
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SubSystems\Windows (par exemple,
augmentez la troisième valeur SharedSection de 256 kilo-octets)
Vous devez appliquer les modifications sur les deux nodes. Vous devez enregistrer les clés de Registre avant la
modification et redémarrer le serveur après avoir appliqué la modification.
Modifier les agents de réplication de l’exécution continue à l’exécution sur une base programmée
Cela permet de s’assurer que les agents de réplication s’exécutent uniquement lorsqu’il est nécessaire et de ne
pas rester inactifs en permanence (car cela fait perdre des ressources).
Des instructions sur la modification de la planification de l’agent de réplication sont disponibles dans Spécifier
les planifications de synchronisation.
Modifier l’emplacement du serveur sur lequel les agents de réplication sont en cours d’exécution
Vous pouvez évaluer les paires éditeur-abonné et voir si vous pouvez modifier certains abonnés pour effectuer
un pull qui exécutera l’agent de distribution/fusion sur l’abonné plutôt que sur l’éditeur. Cela permet de réduire
le nombre d’agents simultanés qui doivent s’exécuter sur le serveur.
Statut
Ce comportement est inhérent au produit.
IMPORTANT
L’outil Moniteur de tas de bureau ne fonctionne pas dans Windows Server 2008 ou une version ultérieure de Windows. Si
vous utilisez l’une de ces versions de Windows, vous pouvez utiliser LiveKD pour obtenir des valeurs de tas de bureau.
Pour plus d’informations sur la façon de le faire, allez à la section suivante.
Pour utiliser l’outil Moniteur de tas de bureau pour examiner l’utilisation du tas de bureau, suivez les étapes
suivantes :
1. Téléchargez l’outil Moniteur de tas de bureau.
2. Installez l’outil Moniteur de tas de bureau. Pour cela, procédez comme suit :
a. Double-cliquez sur le package pour extraire les fichiers.
b. Cliquez sur Démarrer, cliquez sur Exécuter, tapez cmd, puis cliquez sur OK.
c. Depuis l'invite de commandes, exécutez la commande suivante :
CD ExtractFolder\kktools\dheapmon8.1\Platform
NOTE
ExtractFolder est un espace réservé pour le dossier dans lequel vous extrayez les fichiers. La plateforme
est un espace réservé pour le nom du dossier qui correspond à la plateforme spécifique.
d. Exécutez la commande suivante :
dheapinst.exe -y srv*http://msdl.microsoft.com/download/symbols
dheapmon.exe -l
4. Exécutez l’outil Moniteur de tas de bureau. Pour ce faire, exécutez la commande suivante :
dheapmon.exe -s
Dans cette sortie, l’élément représente le compte qui démarre le Service-0x0-2461f$\Default service SQL
Server Agent. Tous les agents de réplication s’exécutent dans le contexte de sécurité de ce compte. Si vous
exécutez davantage d’agents de réplication, l’utilisation du tas de bureau augmente. Si l’utilisation du tas de
bureau est de plus de 98 ou 99 %, aucune ressource de tas de bureau ne peut être allouée. Par conséquent, vous
ne pouvez pas démarrer de nouveaux agents de réplication.
Dans ce résultat, l’utilisation du tas de bureau du compte est de 98,6 %. Dans ce cas, augmentez la taille du tas
de bureau non actif en augmentant la troisième valeur du SharedSection paramètre. Après avoir augmenté la
troisième valeur, le problème est résolu après le redémarrage du serveur. Ensuite, vous pouvez utiliser l’outil
Moniteur de tas de bureau pour vérifier si la nouvelle valeur s’adaptera à tous les agents de réplication.
Nous recommandons que l’utilisation du tas de bureau reste entre 80 et 90 %. Si vous augmentez la troisième
valeur du paramètre, nous vous recommandons d’augmenter la valeur SharedSection de 512 à chaque fois.
Étapes à suivre pour utiliser LiveKD afin d’éumer les valeurs de tas de
bureau
1. Téléchargez les outils de débogage Windows dans le cadre du SDK.
2. Sdksetup.exe Exécutez, puis installez Outils de débogage pour Windows.
3. Téléchargez LiveKD.
4. Créez un C:\debugger dossier.
5. Copiez tous les fichiers de l’emplacement où vous avez installé les outils de débogage dans C:\debugger .
Le chemin d’accès par défaut C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x64 est .
6. Extrayez LiveKD dans C:\debugger .
7. Ouvrez une invite de commandes avec des autorisations élevées.
8. Exécutez la commande suivante à partir de l’invite de commandes :
livekd -y srv*http://msdl.microsoft.com/download/symbols
kd> !dskheap
*** ERROR: Module load completed but symbols could not be loaded for LiveKdD.SYS
Winstation\Desktop Heap Size(KB) Used Rate(%)
------------------------------------------------------------
WinSta0\Default 20480 0%
WinSta0\Disconnect 96 4%
WinSta0\Winlogon 192 2%
Service-0x0-3e7$\Default 768 1%
Service-0x0-3e4$\Default 768 0%
Service-0x0-3e5 $\Default 768 0%
Service-0x0-10a75$\Default 768 0%
------------------------------------------------------
Total Desktop: (23840 KB - 7 desktops)
Session ID: 0
============================================================
Impact des travaux dans SQL Server 2005 sur le tas de bureau
Dans SQL Server 2005, vous pouvez avoir différents travaux qui s’exécutent sous différents comptes proxy. Pour
chaque compte proxy, le tas de bureau non actif pour ce compte proxy sera alloué. Par exemple, la troisième
valeur du paramètre SharedSection est 512. Si vous utilisez un compte proxy pour démarrer un travail, le tas de
bureau de 512 Ko sera alloué, même si le travail lui-même n’utilise que 10 Ko du tas de bureau.
NOTE
Les autres travaux qui utilisent le même compte proxy utiliseront toujours ce tas de bureau.
Cela peut entraîner de nombreux bureaux lorsque le service SQL Server agent est démarré. Par conséquent,
l’espace d’adressare de mémoire tampon de 48 Mo peut être utilisé. Si vous utilisez l’outil Moniteur de tas de
bureau pour examiner l’utilisation du tas de bureau, vous remarquerez qu’un bureau correspond à un compte
proxy utilisé par un travail en cours d’exécution. Nous vous recommandons d’utiliser moins de comptes proxy
pour éviter d’atteindre la limite de 48 Mo.
Références
Pour plus d’informations sur les valeurs du paramètre, voir SharedSection User32.dll ou
Kernel32.dll'initialisation échoue.
Échec de la fusion de la capture instantanée de
composition avec erreur d’échec de script SQL
Server
13/08/2021 • 2 minutes to read
Cet article vous aide à contourner l’erreur d’échec du script qui se produit lors de la création d’un instantané de
composition de fusion.
Version du produit d’origine : SQL Server 2014, SQL Server 2012
Numéro de la ko d’origine : 3179862
Symptômes
Dans SQL Server 2014 ou 2012, vous créez une composition de fusion qui contient un tableau avec un type de
données de géométrie ou de géographie. Pour copier votre index spatial, vous avez donné la valeur True à
l’option Copier les index spatials de l’article afin que la fusion réplique les index spatials. Toutefois, lorsque la
capture instantanée s’exécute, elle échoue. Si vous démarrez le Moniteur de réplication et que vous analysez
l’éditeur et la composition, recherchez l’agent de capture instantanée et affichez les détails de l’exécution de la
capture instantanée, le message d’erreur suivant s’affiche :
Source: Microsoft.SqlServer.Smo
Target Site: System.Collections.Generic.IEnumerable`1[System.String]
ScriptWithList(Microsoft.SqlServer.Management.Smo.DependencyCollection,
Microsoft.SqlServer.Management.Smo.SqlSmoObject[], Boolean)
>Message: Script failed for Server 'CMSQL'.
Stack: at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList,
SqlSmoObject[] objects, Boolean discoveryRequired)
at Microsoft.SqlServer.Management.Smo.Scripter.EnumScriptWithList(SqlSmoObject[] objects)
at Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.ScriptIndexList(Scripter scripter,
SqlSmoObject[] smoObjectList)
at
Microsoft.SqlServer.Replication.Snapshot.MergeSmoScriptingManager.GenerateTableArticleDriScriptWithSingleBat
chConstraints(Scripter scripter, BaseArticleWrapper articleWrapper, Table smoTable)
at
Microsoft.SqlServer.Replication.Snapshot.MergeSmoScriptingManager.GenerateTableArticleScripts(ArticleScripti
ngBundle articleScriptingBundle)
at
Microsoft.SqlServer.Replication.Snapshot.MergeSmoScriptingManager.GenerateArticleScripts(ArticleScriptingBun
dle articleScriptingBundle)
at Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.GenerateObjectScripts(ArticleScriptingBundle
articleScriptingBundle)
at Microsoft.SqlServer.Replication.Snapshot.SmoScriptingManager.DoScripting()
at Microsoft.SqlServer.Replication.Snapshot.SqlServerSnapshotProvider.DoScripting()
at Microsoft.SqlServer.Replication.Snapshot.MergeSnapshotProvider.DoScripting()
at Microsoft.SqlServer.Replication.Snapshot.SqlServerSnapshotProvider.GenerateSnapshot()
at Microsoft.SqlServer.Replication.SnapshotGenerationAgent.InternalRun()
at Microsoft.SqlServer.Replication.AgentCore.Run() (Source: Microsoft.SqlServer.Smo, Error number: 0)
Get help: `http://help/0`
Source: Microsoft.SqlServer.Smo
Target Site: Void CheckTargetVersion(Microsoft.SqlServer.Management.Smo.SqlServerVersionInternal,
Microsoft.SqlServer.Management.Smo.SqlServerVersionInternal, System.String)
Message: Error with spatial index [IX_GeographicEntity_Outline]. GEOMETRY_AUTO_GRID and GEOGRAPHY_AUTO_GRID
are not supported in SQL Server 2008.
Stack: at Microsoft.SqlServer.Management.Smo.SqlSmoObject.CheckTargetVersion(SqlServerVersionInternal
targetVersion, SqlServerVersionInternal upperLimit, String exceptionText)
at Microsoft.SqlServer.Management.Smo.Index.SpatialIndexScripter.ScriptIndexDetails(StringBuilder sb)
at Microsoft.SqlServer.Management.Smo.Index.IndexScripter.GetCreateScript()
at Microsoft.SqlServer.Management.Smo.Index.ScriptDdl(StringCollection queries, ScriptingPreferences sp,
Boolean notEmbedded, Boolean createStatement)
at Microsoft.SqlServer.Management.Smo.Index.ScriptCreate(StringCollection queries, ScriptingPreferences sp)
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.ScriptCreateInternal(StringCollection query,
ScriptingPreferences sp, Boolean skipPropagateScript)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateObject(Urn urn, ScriptingPreferences sp,
ObjectScriptingType& scriptType)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreate(Urn urn, ScriptingPreferences sp,
ObjectScriptingType& scriptType)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateObjects(IEnumerable`1 urns)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable`1 urns)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List`1 urns, ISmoScriptWriter writer)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.Script(DependencyCollection depList, SqlSmoObject[]
objects, ISmoScriptWriter writer)
at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithListWorker(DependencyCollection depList,
SqlSmoObject[] objects, Boolean discoveryRequired)
at Microsoft.SqlServer.Management.Smo.Scripter.ScriptWithList(DependencyCollection depList, SqlSmoObject[]
objects, Boolean discoveryRequired) (Source: Microsoft.SqlServer.Smo, Error number: 0)
Get help: `http://help/0`
Cause
SQL Server ne prend pas en charge les index spatials définis avec le GEOMETRY_AUTO_GRID ou les
GEOGRAPHY_AUTO_GRID mots clés.
Lorsque vous créez une composition dans SQL Server 2012 ou SQL Server 2014, le paramètre de niveau de
compatibilité ascendante () de la composition autorise les @publication_compatibility_level paramètres de
90RTM et 100RTM. Par conséquent, la compatibilité avec SQL Server 2008 est forcée lorsque vous créez une
composition de fusion. Toutefois, en raison de la compatibilité ascendante avec SQL Server 2008, les index
spatials ne peuvent pas être copiés.
Solution de contournement
Pour continuer à utiliser ce type de données dans une composition de fusion, utilisez l’une des solutions de
contournement suivantes :
Définissez l’index spatial à l’aide du ou des mots GEOMETRY_GRID clés à la place de ou GEOGRPAHY_GRID
GEOMETRY_AUTO_GRID GEOGRAPHY_AUTO_GRID .
Lorsque vous définissez la composition, configurez l’article qui est défini avec un index spatial, en configurant
l’option Copier les index spatials sur False . Ensuite, une fois les abonnements créés et initialisés, créez
manuellement l’index spatial dans la table des abonnés.
S’applique à
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Enterprise Core
SQL Server 2012 Standard
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Standard
Utiliser le paramètre -SkipErrors dans l’agent de
distribution
15/08/2021 • 4 minutes to read
Cet article présente l’utilisation des -SkipErrors paramètres dans l’agent de distribution.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 327817
Résumé
Microsoft SQL Server inclut le nouveau paramètre dans l’agent de distribution qui permet à l’agent de
distribution d’ignorer l’erreur indiquée dans la réplication transactionnelle et de poursuivre -SkipErrors le
processus de distribution.
L’extrait suivant est extrait de la rubrique Handling Agent Errors dans SQL Server Books Online :
Dans le cadre d’un traitement de réplication classique, vous ne devez pas faire l’objet d’erreurs qui doivent être
ignorées. La possibilité d’ignorer les erreurs lors de la réplication transactionnelle est disponible dans les
circonstances uniques où vous attendez des erreurs et ne souhaitez pas qu’elles affectent la réplication (par
exemple, lors du recalcalage vers une Publisher secondaire lors de la livraison des journaux de transaction).
Microsoft recommande d’utiliser ce paramètre avec précaution et uniquement lorsque vous avez une bonne
connaissance des sujets suivants :
Ce que l’erreur indique.
Raison pour laquelle l’erreur se produit.
Pourquoi est-il préférable d’ignorer l’erreur au lieu de la résoudre ?
Si vous ne connaissez pas les réponses à ces éléments, une utilisation inappropriée du paramètre peut
provoquer une incohérence de données entre le Publisher -SkipErrors et l’abonné. Cet article décrit certains
problèmes qui peuvent se produire lorsque vous utilisez le paramètre de manière -SkipErrors incorrecte.
Plus d’informations
Dans la réplication transactionnelle, les modifications de données au niveau Publisher sont propagées à
l’abonné dans l’unité de transaction.
Dans une transaction, il peut y avoir plusieurs commandes. Par défaut, en cas d’échec d’une commande,
l’intégralité de la transaction de réplication est revenir à l’abonné. Si vous ajoutez le paramètre pour permettre à
l’agent de distribution d’ignorer certaines erreurs, la commande qui provoque cette erreur n’est pas appliquée à
l’abonné, mais toutes les autres commandes des mêmes transactions sont -SkipErrors appliquées. Dans ce cas,
la transaction de réplication n’est appliquée que partiellement à l’abonné, ce qui peut par conséquent provoquer
l’incohérence des données entre le Publisher et l’abonné.
Par exemple :
Vous avez une transaction en attente de réplication vers la table Abonné nommée T1. Cette transaction inclut
100 instructions insert. Lorsqu’elle s’applique à l’abonné, les 90 premiers insèrent le processus correctement ;
toutefois, l’instruction insert 91 échoue et l’erreur de violation de clé primaire 2627 se produit.
Lorsque vous n’utilisez pas le -SkipErrors paramètre (comportement par défaut) :
Par défaut, la transaction entière est retransférante et aucun des 100 nouveaux enregistrements n’est inséré
dans la table d’abonnement. Dans ce cas, vous devez corriger l’erreur de réplication afin que la transaction
puisse être réapplante à l’abonné.
Lorsque vous utilisez le -SkipErrors paramètre :
L’agent de distribution enregistre l’erreur dans l’historique de l’agent de distribution, ignore cette erreur, puis
poursuit le processus de distribution. Par conséquent, à l’exception du nouvel enregistrement quatre-vingt-un
qui a provoqué l’erreur, les 99 autres nouveaux enregistrements sont insérés dans la table d’abonnement. Cette
transaction n’est pas réapplée par l’agent de distribution, même après avoir corrigé manuellement l’erreur au
niveau de l’abonné. Par conséquent, dans cette situation, l’abonné manque le nouvel enregistrement quatre-
vingt-un et un problème d’incohérence de données se produit.
Vous devez également savoir qu’en SQL Server 2000, l’agent de distribution est généralement partagé par
plusieurs publications (par défaut, il existe un agent de distribution par base de données de composition et par
paire de base de données d’abonnement). Ainsi, si vous ajoutez le paramètre à la tâche Agent de distribution, il
affecte toutes les publications que cet -SkipErrors agent dessert. Dans SQL versions 2005 et SQL 2008, la
réplication transactionnelle utilise des agents indépendants par défaut pour les publications créées dans
l’Assistant Nouvelle composition. Pour les publications créées sp_addpublication à l’aide d’une procédure
stockée, le comportement par défaut consiste à utiliser un agent partagé.
Pour utiliser le paramètre pour une composition spécifique, utilisez un agent indépendant, qui -SkipErrors
n’offre qu’un abonnement. Pour utiliser un agent indépendant, suivez les étapes pour votre version :
NOTE
Vous ne pouvez pas activer cette option après avoir ajouté des abonnements à cette composition.
NOTE
Vous ne pouvez pas activer cette option après avoir ajouté des abonnements à cette composition.
Cet article vous aide à contourner le problème d’échec des agents Snapshot ou Logreader lorsqu’une table de
destination est vide.
Version du produit d’origine : SQL Server 2014, SQL Server 2012
Numéro de la ko d’origine : 3144065
Symptômes
Dans une réplication transactionnelle en Microsoft SQL Server, un article d’une requête SQL a une chaîne vide
dans une table de destination ( = N ») dans une instruction @destination_table Transact-SQL. Dans ce cas, vous
pouvez recevoir les messages d’erreur suivants aux emplacements spécifiés :
Dans l’agent de capture instantanée :
NOTE
La troisième erreur peut être liée au minutage. Si l’erreur persiste après la réexécution de l’instruction, utilisez cette
vérification pour vérifier l’intégrité DBCC CHECKDB structurelle de la base de données. Sinon, redémarrez le serveur pour
vous assurer que les structures de données en mémoire ne sont pas endommagées. Un fichier de vidage est créé dans le
\Log dossier qui contient les détails de l’assertion.
Les deuxième et troisième erreurs sont déclenchées uniquement si l’option de synchronisation immédiate est activée
pour la publication.
Cause
Ce problème se produit car une chaîne vide n’est pas un nom de table de destination valide.
Solution de contournement
Pour contourner ce problème, définissez un nom de table de destination valide ou supprimez le nom de la table
de destination non valide.
S’applique à
SQL Server 2014 Business Intelligence
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Express
SQL Server 2014 Standard
SQL Server Web 2014
SQL Server 2012 Business Intelligence
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Enterprise Core
SQL Server 2012 Express
SQL Server Web 2012
SQL Server 2012 Standard
La synchronisation pour la SQL Server de fusion
échoue lorsqu’un article utilise un résolveur de
conflit personnalisé de procédure stockée
15/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème d’échec de la synchronisation de la SQL Server fusion lorsqu’un
article de tableau utilise un résolveur de conflit personnalisé de procédure stockée.
Version du produit d’origine : SQL Server 2008 R2, SQL Server 2008, SQL Server 2005
Numéro de la ko d’origine : 2585632
Symptômes
Prenons l’exemple du scénario suivant :
Vous configurez la réplication de fusion dans Microsoft SQL Server 2008 R2, Microsoft SQL Server 2008
ou Microsoft SQL Server 2005.
La composition contient un article de tableau.
L’article du tableau contient des colonnes de type varchar de données ou nvarchar .
NOTE
L’article du tableau peut contenir des colonnes des deux types de données.
NOTE
Le tableau peut également contenir une colonne de type numeric de données ou money .
Une colonne de type uniqueidentifier de données qui possède la propriété Rowguidcol n’est pas la
dernière colonne du tableau. Par exemple, une colonne de type de données , ou est decimal numeric
money triée après la uniqueidentifier colonne.
Vous configurez l’article du tableau pour utiliser un résolveur de conflit personnalisé de procédure
stockée.
Un conflit est détecté pour l’article du tableau.
Dans ce scénario, la synchronisation peut échouer pendant la résolution du conflit. Lorsque ce problème se
produit, vous pouvez recevoir un message d’erreur semblable à l’un des suivants :
Message d’erreur 1
L’agent de fusion a échoué car le schéma de l’article au Publisher ne correspond pas au schéma de l’article
de l’abonné. Cela peut se produire lorsqu’il existe des modifications DDL en attente d’application au niveau
de l’abonné.
Redémarrez l’agent de fusion pour appliquer les modifications DDL et synchroniser l’abonnement.
Message d’erreur 2
Le processus de fusion n’a pas pu stocker les informations de conflit pour l’article « article_name ». Vérifiez
les propriétés de la composition pour déterminer où les enregistrements en conflit sont stockés.
Valeur de caractère non valide pour la spécification de cast.
Ces erreurs sont signalées par l’agent de fusion en cas d’échec du travail de l’agent de fusion.
Cause
Ce problème se produit car les données renvoyées par le résolveur de conflits personnalisé de procédure
stockée sont converties de manière incorrecte en types de données SQL Server dans les tables de base.
NOTE
La procédure stockée renvoie les données correctes.
État
Microsoft a confirmé qu’il s’agit d’un bogue dans les produits Microsoft répertoriés dans la version d’origine du
produit au début de cet article.
Pour contourner ce problème, castez les colonnes de type de données en type de données dans le code de
résolution de conflit personnalisé de procédure varchar char stockée.
NOTE
Vous de devez peut-être déposer, puis rajouter des colonnes pour modifier l’ordre de tri. En outre, le problème peut se
reproduire si vous ajoutez des colonnes ultérieurement.
L’abonnement n’existe pas lorsqu’un réplica principal
de distributeur échoue vers un réplica qui n’utilise
pas le même profil d’agent.
14/08/2021 • 2 minutes to read
Cet article vous aide à contourner l’erreur « L’abonnement n’existe pas » qui se produit lorsqu’un réplica
principal de distributeur passe à un réplica qui n’utilise pas le même profil d’agent.
Version du produit d’origine : SQL Server 2017 Developer, SQL Server 2017 Enterprise, SQL Server 2017
Enterprise Core
Numéro de la ko d’origine : 4488815
Symptômes
Prenons l’exemple du scénario suivant :
Dans SQL Server 2017, vous avez un agent de distribution qui n’utilise pas de profil d’agent par défaut.
La base de données de distribution est ajoutée au groupe de disponibilité.
Le réplica principal de la base de données de distribution échoue vers un réplica qui n’utilise pas exactement
le même profil d’agent.
Dans ce scénario, l’agent de distribution échoue et vous recevez le message d’erreur suivant :
Cause
Les profils d’agent sont gérés et persistants dans la base msdb de données. Les modifications apportées à un
profil d’agent sont persistantes et ne peuvent pas être envoyées à d’autres distributeurs dans la ag de la base
msdb de données de distribution.
Les agents de réplication sont associés au profil via profile_id . Après un failover, l’agent risque de ne pas
pouvoir trouver le profil correct. Sinon, il peut trouver le profil erroné. Étant donné qu’un profil non parefault
dans un distributeur peut différer d’un autre distributeur, ou qu’il n’a peut-être jamais été existant ou qu’il peut
avoir un autre profile_id .
Le travail de l’agent de distribution lance la procédure stockée pour obtenir l’ID de
sp_MShelp_distribution_agentid l’agent au démarrage. Si le profil n’existe pas ou si les ID de profil sont
différents, le travail de l’agent de distribution n’a pas l’ID d’agent et il renvoie l’abonnement n’existe pas de
message d’erreur.
Solution de contournement
Pour contourner ce problème, appliquez l'une des méthodes suivantes :
Spécifiez les paramètres directement dans la commande de l’agent de distribution, au lieu d’utiliser le
profil d’agent. Appliquez également les modifications au travail de l’agent de distribution dans tous les
réplicas de distributeur.
Assurez-vous que le profil de l’agent est créé dans tous les distributeurs qui participent à la base de
données de distribution dans l’AG et assurez-vous que les ID de profil sont les mêmes.
L’agent de distribution exécute la sp_MShelp_distribution_agentid procédure stockée pour obtenir le profil de
l’agent. Si le profil de l’agent n’existe pas ou si l’ID de profil est différent, le profil d’agent correct est in trouvé et
le message d’erreur « L’abonnement n’existe pas » est renvoyé.
Pour éviter ce problème, spécifiez le profil d’agent (ID de profil) correct dans la sp_MShelp_distribution_agentid
procédure stockée.
Voici un segment de code de la sp_MShelp_distribution_agentid procédure stockée :
SELECT distribAgent.id,
distribAgent.name,
distribAgent.publisher_database_id,
distribAgent.publisher_db,
distribAgent.subscriber_db,
profileName.profile_id,
profileName.profile_name
FROM MSdistribution_agents AS distribAgent
INNER JOIN msdb..MSagent_profiles AS profileName
ON distribAgent.profile_id = profileName.profile_id
Comprendre l’ordre de traitement de l’article de la
réplication de fusion
15/08/2021 • 6 minutes to read
Cet article explique comment comprendre l’ordre de traitement de l’article De réplication de fusion.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 307356
Résumé
L’agent de fusion suit un ensemble spécifique de règles qui régissent l’ordre dans lequel le processus de fusion
applique les modifications aux articles pendant le processus de synchronisation.
Cet article explique pourquoi l’ordre de traitement des articles est important.
Plus d’informations
L’ordre de traitement des articles est important pour deux raisons principales :
Dans de nombreux cas, l’agent de fusion doit traiter les modifications apportées aux articles qui
participent aux contraintes d’intégrité référentielle déclarative (DRI) dans un ordre spécifique pour
obtenir des performances optimales. Si ce n’est pas le cas, il se peut que l’agent de fusion doit réessayer
les opérations DML qu’il a essayées dans un ordre incorrect (autrement dit, essayez d’insérer une ligne
enfant avant celle de son parent).
Les applications qui utilisent des déclencheurs pour maintenir l’intégrité référentielle nécessitent que
l’agent de fusion envoie les modifications dans un ordre spécifique. Si l’agent de fusion envoie les
modifications dans un ordre incorrect, le déclencheur la resserra probablement et la modification ne se
propagera pas dans toute la topologie de réplication.
NOTE
L’agent de fusion peut contourner l’évaluation de contrainte FOREIGN KEY et l’exécution du déclencheur utilisateur
lorsqu’il applique SQL de modification DML à un réplica partenaire. Pour que cela se produise, la contrainte FOREIGN KEY
et le déclencheur utilisateur, ou les deux, doivent avoir été créés avec l’option NOT FOR REPLICATION. Dans les deux
cas, le processus de fusion suppose que SQL Server a correctement évalué la logique métier lors de l’exécution de la
modification initiale initiée par l’utilisateur sur l’objet et qu’il n’a pas besoin de réévaluer ces conditions lorsqu’il réplique les
données dans le réplica partenaire. Le principal avantage de l’utilisation de L A RÉPLICATION NOT FOR de cette
manière est l’augmentation des performances. Pour plus d’informations sur l’option NE PAS FOR REPLICATION et pour
savoir comment l’utiliser correctement, voir la rubrique sur l’option NOT FOR REPLICATION dans SQL Server 2000
Books Online.
Pour les deux raisons répertoriées précédemment, l’ordre dans lequel l’agent de fusion fournit les modifications
à un réplica partenaire est important.
Avant de commencer une discussion sur l’ordre de traitement des articles, il est important de comprendre deux
concepts clés. Les deux concepts clés sont les suivants :
Surnom d’article.
Génération.
Voici une description des deux concepts.
Surnoms d’article
Un surnom est une valeur d’entier que l’agent de fusion utilise pour identifier un article (une table SQL
Server) pour fusionner la réplication. Le processus de configuration de fusion attribue un surnom
d’article lorsqu’il ajoute l’article à une composition de fusion. Si un article participe à des contraintes DRI,
le processus de configuration de fusion tente de générer un surnom d’article qui reflète les contraintes
DRI définies. Le processus de fusion affecte aux tables référencés par une contrainte FOREIGN KEY (un
parent) un surnom d’article plus petit que celui de la table de référence (la table enfant ou la table sur
laquelle la contrainte FOREIGN KEY est définie).
Si une table ne participe pas aux contraintes DRI, le processus de configuration de fusion affecte le
surnom de l’article en fonction de l’ordre dans lequel il ajoute l’article à la composition (dans l’ordre
croissant).
Generation
Une génération est une valeur entière que l’agent de fusion utilise pour suivre un groupe logique de
modifications apportées à un article particulier. Toutes les modifications apportées à un article particulier dans
un réplica particulier entre les synchronisations de fusion sont associées à la même génération. Chaque fois que
l’agent de fusion s’exécute, il ferme la génération ouverte existante, puis ouvre une nouvelle génération à
laquelle associer l’ensemble de modifications suivant.
Cet article décrit que les instructions Update peuvent être répliquées en tant que paires DELETE/INSERT.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 238254
Résumé
Si une colonne faisant partie d’une contrainte unique est mise à jour, SQL Server implémente la mise à jour en
tant que « mise à jour différée », ce qui signifie une paire DELETE / INSERT d’opérations. Cette « mise à jour
différée » entraîne l’envoi par la réplication d’une paire d’instructions DELETE / INSERT aux abonnés. Il existe
également d’autres situations qui peuvent entraîner une mise à jour différée. Par conséquent, toute logique
métier que vous implémentez dans vos déclencheurs ou procédures stockées personnalisées au niveau de
l’abonné doit également être incluse dans les déclencheurs ou les UPDATE DELETE / INSERT procédures
stockées personnalisées.
Plus d’informations
Le comportement par défaut dans la réplication transactionnelle consiste à utiliser et des procédures stockées
personnalisées pour appliquer les INSERT UPDATE modifications aux DELETE abonnés.
INSERT les instructions réalisées au Publisher sont appliquées aux abonnés par le biais INSERT d’un appel de
procédure stockée. De même, une DELETE instruction est appliquée via un appel de procédure DELETE stockée.
Toutefois, lorsqu’une instruction est exécutée en tant que « mise à jour différée », l’agent logreader place deux
appels de procédure stockée dans la base de données de distribution à appliquer aux abonnés plutôt qu’à un
appel de procédure stockée de mise à UPDATE DELETE / INSERT jour. Par exemple, supposons que vous avez un
tableau de publication, TABLE1 nommé, avec ces trois colonnes :
col1 int
col2 int
col3 varchar(30)
La seule contrainte unique est TABLE1 définie par le biais col1 d’une contrainte de clé primaire. Supposons
que vous avez un enregistrement (1,1, « Dallas »).
Lorsque vous exécutez ce code :
L’instruction est implémentée par SQL Server sous la forme d’une paire d’instructions depuis la mise à jour ,
dont un UPDATE DELETE / INSERT index unique col1 est défini. Par conséquent, le logreader place une paire
DELETE / INSERT d’appels dans la base de données de distribution. Cela peut avoir un impact sur toute logique
métier présente dans les déclencheurs ou les procédures stockées personnalisées au niveau de l’abonné. Vous
devez incorporer la logique métier supplémentaire dans et déclencher ou stocker des DELETE INSERT
procédures pour gérer cette situation.
Si vous préférez utiliser une logique unique et que vous souhaitez que toutes vos commandes sont répliquées
en tant que paires, vous pouvez activer un UPDATE DELETE / INSERT indicateur de suivi.
En outre, si vous utilisez un filtre horizontal dans votre composition et si la ligne mise à jour ne répond pas à
une condition de filtre, seul un appel de procédure est envoyé aux DELETE abonnés. Si la ligne mise à jour
précédemment ne répondait pas à la condition de filtre mais répond à la condition après la mise à jour, seul
l’appel de procédure est envoyé via le INSERT processus de réplication.
Dans l’exemple précédent, supposons que vous avez également un filtre horizontal défini sur TABLE1 :
where col2 = 'Dallas' . Si vous exécutez ce code :
L’agent logreader place uniquement un appel de procédure stockée à appliquer aux abonnés, car la ligne mise à
jour ne répond pas aux critères de DELETE filtre horizontal.
Maintenant, si vous exécutez ce code :
Le logreader génère uniquement l’appel de procédure stockée, car la ligne ne répondait pas INSERT à la
condition de filtre.
Bien qu’une opération a été effectuée au niveau Publisher, seules les commandes appropriées sont appliquées
au niveau UPDATE de l’abonné.
Bloquer l’utilisation à distance des comptes locaux
dans Windows
12/08/2021 • 9 minutes to read
Cet article explique comment bloquer l’utilisation à distance de comptes locaux dans Windows.
Version du produit d’origine : SQL Server 2016 Developer, SQL Server 2016 Enterprise, SQL Server 2016
Enterprise Core
Numéro de la ko d’origine : 4488256
Résumé
Lorsque vous utilisez des comptes locaux pour l’accès à distance dans les environnements Active Directory, vous
pouvez être face à plusieurs problèmes différents. Le problème le plus important se produit si un compte local
d’administration a le même nom d’utilisateur et le même mot de passe sur plusieurs appareils. Un attaquant qui
dispose de droits d’administration sur un appareil de ce groupe peut utiliser le hachage de mot de passe des
comptes de la base de données SAM (Security Accounts Manager) locale pour obtenir des droits
d’administration sur les autres appareils du groupe qui utilisent les techniques de « hachage ».
Plus d’informations
Nos dernières instructions de sécurité répondent à ces problèmes en profitant des nouvelles fonctionnalités
Windows pour bloquer les connexions à distance par les comptes locaux. Windows 8.1 et Windows Server 2012
R2 ont introduit les identificateurs de sécurité (SID) suivants :
S-1-5-113 : AUTORITÉ NT\Compte local
S-1-5-114 : AUTORITÉ NT\Compte local et membre du groupe Administrateurs
Ces SID sont également définis sur Windows 7, Windows 8, Windows Server 2008 R2 et Windows Server 2012
après l’installation de l’avis de sécurité Microsoft mise à jour : mise à jour pour améliorer la protection et la
gestion des informations d’identification : 13 mai 2014.
Le premier SID est ajouté au jeton d’accès des utilisateurs au moment de l’authentification si le compte
d’utilisateur authentifié est un compte local. Le deuxième SID est également ajouté au jeton si le compte local est
membre du groupe Administrateurs intégré.
Ces SID peuvent accorder ou refuser l’accès à tous les comptes locaux ou tous les comptes locaux
d’administration. Par exemple, vous pouvez utiliser ces SID dans Attributions des droits d’utilisateur dans la
stratégie de groupe pour « Refuser l’accès à cet ordinateur à partir du réseau » et « Refuser l’accès à l’ordinateur
via les services Bureau à distance ». Il s’agit de la pratique recommandée dans nos derniers conseils de sécurité.
Pour obtenir le même effet avant la définition de ces nouveaux SID, vous deviez nommer explicitement chaque
compte local que vous vouliez restreindre.
Dans la version initiale des instructions Windows 8.1 et Windows Server 2012 R2, nous avons refusé l’accès
réseau et bureau à distance au compte local (S-1-5-113) pour toutes les configurations client et serveur
Windows. Cela bloque tout accès à distance pour tous les comptes locaux.
Nous avons de nouveau découvert que le clustering deover repose sur un compte local nonadministratif
(CLIUSR) pour la gestion des nœuds de cluster, et que le blocage de son accès à la déconnexions réseau entraîne
l’échec des services de cluster. Étant donné que le compte CLIUSR n’est pas membre du groupe Administrateurs,
le remplacement de S-1-5-113 par S-1-5-114 dans le paramètre « Refuser l’accès à cet ordinateur à partir du
réseau » permet aux services de cluster de fonctionner correctement. Il le fait tout en fournissant une protection
contre les types d’attaques « pass the hash » en refusant l’accès réseau aux comptes locaux d’administration.
Bien que nous pourrions conserver les instructions inchangées et ajouter une note de bas de page « cas spécial
» pour les scénarios de cluster de failover, nous avons choisi de simplifier les déploiements et de modifier la
ligne de base du serveur membre Windows Server 2012 R2, comme indiqué dans le tableau suivant.
Ces instructions vous recommandent également d’ajouter des administrateurs de domaine (DA) et des
administrateurs Enterprise (EA) à ces restrictions. L’exception concerne les contrôleurs de domaine et les
stations de travail d’administration dédiées. Da et EA sont spécifiques au domaine et ne peuvent pas être
spécifiés dans les lignes de base des objets de stratégie de groupe génériques.
NOTE
Cette modification s’applique uniquement à la ligne de base du serveur membre. La restriction sur l’accès au
Bureau à distance n’est pas modifiée. Les organisations peuvent toujours décider de refuser l’accès réseau au
compte local pour les serveurs non privés.
Les restrictions sur les comptes locaux sont destinées aux systèmes joints au domaine Active Directory. Les
appareils de groupe de travail Windows non joints ne peuvent pas authentifier les comptes de domaine. Par
conséquent, si vous appliquez des restrictions à l’utilisation à distance de comptes locaux sur ces appareils, vous
pourrez vous connecter uniquement à la console.
1. Le nœud joint démarre le service de cluster et transmet les informations d’identification CLIUSR.
2. Pour obtenir le même effet, toutes les informations d’identification sont transmises afin que le nœud
puisse se joindre.
Nous avons fourni une protection de plus pour garantir un succès continu. Si vous supprimez accidentellement
le compte CLIUSR, il est re-créé automatiquement lorsqu’un nœud tente de rejoindre le cluster.
Résumé : Le compte CLIUSR est un composant interne du service de cluster. Il s’agit d’une gestion autonome
afin que vous n’êtes pas obligé de le configurer ou de le gérer.
Dans Windows Server 2016, nous avons fait une étape plus loin en profitant des certificats pour permettre aux
clusters de fonctionner sans aucun type de dépendance externe. Cela vous permet de créer des clusters à l’aide
de serveurs situés dans différents domaines ou en dehors de tous les domaines.
Le .NET Framework client 4.6.2 pour Always
Encrypted échoue par intermittence pendant le
déchiffrement de ligne
12/08/2021 • 3 minutes to read
Cet article fournit une solution au problème qui provoque l’échec de l’application cliente .NET Framework 4.6.2
lors de l’accès aux données à partir d’une base de données toujours chiffrée.
Version du produit d’origine : SQL Server 2016, SQL Server 2017
Numéro de la ko d’origine : 3204545
Symptômes
Vous avez une application cliente qui utilise le .NET Framework Fournisseur de données pour Microsoft SQL
Server (Sqlclient) inclus dans Microsoft .NET Framework 4.6.2. Vous utilisez cette application pour vous
connecter à une base de données toujours chiffrée qui s’exécute sur Microsoft SQL Server 2016, SQL Server
2017 sur Windows ou Microsoft Azure SQL Database.
Lorsque vous essayez de déchiffrer les enregistrements de la base de données toujours chiffrée, vous recevez
des messages d’erreur intermittents semblables à l’erreur suivante :
Échec du déchiffrement. Les 10 derniers octets de la clé de chiffrement de colonne chiffrée sont : 7E-0B-E6-
D3-39-CE-35-86-2F-AA. Les 10 premiers octets de texte chiffré sont : 01-C3-D7-39-33-2F-E6-44-C3-B1. Le
texte chiffré spécifié comporte une balise d’authentification non valide.
Lorsque ce problème se produit, les requêtes sur des colonnes protégées par le paramètre Toujours chiffré
peuvent afficher des résultats incorrects, par exemple, trop peu d’enregistrements sont renvoyés. Cela peut à son
tour déclencher un comportement incorrect. Par exemple, l’application cliente tente d’insérer des valeurs
manquantes ou d’exécuter d’autres processus de mise à jour qui créent des erreurs supplémentaires ou
provoquent des données incohérentes dans la base de données.
Résolution
Pour résoudre ce problème, installez la mise à jour de sécurité à partir du Bulletin de sécurité Microsoft MS16-
155.
Solution de contournement
IMPORTANT
Si votre application cliente est hébergée via Web Apps sur Microsoft Azure App Service, le client utilise automatiquement
la .NET Framework 4.6.2. Par conséquent, vous pouvez rencontrer le problème mentionné dans la section Symptômes.
Dans ce scénario, vous pouvez utiliser uniquement la solution de contournement de la méthode 2 (« Désactiver le
chiffrement de colonne ») dans cette section jusqu’à ce qu’un correctif soit publié pour ce problème.
NOTE
Après avoir désinstallé une version du .NET Framework, nous vous recommandons de tester .NET
Framework applications dépendantes. Ces applications peuvent ne pas fonctionner correctement si vous
désinstallez la version du .NET Framework dont elles dépendent.
System.Data.SqlClient.SqlConnection.ColumnEncryptionKeyCacheTtl = TimeSpan.Zero
Après avoir utilisé l’une ou l’autre des méthodes, vérifiez que l’erreur ne réapparaît pas lors d’une analyse de
tableau (telle que SELECT * FROM < table avec > Toujours chiffré) qui s’exécute à partir d’une fenêtre de
requête en SSMS sur une connexion de base de données dont le paramètre de chiffrement de colonne est
activé dans la chaîne de connexion. L’exécution de ce type d’analyse valide le chiffrement correct.
IMPORTANT
Les utilisateurs qui présentent le problème décrit dans la section Symptômes pendant l’analyse de validation doivent
contacter sqlalwaysencrypted@microsoft.com . L’équipe de support peut aider à récupérer toutes les lignes
précédemment chiffrées affectées par ce bogue. Ce bogue ne provoque pas de perte de données permanente.
Références
.NET Framework pilote client 4.6.2 pour Always Encrypted, ce qui entraîne des échecs intermittents de
déchiffrement des lignes individuelles
Vous ne devez pas désactiver l’utilisateur invité dans
la base de données msdb dans SQL Server
15/08/2021 • 3 minutes to read
Cet article décrit différents problèmes qui peuvent se produire lorsque vous désactivez l’utilisateur invité dans la
base de données msdb dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2539091
NOTE
Le texte de l’erreur peut légèrement varier en fonction du scénario. Toutefois, la cause sous-jacente est essentiellement la
même. Cette cause est un nombre insuffisant de privilèges dans la base de données msdb. Ces symptômes se produisent
lorsque l’Explorateur d’objets tente d’afficher l’état de gestion basée sur la stratégie de chaque base de données.
L’Explorateur d’objets utilise les autorisations de l’utilisateur connecté actuel pour interroger la base de données msdb
pour obtenir ces informations, ce qui provoque l’erreur.
Symptôme 1
Dans les environnements SQL Server 2012 et ultérieurs, lorsqu’un utilisateur qui n’est pas membre du rôle
serveur fixe Sysadmin dans SQL Server et qui autrement n’a pas reçu les autorisations appropriées dans msdb
tente d’étendre le nœud Bases de données ou l’un des dossiers sous ce nœud, il reçoit un message d’erreur qui
ressemble à ce qui suit :
Le principal du <username> serveur n’est pas en mesure d’accéder à la base de données msdb dans le contexte
de sécurité actuel. (Microsoft SQL Server, Erreur : 916)
Symptôme 2
Dans les environnements SQL Server 2008 et SQL Server 2008 R2, lorsqu’un utilisateur qui n’est pas membre
du rôle serveur fixe Sysadmin dans SQL Server et qui n’a pas reçu les autorisations appropriées dans msdb
tente de développer le nœud Bases de données ou l’un des dossiers sous ce nœud, il reçoit un message d’erreur
qui ressemble à ce qui suit :
NOTE
Le développement du nœud Base de données n’est qu’une des activités qui nécessitent l’autorisation de connexion du
compte invité à la base de données msdb. Une erreur similaire peut se produire avec toute activité nécessitant au moins
un accès minimal à la base de données msdb.
USE msdb;
ON perms.grantee_principal_id = prins.principal_id
GO
Si vous recevez un jeu de résultats semblable à ce qui suit, l’utilisateur invité dispose des autorisations
nécessaires.
GRA N T GRA N T
GRA N T EE_P RI O R_P RI P ERM I
EE_N A C L A SS M A JO R M IN O R N C IPA N C IPA SSIO N _ STAT E_
ME C L A SS _DESC _ID _ID L _ID L _ID TYPE NAME STAT E DESC
Si vous recevez un jeu de résultats vide ou si l’affiche DENY dans le jeu de résultats mentionné ici, l’utilisateur
invité est désactivé dans la base de données state_desc msdb. Vous pouvez recevoir l’erreur 916 lorsque vous
vous connectez à une base de données.
GO
Références
Autorisations des invités sur les bases de données utilisateur
Sécurisation de SQL Server
Résoudre les problèmes d’autorisation lors du
déplacement de la base de données MSDB entre
différentes instances
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre les problèmes d’autorisation qui se produisent lorsque vous déplacez la base de
données MSDB entre différentes instances.
Version du produit d’origine : Microsoft SQL Server
Numéro de la ko d’origine : 2000274
Symptômes
Prenons l’exemple du scénario suivant :
Vous déplacez la base de données msdb d’une instance vers une autre à l’aide du processus de sauvegarde et de
restauration ou en copiant les fichiers de base de données (mdf et ldf). Ensuite, sur le serveur de destination, un
utilisateur qui ne fait pas partie du rôle fixe Sysadmin dans SQL Server tente d’y faire l’une des opérations
suivantes :
Affichez un travail dans SQL Server Management Studio.
Appeler SQL procédures stockées associées à un agent (par exemple, xp_sqlagent_enum_jobs ou
sp_get_composite_job_info) directement à l’aide de T-SQL.
Dans ce scénario, l’utilisateur reçoit un message d’erreur semblable au suivant :
Une exception s’est produite lors de l’exécution d’une instruction SQL transact ou d’un lot.
(Microsoft.SqlServer.ConnectionInfo)
L’autorisation EXECUTE a été refusée sur l’objet « xp_sqlagent_enum_jobs » base de données «
mssqlsystemresource » et schéma « sys ». (Microsoft SQL Server, Erreur : 229)
Cause
Ce problème se produit car le certificat SQL agent de sécurité est différent sur différentes instances.
Résolution
Pour résoudre le problème, vous devez remplacer le certificat dans la base de données principale par le certificat
de la base de données msdb restaurée à l’aide du script suivant sur le serveur de destination :
use msdb
go
-- Backup the Agent certificate from the remote server to a file
BACKUP CERTIFICATE [##MS_AgentSigningCertificate##] TO FILE = 'MS_AgentSigningCertificate.remote_server.cer'
go
use master
go
-- re-create the agent certificate on master
-- Note: Because we are making these changes using a regular user and not as part of setup, the name
-- cannot include the ## token.
-- Creating a regular certificate in this case should be the equivalent as we only need it to derive a SID
CREATE CERTIFICATE [MS_AgentSigningCertificate.remote_server] FROM FILE =
'MS_AgentSigningCertificate.remote_server.cer'
go
-- Recreate the user mapped to the cert and grant the same permissions that the regular certificate needs.
CREATE USER [MS_AgentSigningCertificate.remote_server] FROM CERTIFICATE
[MS_AgentSigningCertificate.remote_server]
go
GRANT EXECUTE TO [MS_AgentSigningCertificate.remote_server]
go
NOTE
Dans un scénario où les certificats dans la base et le modèle sont les mêmes avant d’exécuter le script décrit dans l’article,
l’exécution du script entraîne le message d’erreur suivant :
Si vous présentez les symptômes décrits dans l’article même lorsque les certificats sont identiques, contactez les
services de support technique Microsoft (CSS) pour obtenir de l’aide.
SQL Server ne parvient pas à démarrer lorsque le
serveur est configuré pour utiliser SSL
12/08/2021 • 4 minutes to read
Cet article fournit une résolution de l’erreur 17182 (échec de l’initialisation de TDSSNIClient avec 0xd d’erreur,
0x38 de code d’état) qui se produit lorsque le serveur est configuré pour utiliser SSL.
S’applique à : SQL Server
Numéro de la ko d’origine : 2023869
Symptômes
Prenons l’exemple du scénario suivant :
Vous avez une instance de SQL Server 2005 ou une version ultérieure qui est hébergée sur un système
exécutant Windows Server 2008 ou une version ultérieure du système d’exploitation.
Vous avez configuré le chiffrement SSL pour votre SQL Server en entrant manuellement l’empreinte
numérique d’un certificat dans la valeur Certificat sous la clé de Registre suivante :
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib
Dans ce scénario, votre SQL Server peut ne pas démarrer et les messages suivants sont enregistrés dans le SQL
Server Errorlog :
Cause
L’une des causes premières courantes de ces symptômes est un caractère invisible qui a peut-être été ajouté par
inadvertance à la valeur Thumbprint du certificat, lorsqu’il est copié à partir du contrôle d’édition enrichi du
logiciel en ligne Certificats dans la MMC.
Résolution
Vous pouvez utiliser l’une des résolutions suivantes :
Évitez de copier des caractères de début à partir du logiciel en snap-in Certificats dans MMC, lorsque
vous copiez la valeur Thumbprint d’un certificat.
Utilisez l’outil Certutil au lieu du logiciel en snap-in de certificats dans MMC pour exporter le certificat
dans un fichier texte, puis copiez la valeur Thumbprint du certificat requis à partir du fichier texte.
L’utilisation est indiquée ci-dessous :
Pour afficher le contenu du magasin de certificats utilisateur actuel de l’ordinateur, tapez ce qui suit à
l’invite de commandes :
certutil -store -user my
Pour afficher le contenu du magasin de certificats de l’ordinateur local, tapez ce qui suit à l’invite de
commandes :
certutil -store my
Vous pouvez diriger la sortie de la commande ci-dessus vers un fichier texte en utilisant ce qui suit à l’invite de
commandes d’administration sur les systèmes d’exploitation Vista :
certutil -store my > cert.txt
L’empreinte numérique peut se trouver dans la ligne qui commence par Cert Hash(sha1)
Par exemple : Cert Hash(sha1) : e7 02 4b 42 c4 04 fd 44 8c ec 21 f1 91 76 5c b7 c3 ad 1d 55
Vous pouvez ensuite copier cette valeur (sans espaces ; pour l’exemple ci-dessus, il s’adressera à
e7024b42c404fd448cec21f191765cb7c3ad1d55) vers la valeur certificat sous la clé de Registre suivante :
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib
Plus d’informations
Un code d'0x38 dans le message d’erreur 17182 signifie que SQL Server une erreur s’est produite lors de
l’initialisation de SSL. Pour plus d SQL, voir SQL protocols.
L'0xd de code de retour indique l’erreur du système d’exploitation 0xd (13) qui se traduit par « Les données ne
sont pas valides ». L’erreur 17182 ci-dessus « Échec de l’initialisation de TDSSNIClient avec 0xd d’erreur, le
code d’état 0x38 » se produit spécifiquement en raison du fait que la chaîne sous valeur Certificat ne peut pas
être correctement convertie en une empreinte valide du certificat.
Ce problème d’interface graphique graphique avec le composant logiciel en ligne Certificats ne se produit pas
sur les versions antérieures de Windows (par exemple, Windows XP, Windows Server 2003), car ils n’utilisent
pas de contrôle d’édition enrichi dans le composant logiciel en ligne Certificats
Pour vérifier si vous êtes en cours d’exécution dans le problème documenté dans cet article, vous pouvez utiliser
la procédure suivante :
1. Ouvrez regedit, accédez à la clé de Registre suivante et exportez la clé dans le fichier SSLKey.reg :
HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\<instance>\MSSQLServer\SuperSocketNetLib
WARNING
Ce fichier contient des caractères au format Unicode qui seront perdus si vous enregistrez ce fichier en tant que
fichier texte ansI. Pour conserver les informations Unicode, cliquez sur Annuler ci-dessous, puis sélectionnez l’une
des options Unicode dans la liste bas de codage. Continuer
4. Fermez le fichier SSLKey.reg et rouvrez-le à l’aide Bloc-notes.
5. Si vous voyez maintenant une marque de questions ou tout autre caractère non valide dans l’empreinte
numérique de votre certificat, cela indique que vous êtes probablement en cours d’exécution dans le
problème documenté dans cet article :
Un exemple d’entrée peut ressembler à ce qui suit :
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL
Server\MSSQL.1\MSSQLServer\SuperSocketNetLib]
« Certificate"= »?b009d02038431da332f095b4ea6a126f4f5c7d18 »
SQL Server service ne peut pas démarrer après
avoir configuré une instance pour utiliser un
certificat Secure Sockets Layer
14/08/2021 • 2 minutes to read
Cet article fournit une solution au problème qui se produit après la configuration d’un certificat SSL qui utilise
Microsoft Enhanced Cryptographic Provider 1.0.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 928779
Symptômes
Prenons le cas de figure suivant. Vous configurez une instance de SQL Server pour utiliser un certificat SSL. Le
certificat SSL utilise le fournisseur de chiffrement amélioré 1.0. Dans ce scénario, le service SQL Server ne peut
pas démarrer. En outre, lorsque vous essayez de démarrer le service SQL Server, les messages d’erreur suivants
sont écrits dans SQL Server fichier Errorlog :
Message d’erreur 1
Ser veur d’heure de date impossible de charger le certificat spécifié par l’utilisateur. Le serveur
n’accepte pas de connexion. Vous devez vérifier que le certificat est correctement installé. Voir «
Configuring Certificate for Use by SSL » dans Books Online.
Message d’erreur 2
Message d’erreur 3
Échec de l’initialisation de Date Time Server TDSSNIClient avec erreur 0x80092004, code d’état
0x80.
Message d’erreur 4
Message d’erreur 5
Échec de l’initialisation de Date Time Server TDSSNIClient avec erreur 0x80092004, code d’état 0x1.
Message d’erreur 6
Cause
Ce problème se produit car vous ne pouvez pas utiliser un certificat dont la version 1.0 du fournisseur de
services de chiffrement est Enhanced Cryptographic Provider comme certificat de serveur.
Résolution
Pour contourner ce problème, utilisez l’une des méthodes suivantes :
Ne spécifiez aucun certificat. Par conséquent, SQL Server génère un certificat auto-signé. Pour ce faire,
laissez la zone Cer tificat vide dans Gestionnaire de configuration SQL Server.
Pour plus d’informations, visitez les sites Web MSDN (Developer Network) suivants :
Configuration des protocoles réseau de serveur et des bibliothèques réseau
Chiffrement des connexions aux SQL Server
Utilisez un certificat qui utilise le fournisseur de services de chiffrement du fournisseur de chiffrement de
canal RSA pour SQL Server certificat.
Plus d’informations
Les certificats SSL qui utilisent le fournisseur de chiffrement amélioré 1.0 peuvent être utilisés pour les
certificats clients. Toutefois, les certificats ne conviennent pas en tant que certificats de serveur. Pour déterminer
le fournisseur d’un certificat, exécutez la commande à l’invite de commandes : certutil -v -store my .
Le message d’erreur suivant est mentionné dans la section Symptômes :
Échec de l’initialisation de Date Time Server TDSSNIClient avec erreur 0x80092004, code d’état 0x80.
Dans ce message d’erreur, l’état 0x80'erreur indique qu’un problème se trouve dans le certificat SSL. En outre,
0x80092004 est un code d’erreur SSPI (Security Support Provider Interface) qui se traduit par
CRYPT_E_NOT_FOUND .
Transférer des connexions et des mots de passe
entre des instances de SQL Server
18/08/2021 • 10 minutes to read
Cet article explique comment transférer les connexions et les mots de passe entre différentes instances de SQL
Server en cours d’exécution Windows.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 918992
Introduction
Cet article explique comment transférer les connexions et les mots de passe entre différentes instances de
Microsoft SQL Server.
NOTE
Les instances peuvent se faire sur le même serveur ou sur des serveurs différents, et leurs versions peuvent différer.
Plus d’informations
Dans cet article, les serveurs A et B sont des serveurs différents.
Après avoir fait passer une base de données de l’instance de SQL Server sur le serveur A vers l’instance de SQL
Server sur le serveur B, les utilisateurs risquent de ne pas pouvoir se connecter à la base de données sur le
serveur B. En outre, les utilisateurs peuvent recevoir le message d’erreur suivant :
Échec de connexion pour l’utilisateur «MyUser ». (Microsoft SQL Server, Erreur : 18456)
Ce problème se produit car vous n’avez pas transféré les connexions et les mots de passe de l’instance de SQL
Server sur le serveur A vers l’instance de SQL Server sur le serveur B.
NOTE
Le message d’erreur 18456 se produit également pour d’autres raisons. Pour plus d’informations sur ces causes et
résolutions potentielles, MSSQLSERVER_18456.
Pour transférer les connexions, utilisez l’une des méthodes suivantes, selon votre situation.
Méthode 1 : réinitialiser le mot de passe sur l’ordinateur SQL Server destination (serveur B)
Pour résoudre ce problème, réinitialisez le mot de passe SQL Server ordinateur, puis scriptez la
connexion.
NOTE
L’algorithme de hachage de mot de passe est utilisé lorsque vous réinitialisez le mot de passe.
Méthode 2 : Transférer les connexions et les mots de passe vers le serveur de destination (serveur B) à
l’aide de scripts générés sur le serveur source (serveur A)
1. Créez des procédures stockées qui vous aideront à générer les scripts nécessaires pour transférer
les connexions et leurs mots de passe. Pour ce faire, connectez-vous au serveur A en utilisant SQL
Server Management Studio (SSMS) ou tout autre outil client et exécutez le script suivant :
USE [master]
GO
IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
DROP PROCEDURE sp_hexadecimal
GO
CREATE PROCEDURE [dbo].[sp_hexadecimal]
(
@binvalue varbinary(256),
@hexvalue varchar (514) OUTPUT
)
AS
BEGIN
DECLARE @charvalue varchar (514)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF'
SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
END
go
IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
DROP PROCEDURE sp_help_revlogin
GO
CREATE PROCEDURE [dbo].[sp_help_revlogin]
(
@login_name sysname = NULL
)
AS
BEGIN
DECLARE @name SYSNAME
DECLARE @type VARCHAR (1)
DECLARE @hasaccess INT
DECLARE @denylogin INT
DECLARE @is_disabled INT
DECLARE @PWD_varbinary VARBINARY (256)
DECLARE @PWD_string VARCHAR (514)
DECLARE @SID_varbinary VARBINARY (85)
DECLARE @SID_string VARCHAR (514)
DECLARE @tmpstr VARCHAR (1024)
DECLARE @is_policy_checked VARCHAR (3)
DECLARE @is_expiration_checked VARCHAR (3)
Declare @Prefix VARCHAR(255)
DECLARE @defaultdb SYSNAME
DECLARE @tmpstrRole VARCHAR (1024)
DECLARE @tmpstrRole VARCHAR (1024)
IF (@login_name IS NULL)
BEGIN
DECLARE login_curs CURSOR
FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess,
l.denylogin
FROM sys.server_principals p
LEFT JOIN sys.syslogins l ON ( l.name = p.name )
WHERE p.type IN ( 'S', 'G', 'U' )
AND p.name <> 'sa'
ORDER BY p.name
END
ELSE
DECLARE login_curs CURSOR
FOR
SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name,
l.hasaccess, l.denylogin
FROM sys.server_principals p
LEFT JOIN sys.syslogins l ON ( l.name = p.name )
WHERE p.type IN ( 'S', 'G', 'U' )
AND p.name = @login_name
ORDER BY p.name
OPEN login_curs
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled,
@defaultdb, @hasaccess, @denylogin
IF (@@fetch_status = -1)
BEGIN
PRINT 'No login(s) found.'
CLOSE login_curs
DEALLOCATE login_curs
RETURN -1
END
SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME
+ ' */'
PRINT @tmpstr
PRINT ''
PRINT @tmpstr
SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD
= ' + @PWD_string + ' HASHED, SID = '
+ @SID_string + ', DEFAULT_DATABASE = [' +
@defaultdb + ']'
IF (@denylogin = 1)
BEGIN -- login is denied access
SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )
END
ELSE IF (@hasaccess = 0)
BEGIN -- login exists but does not have access
SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )
END
IF (@is_disabled = 1)
BEGIN -- login is disabled
SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'
END
Set @tmpstrRole=''
PRINT @tmpstr
Print @tmpstrRole
Print 'END'
END
FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled,
@defaultdb, @hasaccess, @denylogin
END
CLOSE login_curs
DEALLOCATE login_curs
RETURN 0
END
NOTE
Ce script crée deux procédures stockées dans la base de données maître. Les procédures sont nommées
sp_hexadecimal et sp_help_revlogin .
EXEC sp_help_revlogin
4. Le script de sortie généré sp_help_revlogin par la procédure stockée est le script de connexion. Ce
script de connexion crée les connexions qui ont l’identificateur de sécurité (SID) d’origine et le mot
de passe d’origine.
IMPORTANT
Examinez les informations de la section Remarques ci-dessous avant de poursuivre l’exécution des étapes d’exécution sur
le serveur de destination.
De même, une connexion qui se trouve déjà dans l’instance sur le serveur B peut avoir un SID identique à
un SID dans le script de sortie. Dans ce cas, vous recevez le message d’erreur suivant lorsque vous
exécutez le script de sortie sur l’instance sur le serveur B :
Msg 15433, Level 16, State 1, Line 1 Supplied parameter sid is in use.
Références
Résoudre les problèmes des utilisateurs orphelins
CREATE LOGIN (Transact-SQL)
ALTER LOGIN (Transact-SQL)
Utiliser des certificats au format PFX dans SQL
Server
13/08/2021 • 2 minutes to read
Cet article présente Microsoft PVKConverter pour SQL Server’outil. Cet outil prend en charge la conversion d’un
certificat qui utilise le format PFX au format PVK/DER.
Version du produit d’origine : SQL Server 2014, SQL Server 2012, SQL Server 2008, SQL Server 2005
Numéro de la ko d’origine : 2914662
Résumé
Pour utiliser des certificats au format PFX au Microsoft SQL Server, utilisez Microsoft PVKConverter pour SQL
Server pour convertir les fichiers de certificat PFX au format PVK/DER. Pour cela, procédez comme suit :
1. Téléchargez et installez l’outil suivant :
Microsoft PVKConverter pour SQL Server
2. Exécutez la commande suivante à une invite de commandes :
Cette étape traite un fichier de certificat PFX afin de générer les paires de certificats PVK/DER suivantes :
<Fichier au format PVK/DER >_1.cer
<Fichier au format PVK/DER >_2.cer et <au format PVK/DER >_2.pvk
NOTE
Le nombre de fichiers PVK/DER générés dépend du nombre de paires de clés publiques/privées contenues dans le
fichier PFX. Une paire de fichiers PVK/DER est générée pour chaque paire de clés publique/privée.
NOTE
L’espace réservé représente le mot de passe fourni par le biais de Encryption password l’option -e de
PVKConverter.exe.
Plus d’informations
SQL Server prend en charge l’importation de certificats de sécurité existants spécifiés sous la forme d’une paire
de fichiers codés au format PVK/DER. Le fichier PVK contient des informations sur la clé privée du certificat, et le
fichier DER contient les informations restantes.
Windows Le Gestionnaire de certificats prend en charge l’exportation au format PFX uniquement des certificats
existants qui contiennent des informations de clé privée Windows 2008. Windows 2008 n’a plus pris en charge
l’exportation au format PVK/DER. En revanche, SQL Server ne prend pas en charge l’importation de certificats
codés PFX. Par conséquent, il existe actuellement un problème d’interopérabilité entre Windows certificate
manager et SQL Server.
NOTE
Si le numéro de série de votre certificat est supérieur à 16 octets, consultez l’article suivant pour obtenir votre version de
SQL Server.
For Microsoft SQL Server 2014 Service Pack 1, see 3082513 FIX: TDE certificate creation fails in SQL
Server 2014 SP1 if the serial number is greater than 16 bytes.
Pour les autres versions de SQL Server, voir Not able to use PFX format certificate in SQL Server?.
S’applique à
SQL Server Développeur 2014
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise
SQL Server Web 2014
SQL Server Web 2014
SQL Server 2014 Standard
SQL Server 2014 Standard
SQL Server 2014 Express
SQL Server 2014 Express
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server Web 2012
SQL Server 2012 Standard
SQL Server 2012 Express
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Web
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Express
SQL Server 2008 Developer
SQL Server 2008 Enterprise
SQL Server 2008 Workgroup
SQL Server Web 2008
SQL Server 2008 Express
Microsoft SQL Server 2005 Êdition Entreprise
Microsoft SQL Server 2005 Workgroup Edition
Microsoft SQL Server 2005 Édition Standard
Microsoft SQL Server 2005 Express Edition
Instructions d’utilisation SQL Server 2014 en mode
conforme FIPS 140-2
15/08/2021 • 7 minutes to read
Cet article décrit les instructions pour la publication fiPS 140-2 (FIPS 140-2) et l’utilisation de Microsoft SQL
Server 2014 en mode conforme à la norme FIPS 140-2.
Version du produit d’origine : SQL Server 2014
Numéro de la ko d’origine : 3141890
NOTE
Les termes « Conformité FIPS 140-2 », « Conformité FIPS 140-2 » et « Mode conforme FIPS 140-2 » sont définis
ici pour une utilisation et une clarté. Ces termes ne sont pas reconnus ou définis par le gouvernement. Les
gouvernements des États-Unis et du Canada reconnaissent la validation des modules de chiffrement par rapport
aux normes telles que fiPS 140-2, mais pas l’utilisation de modules de chiffrement d’une manière spécifiée ou
conforme. Dans cet article, nous utilisons « conformité FIPS 140-2 », « Conformité FIPS 140-2 » et « Mode
conforme FIPS 140-2 » au sens où SQL Server 2014 utilise uniquement les instances fiPS 140-2 validées
d’algorithmes et de fonctions de hachage dans toutes les instances dans lesquelles les données chiffrées ou
hachées sont importées ou exportées à partir de SQL Server 2014. En outre, cela signifie que SQL Server 2014
gère les clés de manière sécurisée, selon les besoins des modules de chiffrement validés fiPS 140-2. Le processus
de gestion des clés inclut également la génération de clés et le stockage de clés.
Nous utilisons « certifié » ici pour signifier que l’instance de l’algorithme est validée par LA FIPS 140-2 ou que le
système d’exploitation contient des instances d’algorithmes validées par FIPS 140-2.
En outre, le message suivant peut être consigné dans le journal Windows événements suivants :
Le transport de mise en miroir de bases de données est en cours d’exécution en mode de conformité FIPS.
Vous pouvez vérifier que le serveur est en cours d’exécution en mode FIPS en cherchant ces messages.
Pour la sécurité des boîtes de dialogue (entre les services), le chiffrement utilise l’instance certifiée FIPS
d’Advanced Encryption Standard (AES) si le mode FIPS est activé. Si le mode FIPS est désactivé, le
chiffrement utilise RC4.
Lorsque vous configurez un point de terminaison du service Broker en mode FIPS, l’administrateur doit
spécifier « AES » pour le service Broker. Si le point de terminaison est configuré sur RC4, SQL Server
génère une erreur. Par conséquent, la couche de transport ne démarre pas.
Cet article présente les instructions FIPS 140-2 et explique comment utiliser SQL Server2016 en mode
conforme FIPS 140-2.
Version du produit d’origine : SQL Server 2016
Numéro de la ko d’origine : 4014354
NOTE
Les termes « Conformité FIPS 140-2 », « Conformité FIPS 140-2 » et « Mode conforme FIPS 140-2 » sont définis
ici pour une utilisation et une clarté. Ces termes ne sont pas reconnus ou définis par le gouvernement. Les
gouvernements des États-Unis et du Canada reconnaissent la validation des modules de chiffrement par rapport
aux normes telles que FIPS 140-2 au lieu d’utiliser des modules de chiffrement d’une manière spécifiée ou
conforme.
Dans cet article, Nous utilisons le mode conforme FIPS 140-2, la conformité FIPS 140-2 et le mode conforme FIPS
140-2 pour que SQL Server 2016 utilise uniquement les instances fiPS 140-2 validées d’algorithmes et de
fonctions de hachage dans toutes les instances dans lesquelles les données chiffrées ou hachées sont importées
ou exportées à partir de SQL Server 2016. En outre, cela signifie que SQL Server 2016 gérera les clés de manière
sécurisée, comme requis pour les modules de chiffrement validés par FIPS 140-2. Le processus de gestion des clés
inclut également la génération de clés et le stockage de clés.
Nous utilisons « certifié » ici pour signifier que l’instance de l’algorithme est validée PAR LA FIPS 140-2 ou que le
système d’exploitation contient des instances d’algorithmes validées par FIPS140-2.
En outre, le message suivant peut être consigné dans le journal Windows événements suivants :
Le transport de mise en miroir de bases de données est en cours d’exécution en mode de conformité FIPS.
Vous pouvez vérifier que le serveur est en cours d’exécution en mode FIPS en cherchant ces messages.
NOTE
Pour la sécurité des boîtes de dialogue (entre les services), le processus de chiffrement utilise l’instance certifiée FIPS
d’AES si le mode FIPS est activé. Si le mode FIPS est désactivé, le processus de chiffrement utilise toujours AES.
Lorsque vous configurez un point de terminaison du service Broker en mode FIPS, l’administrateur doit spécifier « AES
» pour le service Broker. Si le point de terminaison est configuré sur RC4, SQL Server génère une erreur. Par
conséquent, la couche de transport ne démarre pas.
Cet article décrit la norme FIPS 140-2 et explique comment utiliser SQL Server 2008 en mode conforme à la
norme FIPS 140-2.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 955720
Introduction
Cet article décrit les instructions FIPS (Federal Information Processing Standard) 140-2 et explique comment
utiliser Microsoft SQL Server 2008 en mode conforme FIPS 140-2.
NOTE
Les termes « FiPS 140-2-compliant », « FIPS 140-2 compliance » et « FIPS 140-2-compliant mode » sont définis ici pour
une utilisation et une clarté. Ces termes ne sont pas reconnus ou définis par le gouvernement. Les gouvernements des
États-Unis et du Canada reconnaissent la validation des modules de chiffrement par rapport aux normes telles que FIPS
140-2 et non leur utilisation d’une manière spécifiée ou conforme. Dans cet article, nous définissons « conformité FIPS
140-2 », « Conformité FIPS 140-2 » et « Mode de conformité FIPS 140-2 » pour SQL Server 2008 utilise uniquement les
instances fiPS 140-2 validées d’algorithmes et de fonctions de hachage dans toutes les instances dans lesquelles les
données chiffrées ou hachées sont importées ou exportées vers SQL Server 2008. En outre, ces termes signifient que SQL
Server 2008 gère les clés de manière sécurisée selon les besoins des modules de chiffrement validés fiPS 140-2. Le
processus de gestion des clés inclut également les fonctionnalités de génération de clés et de stockage de clés.
En outre, le message suivant peut être enregistré dans le journal des applications :
Le transport de mise en miroir de bases de données est en cours d’exécution en mode de conformité
FIPS
Pour vérifier que le serveur est en cours d’exécution en mode FIPS, recherchez ces messages.
Pour obtenir la sécurité des boîtes de dialogue entre les services, le processus de chiffrement utilise
l’instance certifiée FIPS de la norme AES (Advanced Encryption Standard) si le mode FIPS est activé. Si le
mode FIPS est désactivé, le processus de chiffrement utilise RC4.
Lorsque vous configurez un point de terminaison Service Broker en mode FIPS, vous devez spécifier AES
pour le service Broker. Si le point de terminaison est configuré sur RC4, SQL Server génère une erreur.
Par conséquent, la couche de transport ne démarre pas.
NOTE
La sélection de DESX ne fournit pas d’algorithme DESX dans SQL Server 2005 ou SQL Server 2008. Dans les deux
cas, la sélection de DESX fournit une instance validée du triple DES à trois touches.
Cet article fournit les réponses et les questions sur l’outil de diagnostic du support Microsoft (MSDT).
Version du produit d’origine : Windows
Numéro de la ko d’origine : 926079
Introduire
Cet article répond aux questions fréquemment posées sur l’utilisation de l’outil de diagnostic du support
Microsoft sur les systèmes d’exploitation suivants :
Windows XP
Windows Server 2003
Windows Vista
Windows Server 2008
L’outil de diagnostic du support Microsoft (MSDT) collecte des informations à envoyer au Support Microsoft. Le
Support Microsoft analyse ensuite ces informations et les utilise pour déterminer la résolution des problèmes
que vous pouvez être confrontés sur votre ordinateur.
Pour Windows XP et Windows Server 2003, MSDT s’exécute sur une session Internet Explorer Windows via
l’installation d’un ActiveX. Pour Windows Vista et Windows Server 2008, MSDT s’exécute à l’aide d’un outil
inbuilt nommé msdt.exe.
Plus d’informations
Il existe 9 questions et réponses comme suit :
Q1 : Comment exécuter MSDT sur un ordinateur exécutant Windows Server 2003 ou Windows XP ?
Vous pouvez exécuter MSDT sur un ordinateur exécutant Windows Server 2003 ou Windows XP de deux
manières. Si votre ordinateur dispose d’une connexion Internet, suivez les étapes suivantes :
1. Dans Internet Explorer, accédez à l’URL qui vous a été envoyée par Microsoft.
2. Dans le menu Outils , cliquez sur Options Internet .
3. Sous l’onglet Sécurité, sélectionnez l’icône Sites de confiance, puis cliquez sur Sites.
4. Ajoutez la liste d’URL suivante des sites de confiance :
https://support.microsoft.com
5. Sélectionnez Cet ordinateur rencontre le problème, puis cliquez sur Continuer.
6. Assurez-vous que le contrôle de ActiveX de diagnostic du support Microsoft est installé. Pour cela,
procédez comme suit :
a. Vérifiez la présence d’une barre jaune qui vous demande d’installer le module.
b. Cliquez sur la barre jaune, puis suivez les instructions pour installer le contrôle.
c. Assurez-vous que l’option Collecter automatiquement les données est sélectionnée, puis cliquez sur
Démarrer la collecte.
NOTE
Selon la vitesse de votre connexion Internet, vous pouvez vous attendre à un délai de 1 à 5 minutes après avoir
cliqué sur Démarrer la collecte.
7. Attendez que l’exécution du diagnostic soit terminée. (Selon le package de diagnostic en cours
d’exécution, l’exécution peut prendre plusieurs minutes.)
8. Sélectionnez l’option de téléchargement des données vers le Support Microsoft.
Si votre ordinateur n’a pas de connexion Internet, accédez à l’URL qui vous a été envoyée par Microsoft sur un
ordinateur sur lequel une connexion Internet est disponible, puis générez un package autonome que vous
pouvez exécuter sur l’ordinateur sans connexion Internet. Pour plus d’informations, voir « Q3 : Comment
exécuter MSDT sur un ordinateur sans connexion Internet ? »
Q2 : Comment exécuter MSDT sur un ordinateur exécutant Windows Vista ou Windows Server 2008 ?
Vous pouvez exécuter MSDT sur un ordinateur qui exécute Windows Vista ou Windows Server 2008 de deux
manières. Si votre ordinateur dispose d’une connexion Internet, vous pouvez exécuter MSDT directement via
Internet Explorer ou à l’aide msdt.exe'outil. Dans ce cas, accédez à l’URL qui vous a été envoyée par Microsoft,
puis suivez les instructions décrites sur la page web, soit en cliquant sur collecte de données, soit en exécutant
l’outil MSDT et en tapant la touche de passage fournie. Ensuite, suivez les instructions pour exécuter le package
de diagnostic.
Si votre ordinateur n’a pas de connexion Internet, accédez à l’URL qui vous a été envoyée par Microsoft sur un
ordinateur sur lequel une connexion Internet est disponible, puis générez un package autonome que vous
pouvez exécuter sur l’ordinateur sans connexion Internet. Pour plus d’informations, voir « Q3 : Comment
exécuter MSDT sur un ordinateur sans connexion Internet ? »
Q3 : Comment exécuter MSDT sur un ordinateur sans connexion Internet ?
Vous pouvez exécuter l’outil MSDT sur un ordinateur sans connexion Internet à l’aide d’un package exécutable
généré sur un ordinateur sur lequel une connexion Internet est disponible. Ce fichier exécutable (appelé «
package hors connexion ») peut être utilisé pour obtenir des informations de diagnostic sur tout ordinateur
exécutant Windows XP, Windows Server 2003, Windows Vista ou Windows Server 2008 et génère un fichier
CAB qui contient des données de diagnostic qui peuvent être transférées au Support Microsoft.
Pour exécuter MSDT sur un ordinateur sans connexion Internet, suivez les instructions de « Q1 : Comment
exécuter MSDT sur un ordinateur exécutant Windows Server 2003 ou Windows XP ? » ou « Q2 : Comment
exécuter MSDT sur un ordinateur exécutant Windows Vista ou Windows Server 2008 ? » en fonction du système
d’exploitation. Suivez ces instructions sur un ordinateur sur lequel une connexion Internet est disponible pour
commencer à exécuter le package de diagnostic. Une fois l’exécution du package de diagnostic démarrée, un
écran intitulé « Sélectionnez l’ordinateur qui rencontre le problème » ou « Quel ordinateur a un problème ? »
Suivez ces étapes sur l’ordinateur qui exécute le package de diagnostic.
1. Copiez le package hors connexion. Pour ce faire, suivez ces étapes, en fonction du système d’exploitation
de l’ordinateur qui exécute le package de diagnostic.
Pour Windows XP ou Windows Server 2003
a. Sélectionnez le problème sur une autre option d’ordinateur, puis cliquez sur Continuer.
b. Cliquez sur Créer un fichier.
NOTE
Vous pouvez être retardé de 1 à 5 minutes, en fonction de la vitesse de votre connexion Internet.
c. Suivez les instructions décrites sur la page web pour copier le package hors connexion (MSDT-
Portable.exe) sur l’ordinateur en cours de diagnostic.
Pour Windows Vista ou Windows Server 2008
a. Sélectionnez l’option Un autre ordinateur.
b. Dans l’écran Enregistrer les outils de diagnostic sur un média amovible, cliquez sur
Télécharger et enregistrer.
c. Indiquez où le package hors connexion (MSDT-Portable.exe) doit être enregistré.
2. Exécutez le fichier de package hors connexion (MSDT-Portable.exe) sur l’ordinateur de destination et
exécutez-le sur l’ordinateur de destination.
3. Attendez que l’exécution du package soit terminée. (Cette étape peut prendre plusieurs minutes.)
4. Une fois l’exécution du package de diagnostic terminé, cliquez sur Enregistrer les résultats, puis indiquez
un dossier dans lequel vous souhaitez enregistrer les résultats.
5. Notez que deux fichiers sont enregistrés. Un fichier est un fichier CAB qui contient les résultats de
diagnostic. L’autre fichier est un raccourci (.lnk). Déplacez les deux fichiers vers un ordinateur sur lequel
une connexion Internet est disponible.
6. Sur un ordinateur qui dispose d’une connexion Internet, double-cliquez sur le fichier de raccourci, puis
suivez les instructions pour renvoyer le fichier résultant au Support Microsoft.
Q4 : MSDT modifie -t-il ma configuration système ?
MSDT peut modifier la configuration de l’ordinateur. Par exemple, MSDT peut activer la journalisation liée au
débogage, puis vous obliger à reproduire le problème que vous rencontrez. Une partie de cette journalisation
peut être activée jusqu’à ce que le package de diagnostic télécharge les informations de dépannage au Support
Microsoft. MSDT peut également activer les diagnostics qui collectent des informations supplémentaires sur le
problème. En outre, MSDT peut installer des packages d’exécution qui peuvent exécuter certains packages de
diagnostic tels que Windows PowerShell ou microsoft .NET Framework. Toutes les configurations modifiées par
MSDT ne sont pas reconnexées à la fin de l’exécution du package. En particulier, pour les scénarios dans lesquels
un package d’Windows PowerShell est installé, il peut être conservé sur l’ordinateur.
Q5 : Quels composants et fichiers restent sur l’ordinateur une fois que MSDT a chargé des fichiers vers
Microsoft ?
Si vous exécutez Windows XP ou Windows Server 2003, une Msdcode.dll DLL reste sur l’ordinateur. Ce fichier
est un contrôle ActiveX qui est utilisé pour transférer en toute sécurité des fichiers et des utilitaires de diagnostic
de Microsoft et pour télécharger des informations vers Microsoft. Ce fichier est stocké dans le dossier
%windir%\Downloaded Program Files.
Tous les fichiers créés par MSDT lors de l’exécution du diagnostic lorsque MSDT s’exécute dans Windows XP ou
Windows Server 2003 sont stockés dans un dossier nommé %temp% odc pendant le processus de collecte de
données, mais qui est supprimé après l’envoi des résultats à ~ Microsoft. Ces fichiers sont également supprimés
si vous arrêtez la collecte de données ou sélectionnez l’option Non, n’envoyez pas les fichiers à l’option
Microsoft sur l’écran Envoyer des fichiers à Microsoft.
Si vous exécutez Windows Vista ou Windows Server 2008, tous les fichiers créés par MSDT lors de l’exécution
du package de diagnostic sont stockés dans un dossier nommé %temp%\MSDT_< GUID > (où l'> GUID
d’espace réservé < représente un dossier qui représente un GUID pour l’exécution) et supprimé après l’envoi des
résultats à Microsoft. Ces fichiers sont également supprimés si vous arrêtez la collecte de données ou
sélectionnez l’option Non, n’envoyez pas les fichiers à l’option Microsoft sur l’écran Envoyer des fichiers à
Microsoft.
En outre, comme décrit dans « Q4 : MSDT modifie-t-il ma configuration système ? » certains composants au
moment de l’Windows PowerShell et d’autres packages peuvent rester sur l’ordinateur. Certains packages de
diagnostic peuvent également activer le suivi ou des journaux spécifiques qui peuvent rester activés sur
l’ordinateur jusqu’à ce que les informations de dépannage soient téléchargées vers le Support Microsoft.
Q6 : MSDT modifiera-t-il la stratégie Windows PowerShell’exécution ?
Certains packages de diagnostic peuvent modifier temporairement Windows PowerShell stratégie d’exécution
de script sur RemoteSigned », puis revenir à la configuration d’origine après avoir collecté des informations. La
stratégie peut rester « RemoteSigned » si vous annulez l’exécution des diagnostics avant la fin de l’exécution du
package.
Q7 : MSDT s’exécute -t-il correctement sur une version localisée du Windows d’exploitation ?
MSDT s’exécute correctement sur les versions localisées de Windows. Toutefois, seules certaines descriptions de
contenu sont localisées. Par conséquent, certaines parties de l’interface utilisateur apparaissent en anglais.
Q8 : Comment démarrez-vous MSDT sur une installation server core de Windows Server 2008 ?
Une installation server core de Windows Server 2008 n’a pas de fonctionnalité de navigateur. Par conséquent,
vous devez démarrer MSDT manuellement. Tant que l’ordinateur Windows Server 2008 Server Core a accès à
Internet, vous pouvez suivre ces étapes pour exécuter MSDT et collecter des informations de diagnostic à partir
de l’ordinateur :
1. À l’invite de commandes, tapez Msdt.exe, puis appuyez sur Entrée.
2. Tapez votre touche de passe, puis cliquez sur OK.
NOTE
Pour obtenir la valeur de la clé de passage, ouvrez le lien URL dans un message électronique sur un système Windows
Vista ou Windows Server 2008 qui dispose d’un accès Internet, puis notez la valeur de la clé de passe à 10 chiffres.
Q9 : Quelles URL doivent être configurées sur un pare -feu ou un proxy pour qu’un package de diagnostic
s’exécute dans Windows XP, Windows Server 2003, Windows Vista ou Windows Server 2008 ?
Les URL suivantes sont accessibles lorsque vous exécutez un package de diagnostic :
Hello de DCUpload sur CO1 02
Hello à partir de DCodeWS sur CO1 02
Cet article décrit les informations collectées par le SQL Server Connectivity Diagnostics Collector.
Version du produit d’origine : SQL Server 2012, SQL Server 2008, SQL Server 2008 R2, SQL Server 2005
Numéro de la ko d’origine : 2871695
Résumé
Le collecteur de diagnostics de connectivité Microsoft SQL Server pour Windows Server 2003 R2, Windows
Vista, Windows Server 2008, Windows Server 2008 R2, Windows 7, Windows 8, Windows 8.1, Windows Server
2012 et Windows Server 2012 R2 collecte des informations de diagnostic utiles pour résoudre une grande
classe de problèmes de connectivité avec SQL Server. Le SQL Server Connectivity Diagnostics Collector collecte
également des informations de diagnostic limitées pour SQL Server Analysis Services.
Le SQL Server Connectivity Diagnostics Collector prend en charge les versions suivantes de SQL Server :
SQL Server 2005
SQL Server 2008
SQL Server 2008 R2
SQL Server 2012
Logiciels prérequis
Il existe différentes conditions préalables pour exécuter des packages de diagnostic, en fonction du système
d’exploitation de l’ordinateur de destination. Le diagnostic vérifie automatiquement si ces conditions préalables
sont requises sur votre ordinateur et commence à s’exécuter s’ils sont déjà installés. Sinon, vous êtes invité à
installer les conditions préalables si elles ne sont pas déjà disponibles sur l’ordinateur. Le service de dépannage
automatisé de Microsoft (MATS) peut également installer les logiciels requis pour vous. Par exemple, si Windows
PowerShell n’est pas présent sur l’ordinateur de destination, MATS l’installe automatiquement. Pour plus
d’informations, consultez les informations sur les services de dépannage automatisés de Microsoft et la
plateforme de diagnostic du support technique.
Informations collectées
Informations générales
Journal système
NOTE
Le SQL Server connectivity Diagnostics Collector collecte les événements des 15 derniers jours.
Journal système aux formats TXT, CSV et EVT ou EVTX <COMPUTER_NAME>_ evt_System.csv
<COMPUTER_NAME>_ evt_System.txt
<COMPUTER_NAME>_ evt_System.evt ou
<COMPUTER_NAME>_ evt_System.evtx
Informations sur tous les ser vices installés sur l’ordinateur de destination
Informations sur tous les processus et détails du pilote en cours d’exécution, ainsi que leurs
versions de fichiers
%windir%\system32\drivers\*.* <COMPUTER_NAME>_sym_Drivers.csv
%windir%\system32\drivers\*.* <COMPUTER_NAME>_sym_Drivers.txt
HKLM\System\CurrentControlSet\SessionManagers <COMPUTER_NAME>_CurrentControlSet_Reg.txt
HKLM\SYSTEM\CurrentControlSet\Control\Lsa <COMPUTER_NAME>_CurrentControlSet_Reg.txt
HKLM\SYSTEM\CurrentControlSet <COMPUTER_NAME>_CurrentControlSet_Reg.hiv
DESC RIP T IO N N O M DE F IC H IER
HKLM\SOFTWARE\Microsoft\MSSQLServer <COMPUTER_NAME>_REG_SQL.txt
HKLM\Software\Microsoft\MSFTESQLInstMap <COMPUTER_NAME>_REG_SQL.txt
HKLM\SOFTWARE\Microsoft\SNAC <COMPUTER_NAME>_REG_SQL.txt
HKLM\SOFTWARE\Microsoft\SQLXML4 <COMPUTER_NAME>_REG_SQL.txt
HKLM\Software\Microsoft\Vsa <COMPUTER_NAME>_REG_SQL.txt
HKLM\SOFTWARE\ODBC <COMPUTER_NAME>_REG_SQL.txt
HKLM\SOFTWARE\Microsoft\MSDTS <COMPUTER_NAME>_REG_SQL.txt
HKLM\SOFTWARE\Microsoft\MSXML60 <COMPUTER_NAME>_REG_SQL.txt
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
SQL Server
HKLM\SOFTWARE\Wow6432Node\Microsoft\MSSQLServer <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
SQL Server 2005 Redist
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
SQL Native Client
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
SQL Native Client 10.0
HKLM\SOFTWARE\Wow6432Node\Microsoft\SNAC <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
HKLM\SOFTWARE\Wow6432Node\Microsoft\SQLXML4 <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
HKLM\Software\Wow6432Node\Microsoft\Vsa <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
DESC RIP T IO N N O M DE F IC H IER
HKLM\SOFTWARE\Wow6432Node\ODBC <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
HKLM\SOFTWARE\Wow6432Node\Microsoft\MSDTS <COMPUTER_NAME>_Wow6432Node_REG_SQL.txt
Windows de pare-feu
HKLM\SOFTWARE\Policies\Microsoft\WindowsFirewall <COMPUTER_NAME>Firewall_reg.txt
HKLM\SYSTEM\CurrentControlSet\Services\BFE <COMPUTER_NAME>Firewall_reg.txt
HKLM\SYSTEM\CurrentControlSet\Services\IKEEXT <COMPUTER_NAME>Firewall_reg.txt
HKLM\SYSTEM\CurrentControlSet\Services\MpsSvc <COMPUTER_NAME>Firewall_reg.txt
HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess <COMPUTER_NAME>Firewall_reg.txt
Configuration réseau de ser veur de toutes les instances de SQL Ser ver sur l’ordinateur de
destination
Propriétés Active Director y et SSN des comptes SQL Ser ver ser vice sur l’ordinateur de
destination
Collecte les SQL Server des erreurs pour toutes les Instance nommée :
instances installées sur l’ordinateur sur lequel l’outil de <COMPUTER_NAME>_<INSTANCE_NAME>_1033_ERRO
diagnostic est exécuté. RLOG[.n]
NOTE
Lorsque le collecteur de diagnostics de connectivité SQL Server est exécuté sur un cluster de percevoir le cluster
de Windows, les journaux d’erreurs SQL Server sont collectés uniquement s’ils sont stockés sur un lecteur «
propriétaire » et « en ligne » vers le nœud du cluster de destination.
NOTE
Lorsque le collecteur de diagnostics de connectivité SQL Server est exécuté sur un cluster de percepteur de
percepteur de données de Windows, les journaux de l’agent SQL Server sont collectés uniquement s’ils sont
stockés sur un lecteur « propriétaire » et « en ligne » vers le nœud du cluster de destination.
NOTE
Tous les fichiers d’une instance donnée sont compressés dans une archive zip avant d’être collectés.
NOTE
Lorsque le collecteur de diagnostics de connectivité SQL Server est exécuté sur un cluster de failover Windows, les
fichiers minidump SQL Server sont collectés uniquement s’ils sont stockés sur un lecteur « propriétaire » et « en
ligne » sur le nœud de cluster de destination.
NOTE
Lorsque le collecteur de diagnostics de connectivité SQL Server est exécuté sur un cluster de percepteur de
diagnostics de connectivité Windows, les journaux d’état AlwaysOn SQL Server sont collectés uniquement s’ils
sont stockés sur un lecteur « propriétaire » et « en ligne » vers le nœud du cluster de destination.
NOTE
Les SQL Server d’état du cluster de percevoir sont collectés uniquement s’ils sont stockés sur un lecteur «
propriétaire » et « en ligne » sur le nœud du cluster de destination.
NOTE
Lorsque le collecteur de diagnostics de connectivité SQL Server est exécuté sur un cluster de percepteur de
percepteur de Windows, les journaux d’état du système par défaut SQL Server sont collectés uniquement s’ils sont
stockés sur un lecteur « propriétaire » et « en ligne » sur le nœud du cluster de destination.
S’applique à
SQL Server 2012 Business Intelligence
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Parallel Data Warehouse
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
SQL Server 2008 Developer
SQL Server 2008 Enterprise
SQL Server 2008 Express
SQL Server 2008 Standard
SQL Server 2008 Édition Standard for Small Business
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2008 Express avec services avancés
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 Parallel Data Warehouse
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server 2005 Developer Edition
SQL Server 2005 Enterprise Edition
SQL Server 2005 Enterprise X64 Edition
SQL Server Version d’évaluation 2005
SQL Server 2005 Express Edition
SQL Server 2005 Express Edition services avancés
SQL Server 2005 Édition Standard
SQL Server 2005 Standard X64 Edition
SQL Server 2005 Workgroup Edition
Déterminer le niveau de version, d’édition et de
mise à jour SQL Server et ses composants
15/08/2021 • 33 minutes to read
Cet article répertorie les différentes builds ou mises à jour disponibles pour différentes versions de SQL Server
et décrit les procédures pour déterminer la version de SQL Server qui s’exécute sur un système donné.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 321185
Résumé
Une version téléchargeable d’un Excel qui contient toutes les versions de build ainsi que leur phase de
cycle de vie de support actuelle pour la version actuelle de 2005 à 2005 est disponible. Cliquez pour
télécharger ce fichier Excel maintenant. (Nom de fichier : SQL Server builds V3.xlsx)
Pour savoir à quoi un numéro de version spécifique de SQL Server est mapré ou pour trouver les
informations de l’article de la Base de données de la base de données pour un package de mise à jour
cumulative spécifique ou un Service Pack, recherchez le numéro de version dans les tableaux de la liste
version complète SQL Server.
Pour trouver l’édition de votre instance SQL Server, vous pouvez utiliser l’une des procédures de la
méthode 2 à la méthode 5 de la section Déterminer la version et l’édition de SQL Server Moteur de base
de données en cours d’exécution.
NOTE
Les informations de version et d’édition sont dans la même chaîne de sortie.
NOTE
Pour plus d’informations SQL Server le cycle de vie du support technique, consultez la page Microsoft SQL Server
le cycle de vie du support technique.
SQL Server 2019 Néant GDR CU12 pour 2019 SQL Server SQL Server 2019
(15.0.2080.9 - (15.0.4153.1 - builds 2019
Janvier 2021) Août 2021)
CU8 + GDR
(15.0.4083.2 -
Janvier 2021)
DERN IÈRE M ISE IN F O RM AT IO N S
DERN IER À JO UR C O M P L ÈT ES SUR IN ST RUC T IO N S
VERSIO N SERVIC E PA C K DERN IÈRE GDR C UM UL AT IVE L A VERSIO N GÉN ÉRA L ES
SQL Server 2017 Néant GDR CU25 SQL Server SQL Server 2017
(14.0.2037.2 - (14.0.3401.7 - builds 2017
Janvier 2021) Juillet 2021)
CU22 + GDR
(14.0.3370.1 -
Janvier 2021)
SQL Server 2016 SP2 (13.0.5026.0 GDR pour SP2 CU17 pour 2016 SQL Server 2016 SQL Server 2016
- Avril 2018) (13.0.5103.6 - SP2
SP1 (13.0.4001.0 Janvier 2021) (13.0.5888.11 -
- Novembre GDR pour SP1 Mars 2021)
2016) (13.0.4259.0 - CU15 + GDR
Juillet 2019) pour SP2
GDR pour rtm (13.0.5865.1 -
(13.0.1745.2 - Janvier 2021)
Janvier 2018) CU15 + GDR
pour SP1
(13.0.4604.0 -
Juillet 2019)
CU15 pour SP1
(13.0.4574.0 -
mai 2019)
CU14 pour SP2
(13.0.5830.85-
Août 2020)
CU9 pour RTM
(13.0.2216.0 -
Novembre 2017)
SQL Server 2014 SP3 (12.0.6024.0 GDR pour SP3 CU4 + GDR SQL Server 2014 SQL Server 2014
- Octobre 2018) (12.0.6164.21 - pour SP3
SP2 (12.0.5000.0 Janvier 2021) (12.0.6433.1 -
- Juillet 2016) GDR pour SP2 Janvier 2021)
SP1 (12.0.4100.1 (12.0.5223.6 - CU4 pour SP3
- Mai 2015) Janvier 2019) (12.0.6329.1 -
GDR pour SP1 Juillet 2019)
(août 2017) CU18 pour SP2
MS 15-058 (12.0.5687.1 -
(juillet 2015) Juillet 2019)
CU13 pour SP1
(12.0.4522.0 -
Août 2017)
SQL Server 2012 SP4 (11.0.7001.0 GDR pour SP4 CU10 pour SP3 SQL Server 2012 SQL Server 2012
- Septembre (11.0.7507.2 - (11.0.6607.3 -
2017) Janvier 2021) Août 2017)
SP3 (11.0.6020.0 GDR pour SP3 CU16 pour SP2
- Novembre (janvier 2018) (11.0.5678.0 -
2015) MS 16-136 Janvier 2017)
SP2 (11.0.5058.0 (novembre CU16 pour SP1
- Juin 2014) 2016) (11.0.3487.0 -
SP1 MS 15-058 mai 2015)
(11.0.3000.00 - (décembre 2015)
Novembre 2012
DERN IÈRE M ISE IN F O RM AT IO N S
DERN IER À JO UR C O M P L ÈT ES SUR IN ST RUC T IO N S
VERSIO N SERVIC E PA C K DERN IÈRE GDR C UM UL AT IVE L A VERSIO N GÉN ÉRA L ES
SQL Server 2008 SP3 GDR pour SP3 Néant SQL Server SQL Server 2008
R2 (10.50.6000.34 - (janvier 2018) builds 2008 R2 R2 SP3
Septembre MS 15-058 Installation
2014) (juillet 2015)
SP2
(10.50.4000.0 -
Juillet 2012)
SQL Server 2008 SP4 GDR pour SP4 Néant SQL Server SQL Server
(10.0.6000.29 - (janvier 2018) builds 2008 maintenance
Septembre MS 15-058 2008
2014) (juillet 2015)
SP3
(10.00.5500.00 -
Octobre 2011)
NOTE
« Latest » = During the past 12 months
2011-03-27 22:31:33.50 Server Microsoft SQL Server 2008 (SP1) - 10.0.2531.0 (X64)
March 29 2009 10:11:52
Copyright (c) 1988-2008 Microsoft Corporation
Express Edition (64-bit)
on Windows NT 6.1 <X64> (Build 7600: )
Cette entrée fournit toutes les informations nécessaires sur le produit, telles que la version, le niveau de
produit, la version 64 bits ou 32 bits, l’édition de SQL Server et la version du système d’exploitation sur
laquelle SQL Server est en cours d’exécution.
NOTE
La sortie de cette requête a été améliorée pour afficher des informations supplémentaires, comme décrit dans
l’article de billet de blog, quelle version de SQL Server utilisez-vous ?, pour les versions suivantes :
SQL Server 2014 RTM CU10 et versions ultérieures
SQL Server 2014 Service Pack 1 CU3 et versions ultérieures
SQL Server 2012 Service Pack 2 CU7 et versions ultérieures
Select @@version
NOTE
La sortie de cette requête a été améliorée pour afficher des informations supplémentaires. Cela est documenté
dans l’article de billet de blog, quelle version de SQL Server utilisez-vous ?, pour les versions suivantes :
SQL Server 2014 RTM CU10 et versions ultérieures
SQL Server 2014 Service Pack 1 CU3 et versions ultérieures
SQL Server 2012 Service Pack 2 CU7 et versions ultérieures
Méthode 4 : Connecter à l’instance de SQL Server, puis exécutez la requête suivante dans SQL Server
Management Studio (SSMS) :
NOTE
Cette requête fonctionne pour toute instance de SQL Server 2000 ou une version ultérieure.
NOTE
La fonction SERVERPROPERTY renvoie des propriétés individuelles liées aux informations de version, bien
que la fonction @ combine la sortie @VERSION en une seule chaîne. Si votre application nécessite des
chaînes de propriétés individuelles, vous pouvez utiliser la fonction SERVERPROPERTY pour les renvoyer au
lieu d’avoir à les utiliser comme résultats @ @VERSION .
Cette méthode fonctionne également pour les instances SQL Azure base de données. Pour plus
d’informations, voir la rubrique suivante dans SQL Server Books Online SERVERPROPERTY (Transact-SQL).
Depuis SQL Server 2014 RTM Cumulative Update 10 et SQL Server 2014 Service Pack 1 Cumulative
Update 3, des propriétés supplémentaires ont été ajoutées à l’instruction ServerProperty. Pour une liste
complète de révision SERVERPROPERTY (Transact-SQL).
Méthode 5 : À compter SQL Server 2008, vous pouvez également utiliser le rapport de découverte des
fonctionnalités SQL Server installées. Vous pouvez trouver ce rapport en localisant la page Outils du
centre d SQL Server d’installation. Cet outil fournit des informations sur toutes les instances de SQL
Server qui sont installées sur le système. Il s’agit notamment des outils clients tels que SQL Server
Management Studio. La seule chose à savoir est que cet outil peut être exécuté localement uniquement
sur le système sur lequel SQL serveur est installé. Elle ne peut pas être utilisée pour obtenir des
informations sur les serveurs distants. Pour plus d’informations, voir Valider SQL Server installation.
Voici un instantané d’un exemple de rapport :
Pour plus d’informations sur la vérification des versions de build Analysis Services, vérifiez la version de
build de mise à jour cumulative Analysis Services.
SQL Server réplication
Étant donné que les agents de réplication peuvent être installés sur plusieurs ordinateurs différents, il est
important de vérifier les versions installées sur tous les ordinateurs concernés.
Par exemple, l’agent de distribution dans la réplication transactionnelle ou pair à pair peut exister sur des
ordinateurs qui diffèrent de l’instance d’éditeur de SQL Server et qui peuvent exister sur les différentes
instances d’abonné de SQL Server dans un abonnement pull.
Si vous utilisez la synchronisation Web pour la réplication de fusion, il se peut que le serveur web IIS ne soit pas
le même ordinateur que l’ordinateur qui exécute SQL Server. Par conséquent, vous avez des fichiers d’agent de
réplication qui sont installés sur le serveur web IIS. De plus, vous de devez vérifier la version de ces fichiers .dll
dans le répertoire virtuel IIS et les mettre à jour de manière explicite pour obtenir les derniers Service Packs,
mises à jour cumulatives et correctifs logiciels pour vos agents web.
Pour plus d’informations, voir Mise à niveau ou correction des bases de données répliquées.
NOTE
Chacune de ces méthodes peut indiquer que la version du composant de recherche en texte intégral est rtm ou une
version antérieure à la version actuelle du composant de base de données. Nous reconnaissez qu’il s’agit d’un problème et
nous travaillons à sa résolution dans une prochaine mise à jour.
Pour SQL Server 2008, ce fichier se trouve généralement dans le dossier suivant :
%ProgramFiles%\Microsoft SQL Server\MSQL10.\<Instance Name>\MSSQL
Dans cet exemple d’entrée, la troisième ligne (Patchlevel) indique la version actuelle du composant de
recherche en texte intégral qui est installé, et la quatrième ligne (Version) affiche généralement la version
d’origine de la recherche en texte intégral qui est installée. Dans ce cas, il s’agit SQL Server 2008 R2.
Méthode 3 : Utilisez le fichierSummary.txt créé lors de l’installation. Pour SQL Server 2008 R2 et
versions ultérieures, ce fichier se trouve dans le dossier suivant :
%ProgramFiles%\Microsoft SQL Server\<nnn>\Setup Bootstrap\LOG\Summary.txt
Pour les valeurs qui correspondent à votre version examiner les emplacements de fichiers pour les
instances par défaut et <nnn> nommées de SQL Server.
Pour SQL Server 2008, ce fichier se trouve dans le dossier suivant :
%ProgramFiles%\Microsoft SQL Server\100\Setup Bootstrap\LOG\Summary.txt
Vous pouvez vérifier la version du produit et la version de schéma installées à l’aide de la requête suivante dans
MDS catalogue :
Pour déterminer la version de SQL Server Native Client, utilisez l’une des méthodes suivantes :
Méthode 1 : Sur le système où vous souhaitez trouver la version de Client natif, démarrez
l’administrateur ODBC (odbcad32.exe), puis vérifiez la colonne Version sous l’onglet Pilotes.
Méthode 2 : Vérifiez les clés PatchLevel ou Version suivantes aux emplacements de Registre suivants.
SQ L VERSIO N /
SQ L SERVER N AT IVE C L IEN T VERSIO N SO US- C L ÉS DE REGIST RE
SQL Server 2012, SQL Server 2014 et SQL Server 2016/ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft
SQL Server Native Client 11.0 SQL Server\SQLNCLI11\CurrentVersion
SQL Azure
Pour trouver la version de votre instance de SQL Azure et les informations connexes, consultez la rubrique
suivante dans Books Online : SERVERPROPERTY (Transact-SQL).
SQL Server CE
Pour trouver la version de votre instance de SQL Server CE et les informations connexes, voir SQL Server
documentation sur les versions précédentesde CE.
PolyBase
PolyBase pour SQL Server sur Windows
Pour trouver la version de PolyBase et ses fonctionnalités associées dans Windows, essayez les méthodes
suivantes :
Si le service PolyBase est en cours d’exécution, exécutez le script PowerShell suivant :
Get-Process mpdwsvc -FileVersionInfo | Format-Table -AutoSize
Si le service PolyBase n’est pas en cours d’exécution ou ne peut pas être démarré, exécutez le script
PowerShell suivant :
Pour trouver la version de PolyBase installée et ses fonctionnalités connexes dans RHEL, essayez les méthodes
suivantes :
Windows ou Linux
Vous pouvez également essayer les étapes SQL Server du programme d’installation dans cette section suivante.
Pour trouver la version de PolyBase et ses fonctionnalités connexes, reportez-vous à un nouveau rapport de
découverte qui s’exécute dans SQL Server outils d’installation.
Dans Windows ou Linux, recherchez le dossier d’installation \Setup Bootstrap\Log. Le Summary.txt affiche un
rapport de découverte de toutes les fonctionnalités et versions. Toutefois, si l’action de configuration la plus
récente a été d’ajouter PolyBase à une instance SQL Server existante, le fichier Summary.txt ne contient pas la
fonctionnalité PolyBase. Cela est dû au fait que le rapport de découverte s’est exécuté avant l’ajout de la
fonctionnalité PolyBase.
Nous vous recommandons d’actualiser le rapport Summary.txt en exécutant le rapport de découverte des
fonctionnalités à partir SQL Server le programme d’installation. Pour plus d’informations, voir Valider SQL
Server installation.
Le numéro de version de la version du package d’extensibilité mssql-server est la version SQL Server de la
fonctionnalité Machine Learning Services.
Le numéro de version du fichier mssql-mlservices-packages-r ou mssql-mlservices-packages-py fait référence à
chaque fichier de package de langue. Pour plus d’informations, voir Install SQL Server Machine Learning
Services on Linux (Offline installation).
9.00.2047 SP1
9.00.1399 RTM
8.00.818 (821277)
Cet article décrit la stratégie de support Microsoft lorsque vous utilisez des déviations tierces avec des SQL
Server et des problèmes qui peuvent se produire lorsque vous les utilisez.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 920925
Résumé
Le support Microsoft a rencontré de nombreux produits tiers qui utilisent des déviations pour fournir des
fonctionnalités supplémentaires aux SQL Server. Il s’agit généralement de fonctionnalités d’audit. Il n’existe
aucun processus de certification pour les déviations tierces pour les applications Microsoft. Par conséquent, en
règle générale, Microsoft déconseille fortement d’utiliser les déviations.
Les fonctionnalités qui utilisent des déviations ou des techniques similaires pour modifier le comportement des
SQL Server peuvent entraîner les problèmes suivants :
Problèmes de performances.
Résultats incorrects.
Altération du disque et de la mémoire.
Perte de SQL Server réponse.
Arrêt inattendu du processus.
Impossibilité d’utiliser des diagnostics standard, tels que fn_get_sql fonction et la DBCC INPUTBUFFER
commande.
Utilisation du processeur à 100 % et temps de récupération de base de données longs lorsque vous utilisez
des tables OLTP en mémoire dans SQL Server.
Vous pouvez rencontrer ces mêmes problèmes lorsque vous utilisez des logiciels non Microsoft tels que des
serveurs liés, des procédures étendues ou des objets COM au sein SQL Server processus. Les déviations sont
masquées en affichage DBA. Pour découvrir une déviation, vous devez utiliser les techniques décrites dans la
section Plus d’informations qui suit. Les serveurs liés, les objets COM et les procédures étendues ont une
inscription explicite et des interfaces définies.
NOTE
En raison de la nature masquée des déviations et de l’absence d’interfaces publiées, Microsoft ne fournit pas de services
de support pour les fonctionnalités tierces qui utilisent des déviations ou des techniques similaires. Le tiers est
responsable de la prise en charge de son propre code, tout comme il serait responsable de son propre serveur lié ou d’un
autre déploiement.
Il est courant, dans le cadre de la résolution des problèmes, que les services de support Microsoft vous
demandent de désactiver les travaux non essentiels et de désactiver ou de supprimer des composants tiers et
d’autres techniques similaires. Microsoft tente toujours de réduire l’encombrement du problème pendant qu’il
identifie le problème. Une fois que le problème est identifié comme non lié aux travaux ou produits tiers, ces
travaux ou produits tiers peuvent être de nouveau introduits en production.
Nous n’avons pas l’intention de découvrir une déviation, puis de considérer l’instance de SQL Server comme
non pris en compte. Microsoft reconnaît que certaines implémentations sont nécessaires. Toutefois, Microsoft
vous oblige à valider la prise en charge des déviations. Un détour d’une société fiable et fiable est sans aucun
doute différent d’une déviation inattendue utilisée par un virus. Microsoft ne justifie ni ne certifie ces produits
tiers, ni la façon dont les produits tiers interagissent avec les produits et services Microsoft. Au lieu de cela, les
fournisseurs tiers sont responsables de l’identification et de la fiabilité de leurs produits et services. Si vous avez
des questions sur les produits et services tiers, contactez le tiers applicable. Microsoft n’est pas responsable des
problèmes causés par votre utilisation de produits ou services tiers en relation avec SQL Server.
Plus d’informations
Les déviations offrent des fonctionnalités améliorées et un compromis risque/récompense. En règle générale,
lorsqu’une déviation est implémentée dans SQL Server, du code tiers est injecté dans l’espace de processus.
Cette activité peut modifier le comportement des SQL Server.
Voici quelques exemples de situations et d’effets secondaires possibles :
Les paquets de trafic réseau entrant (TDS) sont analysés et modifiés. La déviation est ajoutée à un
emplacement critique au niveau net_readdata thread de processus réseau. Même 100 cycles de
processeur à cet emplacement peuvent réduire considérablement le débit du débit par lots.
Une modification des données TDS réelles peut entraîner des problèmes de mémoire. Ce problème a
déclenché divers problèmes de stabilité SQL Server et d’altération des données. Des problèmes peuvent
entraîner une partie de la changement d’un paquet TDS et la relecture de la SQL Server. Les installations
de journalisation à ce niveau peuvent exposer des mots de passe et d’autres données sensibles SQL
Server suivi est conçu pour supprimer et sécuriser.
SQL Server routines d’SQL Server sont déviées pour modifier le comportement. Les effets secondaires
possibles sont les suivants :
Les plans d’exécution ne correspondent pas au texte de requête réel.
Une commande est envoyée une seule fois à partir du client. Toutefois, la commande est exécutée
plusieurs fois.
La sortie de suivi affiche la commande d’origine au lieu de la requête modifiée.
La DBCC INPUTBUFFER commande affiche la commande d’origine au lieu de la requête modifiée.
La fn_get_sql fonction affiche des données incorrectes. En outre, la fn_get_sql fonction est
susceptible d’être exposée à des exceptions et à des résultats incorrects. La fn_get_sql fonction est
utilisée par de nombreuses solutions d’analyse et peut entraîner des problèmes sur les solutions
d’analyse.
La planification globale du planning du mode utilisateur (UMS) et SQL Server système d’exploitation
(SQLOS) peut être interrompue. Cela entraîne la perte de SQL Server réponse, des changements de
performances et des pannes.
Les API Win32 qui fournissent des fonctionnalités de sécurité améliorées sont déviées. Selon
l’implémentation, les installations de journalisation à ce niveau peuvent exposer des mots de passe et
d’autres données sensibles. La planification globale de la SQLOS et de la ums est interrompue. Cela
entraîne la perte de SQL Server réponse et des pannes.
La modification des tables de fonctions et la redirection des fonctions SQL Server ou des API Windows ne
sont pas pris en charge dans SQL Server processus. Cela peut entraîner une instabilité et un
comportement inattendu dans la SQL Server de l’utilisateur.
L’exemple suivant montre que kernel32!GetQueuedCompletionStatus la fonction a été déviée.
MyDLL!MyGetQueuedCompletionStatus
ssnetlib!ConnectionReadAsyncWait
Dans l’assembly de la fonction, la première instruction a été remplacée GetQueuedCompletionStatus par une
instruction de saut.
0:038> u kernel32!GetQueuedCompletionStatus
kernel32!GetQueuedCompletionStatus
77e660f1 e90a9f00aa jmp 21e70000 ß This points to an address that does not appear in the loaded module list
(lm). It is injected code.
77e660f6 83ec10 sub esp,10h
L’assembly du code injecté affiche l’activité qui a été déviée et un appel au fichier MyDLL.
0:038> u 21e70000
21e70000 55 push ebp
21e70001 8bec mov ebp,esp
21e70003 51 push ecx
21e70004 8b4518 mov eax,dword ptr [ebp+18h]
21e70007 50 push eax
21e70008 8b4d14 mov ecx,dword ptr [ebp+14h]
21e7000b 51 push ecx
21e7000c 8b5510 mov edx,dword ptr [ebp+10h]
21e7000f 52 push edx
21e70010 8b450c mov eax,dword ptr [ebp+0Ch]
21e70013 50 push eax
21e70014 8b4d08 mov ecx,dword ptr [ebp+8]
21e70017 51 push ecx
21e70018 e8234d19ee call MyDLL+0x4d40 (10004d40) <- Call to the MyDLL file.
21e7001d 8945fc mov dword ptr [ebp-4],eax
21e70020 8b55fc mov edx,dword ptr [ebp-4]
Vous pouvez utiliser les outils de débogage Windows pour déterminer si des déviations sont utilisées. Pour cela,
procédez comme suit.
NOTE
Testez toujours cette méthode avant de l’essayer en production. Lorsque vous utilisez les outils de débogage pour
Windows, le processus peut se figer lorsque vous exécutez les commandes. Ce comportement peut nuire à un serveur de
production.
1. Attachez les outils de débogage Windows à SQL Server ou chargez un fichier de vidage utilisateur
complet.
2. Émettre la commande de débogger suivante. Cette commande inspecte chaque image par rapport à
l’image sur disque pour déterminer si des déviations ont été injectées.
3. Détachez le débogger.
Si l’image en mémoire a été modifiée, la sortie peut ressembler à ce qui suit :
Comparison image path: c:\program files\microsoft sql server\mssql\binn\ssnetlib.dll\ssnetlib.dll
Scanning section: .text
Size: 56488
Range to scan: 0c261000-0c26eca8
0c263710-0c26371a 11 bytes - ssnetlib!ConnectionClose
[ 8b ff 55 8b ec 83 ec 10:68 00 00 00 00 e9 27 8a ]
0c2641e0-0c2641ea 11 bytes - ssnetlib!ConnectionReadAsync (+0xad0)
[ 8b ff 55 8b ec 83 ec 38:68 00 00 00 00 e9 00 7e ]
0c265160-0c26516a 11 bytes - ssnetlib!ConnectionWriteAsync (+0xf80)
[ 8b ff 55 8b ec 83 ec 28:68 00 00 00 00 e9 ba 70 ]
Total bytes compared: 56488(100%)
Number of errors: 33
33 errors : 0c260000 (0c263710-0c26516a)
Vous pouvez examiner l’assembly pour examiner plus attentivement le problème comme suit :
0:038> u ssnetlib!ConnectionClose
ssnetlib!ConnectionClose]:
0c263710 6800000000 push 0
0c263715 e9278ada03 jmp MyDLL!MyGetQueuedCompletionStatus <- A detour has been installed.
Les programmes antivirus qui s’SQL attaques par injection peuvent faire l’SQL Server code. Dans ce scénario, la
sortie de l’extension peut montrer que le SQL Server !for_each_module "!chkimg -v @#Base -d" fonctionne et est
modifié yyparse ex_raise2 :
Comparison image path: <symbol file path>\sqlservr.exeRange to scan: c81000-3de7d48 ed71a8-ed71ad 6 bytes -
sqlservr!yyparse [ ff f5 41 54 41 55:e9 c7 95 5c 76 90 ]1202820-1202824 5 bytes - sqlservr!ex_raise2
(+0x32b678) [ ff f3 57 41 54:e9 20 e0 29 76 ] Total bytes compared: 51801416(17%)Number of errors: 11
Nous vous recommandons de contacter le fournisseur des déviations ou des techniques similaires pour obtenir
des informations détaillées sur la façon dont il utilise les déviations dans SQL Server. Pour plus d’informations
sur les déviations et les techniques similaires, voir Detours.
Fin de la prise en charge SQL Server 2008 et SQL
Server 2008 R2
15/08/2021 • 2 minutes to read
Résumé
Microsoft SQL Server 2008 et SQL Server 2008 R2 ont approche de la fin de la prise en charge étendue. À des
dates du tableau ci-dessous, il n’y aura pas d’autres dates :
Mises à jour de sécurité gratuites en local
Mises à jour non relatives à la sécurité
Options de support gratuites
Mises à jour de contenu technique en ligne
Les clients qui utilisent ces versions de SQL Server et services doivent suivre l’une des étapes suivantes :
Mettre à niveau vers la dernière version de SQL Server local.
Ré-héberger sur Azure SQL Database instance gérée, ce qui élimine la nécessité de futures mises à niveau.
Migrez vers Microsoft Azure machines virtuelles.
Cette option de machine virtuelle tire parti de trois années supplémentaires de mises à jour de
sécurité critiques sans frais supplémentaires. Les clients peuvent également se moderniser dès qu’ils
sont prêts.
Plus d’informations
Le tableau suivant concerne les produits SQL Server 2008 et SQL Server 2008 R2. Le tableau indique les dates à
laquelle chaque produit atteint ou a atteint la fin de sa prise en charge par Microsoft :
DAT ES DE F IN DE
P RO DUIT P RISE EN C H A RGE ÉT EN DUE
Nous vous recommandons de migrer vers Azure SQL DB ou de mettre à niveau vers les versions actuelles du
produit. Vous devez prendre des mesures avant les dates de fin du support. La mise à niveau vous permet de
tirer parti des dernières innovations de produit et garantit une prise en charge ininterrompue de Microsoft.
Ressources
Options de fin de support de SQL Server
Étendre la prise en charge SQL Server 2008 et SQL Server 2008 R2 avec Azure
Fin du support classique pour SQL Server 2008 et SQL Server 2008 R2, juillet 2014
SQL Server 2008 R2
documentation SQL Server 2008
Assistance à la migration avec le Centre de migration et de modernisation Azure
Le Centre de migration et de modernisation Azure dispose d’un large éventail d’outils disponibles pour vous
aider :
Évaluez votre environnement local actuel.
Migrez vos charges de travail vers Azure.
Optimisez votre utilisation d’Azure en fonction de vos besoins.
Microsoft travaille également avec de nombreux partenaires qui sont disponibles pour vous aider à chaque
étape du parcours.
Informations sur microsoft Automated
Troubleshooting Services and Support Diagnostic
Platform
13/08/2021 • 20 minutes to read
Cet article présente les questions fréquemment posées (FAQ) sur les services de dépannage automatisé
microsoft (MATS) et la plateforme de diagnostic du support technique (SDP).
Version du produit d’origine : Windows
Numéro de la ko d’origine : 2598970
Résumé
Le support Microsoft utilise MATS pour collecter des informations de diagnostic à partir d’un ordinateur
Windows, pour analyser les données collectées pour les causes racines connues et pour déterminer la résolution
correcte des problèmes trouvés. Les informations collectées peuvent également être utilisées pour effectuer
automatiquement des tâches courantes de dépannage ou résoudre automatiquement les problèmes connus sur
votre ordinateur. Les résultats des données que vous collectez peuvent être téléchargés vers le support
Microsoft.
Pour résoudre les problèmes, voir la section dépannage de ce document.
NOTE
Certains packages de diagnostic peuvent également nécessiter PowerShell 2.0 qui n’est pas installé automatiquement par
MATS. Vous pouvez télécharger PowerShell 2.0 à l’aide des liens fournis dans cet article. En outre, un package de
diagnostic peut avoir d’autres conditions préalables spécifiques à la résolution des problèmes. Par exemple, un package de
diagnostic conçu pour résoudre les problèmes Exchange Server composants peuvent nécessiter l’installation Exchange
Server sur l’ordinateur.
Conditions minimales requises pour exécuter un diagnostic sur les systèmes d’exploitation suivants
Windows XP ou Windows Server 2003
Windows XP (32 bits) requiert le Service Pack 3 ou une version ultérieure
Windows XP 64 bits et Windows Server 2003 nécessitent le Service Pack 2 ou une version ultérieure
Microsoft Core XML Services (MSXML) 6.0
Le .NET Framework 2.0, 3.0 ou 3.5 (l’installation de .NET Framework 4.0 ou version ultérieure n’installe
pas la configuration nécessaire pour ces versions de Windows)
Windows PowerShell 1.0 ou 2.0 (Windows PowerShell 2.0 fait partie de Windows Management
Framework)
NOTE
Le diagnostic installe automatiquement PowerShell 1.0 pour vous. Toutefois, si 2.0 est nécessaire, vous devez
l’installer manuellement vous-même.
Windows Vista ou Windows Server 2008
Windows PowerShell 1.0 ou 2.0 (Windows PowerShell 2.0 fait partie de Windows Management Framework)
NOTE
Le diagnostic installe automatiquement PowerShell 1.0 pour vous. Toutefois, si 2.0 est nécessaire, vous devez l’installer
manuellement vous-même.
NOTE
Certains packages de diagnostic sur Windows 8 peuvent nécessiter l’installation de .NET Framework 3.5.1, sur lequel
l’installation sera démarrée automatiquement la première fois que le package de diagnostic s’exécute.
NOTE
Le package Fix it est uniquement compatible avec Windows 7 et versions ultérieures. Le package sera mis à jour pour
prendre en charge les versions antérieures Windows prochainement.
Il se peut que cet Assistant ne soit disponible qu’en anglais. Toutefois, la résolution automatique fonctionne aussi pour
d'autres versions linguistiques de Windows.
Si vous n’êtes pas sur l’ordinateur qui a le problème, enregistrez la solution Résoudre le problème sur un disque
mémoire flash ou un CD, puis exécutez-la sur l’ordinateur qui a le problème.
Cet article décrit les informations qui peuvent être collectées à partir d’un ordinateur lorsque l’outil SQL RS
Diagnostics Collector est en cours d’exécution.
Version du produit d’origine : Microsoft SQL Server 2012, SQL Server 2008, SQL Server 2008 R2, SQL Server
2005
Numéro de la ko d’origine : 2773194
Résumé
Le SQL RS Diagnostics Collector pour Windows Server 2003 R2, Windows Vista, Windows Server 2008,
Windows Server 2008 R2, Windows 7, Windows 8, Windows 8.1, Windows Server 2012 et Windows Server
2012 R2 collectent des informations de diagnostic utiles pour résoudre un grand nombre de problèmes qui
impliquent le SQL Server Reporting Services (SSRS). Ce collecteur est utilisé pour collecter des informations
pour le mode natif et le mode SharePoint SSRS.
Le SQL RS Diagnostics Collector prend en charge les versions suivantes de SQL Server :
SQL Server 2005
SQL Server 2008
SQL Server 2008 R2
SQL Server 2012
Logiciels prérequis
Il existe différentes conditions préalables pour exécuter des packages de diagnostic, en fonction du système
d’exploitation de l’ordinateur de destination. Le package de diagnostic vérifie automatiquement si ces conditions
préalables sont requises sur votre ordinateur, puis démarre si les éléments prérequis sont déjà installés. Si les
conditions préalables ne sont pas déjà disponibles sur l’ordinateur, vous êtes invité à les installer. Le service de
dépannage automatisé (MATS) peut également installer les logiciels requis pour vous. Par exemple, si Windows
PowerShell n’est pas présent sur l’ordinateur de destination, MATS l’installe automatiquement. Pour plus
d’informations, consultez les informations sur les services de dépannage automatisés de Microsoft et la
plateforme de diagnostic du support technique.
Étapes impliquées
Le SQL RS Diagnostics Collector doit être exécuté manuellement sur tous les ordinateurs impliqués dans la
configuration SSRS. Par exemple, si le SSRS est un déploiement de mise à l’échelle, le collecteur de diagnostics
RS SQL doit être exécuté manuellement sur tous les ordinateurs impliqués dans la configuration de mise à
l’échelle. De même, sur un mode SharePoint intégré, le SQL RS Diagnostics Collector doit être exécuté sur
SharePoint.
SQL Server sécurité requise
Le SQL RS Diagnostics Collector découvre toutes les instances des services de rapports installés sur l’ordinateur
sur lequel l’outil de diagnostic est exécuté. Dans le cadre du processus de collecte de données, le collecteur de
diagnostics SQL RS tente de se connecter à chaque serveur de base de données de catalogue SSRS auquel les
instances SSRS se connectent, puis collecte des informations à partir de la base de données de catalogue
ReportServer. Les connexions de base de données sont réalisées à l’aide Windows’authentification unique. Pour
démarrer le collecteur de diagnostics SQL RS, vous devez avoir une Windows qui est membre du rôle serveur
fixe sysadmin.
NOTE
Le SQL RS Diagnostics Collector collecte les événements des 30 jours précédents.
Journal des événements système aux formats TXT, CSV <COMPUTER_NAME> _ evt_System.csv
et EVT ou EVTX <COMPUTER_NAME> _ evt_System.txt
<COMPUTER_NAME> _ evt_System. (evt ou evtx)
NOTE
Le SQL RS Diagnostics Collector collecte les événements des 30 jours précédents.
Collectez des informations sur les services installés sur <COMPUTER_NAME> _MiscProperties.XML
l’ordinateur de destination.
Informations provenant des journaux SSRS de toutes les instances SSRS sur l’ordinateur de
destination
Informations provenant du fichier de Repor tSer ver.Config SSRS de toutes les instances
SSRS sur l’ordinateur de destination
Informations de la configuration SSRS pour toutes les instances SSRS sur l’ordinateur de
destination
Informations provenant des informations d’exécution pour toutes les instances SSRS sur
l’ordinateur de destination
Informations de la configuration SPN pour toutes les instances SSRS sur l’ordinateur de
destination
Informations des journaux HTTP pour toutes les instances SSRS sur l’ordinateur de
destination
Collectez les journaux HTTP qui sont générés si l’attribut <COMPUTER_NAME>.<INSTANCE_NAME> _Http.log
est mis enReportserver.configSSRS.
S’applique à
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Enterprise Core
SQL Server 2012 Express
SQL Server Web 2012
SQL Server 2008 Developer
SQL Server 2008 Enterprise
SQL Server 2008 Express
SQL Server 2008 Standard
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Parallel Data Warehouse
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server 2005 Developer Edition
SQL Server 2005 Enterprise Edition
SQL Server 2005 Enterprise X64 Edition
SQL Server Version d’évaluation 2005
SQL Server 2005 Express Edition
SQL Server 2005 Édition Standard
SQL Server 2005 Standard X64 Edition
SQL Server 2005 Workgroup Edition
SQL Server Configurer l’outil de diagnostic de
collecte de données
15/08/2021 • 9 minutes to read
Cet article décrit les informations qui peuvent être collectées à partir d’un ordinateur lorsque l’outil SQL Server
de diagnostic de collecte de données du programme d’installation est en cours d’exécution.
Version du produit d’origine : SQL Server 2008
Numéro de la ko d’origine : 2621109
Résumé
Le collecteur de données d’installation SQL Server pour Windows 7, Windows Server 2008 R2, Windows 8,
Windows Server 2012, Windows 8.1 et Windows Server 2012 R2 collecte des informations de diagnostic utiles
pour résoudre les problèmes d’installation pour Microsoft SQL Server 2008, SQL Server 2008 R2 et SQL Server
2012.
SQL Server sont classées en tant que fonctionnalités d’instance ou en tant que fonctionnalités partagées.
Fonctionnalités d’instance
Les fonctionnalités d’instance sont les suivantes :
Moteur de base de données Fonctionnalités (Réplication SQL Server, recherche d’extractions de texte intégral
et sémantique, services de qualité des données)
Analysis Services
Reporting Services - Natif
Fonctionnalités partagées
Les fonctionnalités partagées sont les suivantes :
Reporting Services : SharePoint
Reporting Services Add-in for SharePoint Products
Business Intelligence Development Studio
Connectivité des outils clients
Integration Services
Compatibilité ascendante des outils clients
SDK Outils clients
SQL Server Livres en ligne
Outils de gestion - De base (outils de gestion - Complet)
SQL SDK de connectivité client
Microsoft Sync Framework
Data Quality Client
Master Data Services
Contrôleur de relecture distribuée
Client de relecture distribuée
Le SQL Server collecte de données d’installation est pris en compte dans le cluster et collecte des informations
spécifiques au cluster lorsque le collecteur de données d’installation SQL Server est exécuté sur une instance en
cluster de SQL Server. Lorsque vous dépanner un échec d’installation qui s’est produit sur un cluster Windows,
le collecteur de données d’installation SQL Server doit être exécuté sur le nœud du cluster auquel l’échec de
l’installation s’est produit. Pour résoudre plusieurs échecs d’installation sur plusieurs nœuds qui sont joints au
même cluster, le collecteur de données d’installation SQL Server doit être exécuté sur chaque nœud sur lequel
l’échec s’est produit.
Le SQL Server de données du programme d’installation doit être exécuté dans le contexte de sécurité du compte
qui a été utilisé pour exécuter le programme d’installation. En outre, le SQL Server de données du programme
d’installation doit être exécuté par un utilisateur qui dispose de droits d’administration sur l’ordinateur sur lequel
le collecteur de données sera exécuté.
Informations collectées
Tous les journaux des événements
NOTE
Les journaux d’événements de clustering de percevoir le clustering de percevoir sont collectés uniquement sur les
serveurs sur qui le clustering de failover est configuré.
Informations sur tous les ser vices installés sur le système d’exploitation
Informations sur tous les processus et détails du pilote en cours d’exécution, ainsi que leurs
versions de fichiers
NOTE
NetDiag est un outil de diagnostic qui permet d’isoler les problèmes de réseau et de connectivité en effectuent
une série de tests pour déterminer l’état du client réseau.
ComputerName _SetupApi.evt.log
ComputerName _SetupApi.offline.log
ComputerName _SetupApi.Dev.log
ComputerName _Hotfixes.Txt
ComputerName _Hotfixes.HTM
ComputerName _MSINFO32.TXT
NOTE
PStat est un outil basé sur des caractères qui répertorie tous les threads en cours d’exécution et affiche leur état.
C L É DU REGIST RE N O M DE F IC H IER
ComputerName _reg_Uninstall.TXT
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
ComputerName _reg_TimeZone.txt
HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation
HKLM\SOFTWARE\Microsoft\Windows
NT\CurrentVersion\Time Zones
ComputerName _reg_TCPIPParameters
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
NOTE
Ces informations sont collectées si l SQL Server de diagnostic de collecte de données du programme d’installation
détecte que l’ordinateur sur lequel l’outil est en cours d’exécution est un cluster.
SQL Ser ver ’erreurs pour toutes les instances de SQL Ser ver installées sur l’ordinateur
Collecte les SQL Server des erreurs pour toutes les Instance nommée :
instances installées sur l’ordinateur sur lequel l’outil de ComputerName _ instance_name _.errorlog
diagnostic est exécuté. Le nombre de fichiers collectés Instance par défaut :
est déterminé par le nombre de journaux d’erreurs ComputerName MSSQLSERVER.errorlog
existant sur le système de fichiers.
NOTE
L’outil de diagnostic de collecte de données d’installation de SQL Server collecte les journaux d’erreurs pour une
instance en cluster uniquement si le lecteur partagé qui stocke le journal des erreurs appartient actuellement au
serveur sur lequel l’utilitaire est exécuté.
Plus d’informations
Outre les fichiers collectés et répertoriés ici, cet dépanneur peut détecter une ou plusieurs des situations
suivantes :
L’ordinateur est en cours d’exécution dans un environnement virtuel.
Le service de cluster d’un nœud FailoverCluster n’est pas en cours d’exécution.
L’état d’un des nodes de cluster est hors connexion.
L’un des groupes de clusters est hors connexion.
Il existe un problème lors de l’obtention d’informations de cluster.
S’applique à
SQL Server 2008 Enterprise
SQL Server 2008 Developer
SQL Server 2008 Express
SQL Server 2008 Express avec services avancés
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2008 Standard
SQL Server 2008 Édition Standard for Small Business
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Workgroup
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Web
SQL Collecteur de diagnostics de base pour
Windows Server
13/08/2021 • 16 minutes to read
Cet article décrit les informations qui peuvent être collectées à partir d’un ordinateur lorsque l’outil SQL Base
Diagnostics Collector est en cours d’exécution.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2696886
Résumé
Le collecteur SQL diagnostics de base pour Windows Server collecte des informations de diagnostic utiles pour
résoudre un grand nombre de problèmes qui impliquent le moteur Microsoft SQL Server de diagnostic. Le
collecteur SQL diagnostics de base collecte également des informations de diagnostic limitées pour SQL Server
Analysis Services.
Le SQL de diagnostics de base prend en charge SQL Server et SQL Server Analysis Services.
Logiciels prérequis
Il existe différentes conditions préalables pour exécuter des packages de diagnostic, en fonction du système
d’exploitation de l’ordinateur cible. Le diagnostic vérifie automatiquement si ces conditions préalables sont
requises sur votre ordinateur et commence à s’exécuter s’ils sont déjà installés. Sinon, vous êtes invité à installer
les conditions préalables si elles ne sont pas déjà disponibles sur l’ordinateur. Le service de dépannage
automatisé de Microsoft (MATS) peut également installer les logiciels requis pour vous. Par exemple, si Windows
PowerShell n’est pas présent sur l’ordinateur cible, MATS l’installe automatiquement. Pour plus d’informations,
consultez les informations sur les services de dépannage automatisés de Microsoft et la plateforme de
diagnostic du support technique.
Informations collectées
Journal des événements système
NOTE
Le SQL de diagnostics de base collecte les événements des 30 derniers jours.
Journal des événements système aux formats TXT, CSV <COMPUTER_NAME>_ evt_System.csv
et EVT ou EVTX <COMPUTER_NAME>_ evt_System.txt
<COMPUTER_NAME>_ evt_System. (evt ou evtx)
NOTE
Le SQL de diagnostics de base collecte les événements des 30 derniers jours.
Fichiers journaux Dr Watson existants et Windows d’erreur signalant des vidages mémoire pour SQL
Server processus
%windir%\system32\drivers * .* <COMPUTER_NAME>_sym_Drivers.CSV
%windir%\system32\drivers * .* <COMPUTER_NAME>_sym_Drivers.TXT
%SystemRoot%\System32\iscsi . <COMPUTER_NAME>_sym_MS_iSCSI.CSV
> [!NOTE]
> collecté uniquement à partir de Windows 7, Windows
Server 2008 R2, Windows Server 2008 et Windows Vista
> [!NOTE]
> collecté uniquement à partir de Windows 7, Windows
Server 2008 R2, Windows Server 2008 et Windows Vista
Boot.ini <COMPUTER_NAME>_Boot.ini
> [!NOTE]
> collecté uniquement sur Windows Server 2003
HKLM\SOFTWARE\Microsoft\MSSQLServer <COMPUTER_NAME>_REG_SQL.TXT
HKLM\Software\Microsoft\MSFTESQLInstMap <COMPUTER_NAME>_REG_SQL.TXT
HKLM\SOFTWARE\Microsoft\SNAC <COMPUTER_NAME>_REG_SQL.TXT
HKLM\SOFTWARE\Microsoft\SQLXML4 <COMPUTER_NAME>_REG_SQL.TXT
HKLM\Software\Microsoft\Vsa <COMPUTER_NAME>_REG_SQL.TXT
DESC RIP T IO N N O M DE F IC H IER
HKLM\SOFTWARE\ODBC <COMPUTER_NAME>_REG_SQL.TXT
HKLM\SOFTWARE\Microsoft\MSDTS <COMPUTER_NAME>_REG_SQL.TXT
HKLM\SOFTWARE\Microsoft\MSXML60 <COMPUTER_NAME>_REG_SQL.TXT
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
SQL Server
HKLM\SOFTWARE\Wow6432Node\Microsoft\MSSQLSer <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
ver
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
SQL Server 2005 Redist
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
SQL Native Client
HKLM\SOFTWARE\Wow6432Node\Microsoft\Microsoft <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
SQL Native Client 10.0
HKLM\SOFTWARE\Wow6432Node\Microsoft\SNAC <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
HKLM\SOFTWARE\Wow6432Node\Microsoft\SQLXML4 <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
HKLM\Software\Wow6432Node\Microsoft\Vsa <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
HKLM\SOFTWARE\Wow6432Node\ODBC <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
HKLM\SOFTWARE\Wow6432Node\Microsoft\MSDTS <COMPUTER_NAME>_Wow6432Node_REG_SQL.TXT
Windows de pare-feu
DESC RIP T IO N N O M DE F IC H IER
HKLM\SOFTWARE\Policies\Microsoft\WindowsFirewall <COMPUTER_NAME>Firewall_reg.TXT
HKLM\SYSTEM\CurrentControlSet\Services\BFE <COMPUTER_NAME>Firewall_reg.TXT
HKLM\SYSTEM\CurrentControlSet\Services\IKEEXT <COMPUTER_NAME>Firewall_reg.TXT
HKLM\SYSTEM\CurrentControlSet\Services\MpsSvc <COMPUTER_NAME>Firewall_reg.TXT
HKLM\SYSTEM\CurrentControlSet\Services\SharedAcces <COMPUTER_NAME>Firewall_reg.TXT
s»
Informations de base collectées lorsque le collecteur SQL diagnostics de base est exécuté sur un cluster
de Windows de données
HKLM\System\CurrentControlSet\services\CluDisk <COMPUTER_NAME>_reg_ClusDisk.txt
HKLM\System\CurrentControlSet\services\ClusSvc <COMPUTER_NAME>_reg_ClusSvc.txt
HKLM\Cluster <COMPUTER_NAME>_reg_Cluster.hiv
Informations sur les stratégies de groupe Active Directory appliquées à l’ordinateur de destination
NOTE
Pour plus d’informations sur l’utilitaire d’auto-mise en service, voir Autoruns for Windows v13.98.
Informations sur la configuration du service Windows volume shadow copy sur l’ordinateur de
destination
SQL Server’erreurs
Le SQL de diagnostics de base collecte jusqu’à 20 journaux d’erreurs SQL Server pour chaque instance
découverte qui répond aux critères suivants :
La taille de chaque fichier journal d’erreurs doit être inférieure ou inférieure à 200 Mo.
La taille totale non compressée maximale de tous les fichiers journaux d’erreurs collectés ne peut pas
dépasser 250 Mo. Lorsque la limite de 250 Mo est atteinte, aucun journal d’erreur supplémentaire
n’est collecté pour l’instance de SQL Server.
DESC RIP T IO N N O M DE F IC H IER
Collecte les SQL Server des erreurs pour toutes les Instance nommée :
instances installées sur l’ordinateur sur lequel l’outil de <COMPUTER_NAME>_<INSTANCE_NAME>_1033_ERRO
diagnostic est exécuté. RLOG[.n]
NOTE
Lorsque le collecteur de diagnostics de base SQL est exécuté sur un cluster de percepteur de Windows, les
journaux d’erreurs SQL Server sont collectés uniquement s’ils sont stockés sur un lecteur « propriétaire » et « en
ligne » sur le nœud de cluster cible.
NOTE
Lorsque le collecteur de diagnostics de base SQL est exécuté sur un cluster de percepteur de Windows, les
journaux de l’agent SQL Server sont collectés uniquement s’ils sont stockés sur un lecteur « propriétaire » et « en
ligne » sur le nœud de cluster cible.
NOTE
Lorsque le collecteur de diagnostics de base SQL est exécuté sur un cluster de percevoir le cluster de Windows, les
fichiers SQL Server minidumps sont collectés uniquement s’ils sont stockés sur un lecteur « propriétaire » et « en
ligne » sur le nœud de cluster cible.
NOTE
Les SQL Server de configuration AlwaysOn sont collectées uniquement à partir SQL Server instances 2012.
NOTE
Lorsque le collecteur de diagnostics de base SQL est exécuté sur un cluster de percepteur de Windows, les
journaux d’état SQL Server AlwaysOn sont collectés uniquement s’ils sont stockés sur un lecteur « propriétaire »
et « en ligne » sur le nœud de cluster cible.
NOTE
Les SQL Server d’état du cluster de percevoir sont collectés uniquement s’ils sont stockés sur un lecteur «
propriétaire » et « en ligne » sur le nœud de cluster cible.
NOTE
Lorsque le collecteur de diagnostics de base SQL est exécuté sur un cluster de percepteur de Windows, les
journaux d’état du système par défaut SQL Server sont collectés uniquement s’ils sont stockés sur un lecteur «
propriétaire » et « en ligne » sur le nœud du cluster cible.
NOTE
Lorsque le collecteur de diagnostics de base SQL est exécuté sur un cluster de Windows de bas de commande, les
fichiers de configuration SQL Server Analysis Services sont collectés uniquement s’ils sont stockés sur un lecteur «
propriétaire » et « en ligne » sur le nœud de cluster cible.
HKCR:\MSOLAP <COMPUTER_NAME>_reg_HKCR_MSOLAP_all.txt
HKCR:\MSOLAP.2
HKCR:\MSOLAP.3
HKCR:\MSOLAP.4
HKLM:\System\CurrentControlSet\Services<OLAP_Servic <COMPUTER_NAME>_reg_HKLM_CurrentControlSet_Se
e_Name> rvices_OLAP.txt
NOTE
Tous les fichiers d’une instance donnée sont compressés dans une archive zip avant d’être collectés.
DESC RIP T IO N N O M DE F IC H IER
Cet article contient des instructions sur l’utilisation de différentes versions de Microsoft SQL Server sur un
ordinateur qui exécute Windows 8 ou une version ultérieure du système d’exploitation.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2681562
Résumé
NOTE
Sauf indication contraire, lorsqu’un système d’exploitation est pris en charge pour une version SQL majeure, il reste pris en
charge pour toutes les versions de maintenance ultérieures. Par exemple, si SQL Server 2016 RTM est pris en charge sur
Windows 10, cela implique que toutes les CUS en plus de SQL Server 2016 RTM ou SQL Server 2016 Service Pack 1 (SP1)
sont pris en charge sur Windows 10.
W IN DO
WS P L US
VERSIO N D’IN F O R
/ SQ L SQ L SQ L SQ L SQ L SQ L SQ L M AT IO N
VERSIO N SERVER SERVER SERVER 2 SQ L SER SERVER 2 SERVER SERVER 2 S/ L IM ITA
--> 2019 2017 016 VER 2014 012 2008 R2 008 T IO N S
Window Oui Oui Oui Oui Oui Non pris Non pris Informati
s 10 (RTM) (RTM) (SP2) (SP3) (SP4) en en ons
charge charge supplém
entaires
pour les
environn
ements
Windows
10 de
données
Window Oui Oui Oui Oui Oui Non pris Non pris Informati
s Server (RTM) (RTM) (SP2) (SP3) (SP4) en en ons
2019 charge charge supplém
entaires
pour
Windows
environn
ements
Server
2019
W IN DO
WS P L US
VERSIO N D’IN F O R
/ SQ L SQ L SQ L SQ L SQ L SQ L SQ L M AT IO N
VERSIO N SERVER SERVER SERVER 2 SQ L SER SERVER 2 SERVER SERVER 2 S/ L IM ITA
--> 2019 2017 016 VER 2014 012 2008 R2 008 T IO N S
Window Oui Oui Oui Oui Oui Non pris Non pris Informati
s Server (RTM) (RTM) (SP2) (SP3) (SP4) en en ons
2016 charge charge supplém
entaires
pour les
environn
ements
Windows
Server
2016 de
données
2. Pour trouver des réponses aux questions suivantes, examinez le lien correspondant sous la page
Configuration matérielle et logicielle requise.
Quelles éditions de SQL Server sont compatibles avec quelles versions de Windows ?
Quelles sont les .NET Framework requises pour ma version SQL client ?
3. Utilisez la colonne Informations supplémentaires/Limitations dans le tableau ci-dessus pour trouver des
informations supplémentaires sur l’exécution SQL serveur sur le système d’exploitation spécifique.
Par exemple, si vous souhaitez installer SQL Server 2016 Developer Edition sur Windows 10 Professional
:
a. Vérifiez si SQL Server 2016 est pris en charge sur Windows 10. La valeur correspondante dans le
tableau ci-dessus est Oui (SP2).
Oui indique que la SQL Server 2016 sur Windows 10 est prise en charge.
(SP2) indique que SQL Server 2016 doit être mis à jour vers au moins SP2 pour être pris
en charge sur Windows 10.
b. La page Configuration matérielle et logicielle requise pour SQL 2016 confirme que SQL Server
Édition Développeur 2016 est prise en charge sur Windows 10 Professional.
c. La colonne Plus d’informations/limitations Windows Server 2016 n’appelle aucun problème
connu supplémentaire pour cette configuration.
NOTE
Veillez à vérifier les problèmes d’installation connus lorsque vous installez SQL Server 2012 sur Windows 10 ou
Windows Server 2016.
La rubrique Books Online Hardware and Software Requirements for Installing SQL Ser ver 2012 has
not yet been updated to reflect the support for Windows Server 2016.
NOTE
Vérifiez les problèmes d’installation connus lorsque vous installez SQL Server 2012 sur Windows 8 ou Windows
Server 2012.
NOTE
L’installation RTM du produit est prise en charge. Toutefois, vous devez installer les Service Packs respectifs une
fois l’installation initiale terminée. Votre installation SQL Server 2008 n’est pas prise en charge, sauf si vous
appliquez le Service Pack 4 après avoir installé l’édition RTM. Pour plus d’informations, voir Comment obtenir le
dernier Service Pack pour SQL Server 2008.
Vérifiez également les problèmes d’installation connus lorsque vous installez SQL Server 2008 R2 et SQL Server
2008 sur un ordinateur exécutant Windows Server 2012 R2, Windows Server 2012, Windows 8.1 ou Windows
8.
Exigences SQL Server version minimale pour les Windows Server 2012
ou Windows 8
NOTE
Windows 8 a atteint la fin de la prise en charge, ce Windows 8 les appareils ne reçoivent plus les mises à jour de sécurité
importantes. Nous vous recommandons d’effectuer la mise à niveau gratuite vers Windows 8.1 pour continuer à recevoir
les mises à jour de sécurité et la prise en charge. Pour plus d’informations, voir Mise à jour Windows 8.1 à partir Windows
8.
Cette section décrit la version minimale requise pour l’installation SQL Server sur un ordinateur qui exécute
Windows Server 2012 ou Windows 8.
Avant d’installer SQL Server sur un ordinateur exécutant Windows Server 2012 ou Windows 8, vous devez vous
assurer que vous remplissez les conditions minimales suivantes, en fonction de votre situation :
Pour SQL Ser ver 2019 sur Windows
SQL Server 2019 n’est pas pris en charge sur Windows 8.1 ou Windows Server 2012 R2.
Pour SQL Ser ver 2017 sur Windows
La publication est prise en charge SQL Server 2017 sur Windows version RTM Release.
Pour SQL Ser ver 2016
Vous devez appliquer SQL Server 2016 Service Pack 2 ou une mise à jour ultérieure. Pour plus
d’informations, voir Comment obtenir ledernier Service Pack pour SQL Server 2016.
Pour SQL Ser ver 2014
Vous devez appliquer SQL Server 2014 Service Pack 3 ou une mise à jour ultérieure. Pour plus
d’informations,voir Comment obtenir le dernier Service Pack pour SQL Server 2014.
Pour SQL Ser ver 2012
Vous devez appliquer SQL Server 2012 Service Pack 4 ou une mise à jour ultérieure. Pour plus
d’informations,voir Comment obtenir le dernier Service Pack pour SQL Server 2012.
NOTE
Vérifiez les problèmes d’installation connus lorsque vous installez SQL Server 2012 sur Windows 8 ou Windows
Server 2012.
NOTE
L’installation RTM du produit est prise en charge. Toutefois, vous devez installer les Service Packs respectifs une
fois l’installation initiale terminée. Vous verrez le message suivant dans la page Centre de solutions :
Pour plus d’informations, voir Comment obtenir le dernier Service Pack pour SQL Server 2008 R2.
Pour SQL Ser ver 2008
Vous devez appliquer SQL Server 2008 Service Pack 4 ou une mise à jour ultérieure.
NOTE
L’installation RTM du produit est prise en charge. Toutefois, vous devez installer les Service Packs respectifs une
fois l’installation initiale terminée. Votre installation SQL server 2008 n’est pas prise en charge, sauf si vous
appliquez le Service Pack 4 après avoir installé l’édition RTM. Vous verrez le message suivant sur la page Centre de
solutions.
Pour plus d’informations, voir Comment obtenir le dernier Service Pack pour SQL Server 2008.
IMPORTANT
La boîte de dialogue suivante apparaît SQL Server 2008 R2 et SQL Server 2008 lorsque vous exécutez le
programme d’installation.
Une fois SQL Server programme d’installation, vous devez installer des Service Packs avant d’exécuter
SQL Server sur cette version de Windows.
Pour SQL Server 2008, vous devez installer le Service Pack 4 (SP4) ou une version ultérieure.
Pour SQL Server 2008 R2, vous devez installer le Service Pack 3 (SP3) ou une version ultérieure.
NOTE
Vérifiez également les problèmes d’installation connus lorsque vous installez SQL Server 2008 R2 et SQL
Server 2008 sur un ordinateur exécutant Windows Server 2012 R2, Windows Server 2012, Windows 8.1
ou Windows 8.
NOTE
Aucune prise en charge n’est prévue Windows RT appareils mobiles.
NOTE
Minimal Server est une installation minimale qui dispose du Gestionnaire de serveur et d’autres outils serveur. Par
conséquent, le programme d’installation SQL Server effectue les mêmes étapes d’installation en mode d’interface
serveur minimale Windows Server 2012 R2 et Windows Server 2012 mode d’interface serveur minimale et serveur
principal. En outre, vous pouvez basculer entre Server Core et Minimal Server lorsqu’une ou plusieurs instances de
SQL Server 2014 ou SQL Server 2012 sont installées. Il s’agit d’un scénario pris en charge.
SQL Server Reporting Services 2012 n’est pas pris en charge sur Windows Server 2012 R2 Server Core, Windows
Server 2012 Server Core, Windows Server 2012 R2 Minimal Server Interface mode ou Windows 2012 Minimal
Server Interface mode. Vous pouvez installer SQL Server Reporting Services 2012 sur un serveur qui exécute
Windows Server 2012 en mode serveur complet, puis basculer en mode Windows Server 2012 Serveur principal.
Toutefois, cette configuration n’est pas prise en charge.
Nous vous recommandons de désinstaller toutes les fonctionnalités SQL Server 2012 qui ne sont pas pris en
charge sur un serveur exécutant Windows Server 2012 R2 ou Windows Server 2012 en mode Serveur principal.
Pour plus d’informations sur la façon de faire, voir Install SQL Server 2012 on Server Core).
Ce problème ne s’applique SQL Server 2008 ou 2008 SQL Server 2008 R2. SQL Server 2008 et SQL Server 2008
R2 ne sont pas pris en charge en mode Minimale Interface serveur ou Serveur principal.
Pour plus d’informations sur les options d’installation disponibles lorsque vous installez Windows Server 2012,
voir Windows Server Installation Options.
SQL Server 2012 et SQL Server 2008 R2 pour les nouvelles
fonctionnalités de Windows 8.1, Windows 8, Windows Server 2012 R2
et Windows Server 2012
Cette section récapitule le fonctionnement des versions de SQL Server avec certaines nouvelles fonctionnalités
dans Windows 8.1, Windows 8, Windows Server 2012 R2 et Windows Server 2012.
Le tableau suivant récapitule le fonctionnement des versions de SQL Server avec certaines nouvelles
fonctionnalités Windows 8 et Windows Server 2012.
NOTE
Sauf indication du tableau suivant, toutes les fonctionnalités de Windows Server 2012 sont pris en charge dans toutes les
versions de SQL server.
SQ L O U
C O M P O SA N T SQ L EXIGEN C ES
Q UI IN T ERA GIT F O N C T IO N N A L I M IN IM A L ES EN
AVEC C ET T E T É Q UI EST M AT IÈRE DE EXC EP T IO N S O U
N O UVEL L E A F F EC T ÉE O U VERSIO N ET DE L IM ITAT IO N S DE P L US
F O N C T IO N N A L I F O N C T IO N N A L I P RISE EN SERVIC E PA C K P RISE EN D’IN F O RM AT IO N
TÉ TÉ C H A RGE P O UR SQ L C H A RGE S
REMARQUE
SQL Server 2008
R2 nécessite le
Service Pack 2
sur Windows 8.1
et Windows
Server 2012 R2.
Atténuation des LazyWriter Renifleur de page SQL Server 2012 Lorsque SQL
erreurs Checksum Server 2012 est
matérielles de installé sur un
RAM système
d’exploitation
Windows 2012
avec du matériel
qui prend en
charge les
diagnostics de
mémoire non
bon, vous
remarquerez de
nouveaux
messages
d’erreur tels que
854, 855 et 856
au lieu des
erreurs 832
générées par
LazyWriter.
NOTE
Ce lien pointe vers SQL Server 2014. Vous pouvez utiliser l’outil de sélection de version en haut du lien MSDN (Autres
versions) pour plus d’informations sur les autres versions.
Pour plus d’informations sur les éditions Express de SQL Server, voir les sites web Microsoft suivants :
SQL Server 2014 Service Pack 2 Express Edition
SQL Server 2012 Service Pack 3 (SP3) Express Edition
SQL Server 2008 R2 Service Pack 3 (SP3) Express Edition
Pour plus d’informations sur la désinstallation d’une instance existante de SQL Server 2005, voirHow to
manually uninstall an instance of SQL Server 2005 or Howto: Uninstall an Existing Instance of SQL Server 2005
(Setup).
S’applique à
SQL Server 2005 Enterprise X64 Edition
SQL Server 2005 Express Edition
SQL Server 2005 Édition Standard
SQL Server 2005 Standard X64 Edition
SQL Server 2005 Workgroup Edition
SQL Server 2005 Developer Edition
SQL Server 2005 Enterprise Edition
SQL Server Développeur 2008
SQL Server 2008 Enterprise
SQL Server 2008 Express
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server 2008 Standard
SQL Server 2008 Édition Standard for Small Business
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
SQL Server 2014 Business Intelligence
SQL Server Développeur 2014
SQL Server 2014 Enterprise
SQL Server 2014 Enterprise Core
SQL Server 2014 Express
SQL Server 2014 Standard
SQL Server Web 2014
SQL Server Développeur 2016
SQL Server 2016 Enterprise
SQL Server 2016 Enterprise Core
SQL Server 2016 Express
SQL Server 2016 Standard
SQL Server Web 2016
SQL Server 2017 sur Windows (toutes les éditions)
SQL Server 2019 sur Windows
Stratégie de prise en charge Microsoft SQL Server
produits en cours d’exécution dans un
environnement de virtualisation de matériel
14/08/2021 • 11 minutes to read
Cet article décrit la stratégie de prise en charge SQL Server produits qui s’exécutent dans un environnement de
virtualisation matérielle.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 956893
INTRODUCTION
Cet article décrit la stratégie de prise en charge pour Microsoft SQL Server qui s’exécutent dans un
environnement de virtualisation de matériel.
Plus d’informations
Microsoft fournit une assistance technique pour SQL Server 2008 et versions ultérieures pour les
environnements de virtualisation de matériel pris en charge suivants :
Windows Server 2008 et versions ultérieures avec Hyper-V
Microsoft Hyper-V Server 2008 et versions ultérieures
Configurations validées par le biais du programme SVVP (Server Virtualization Validation Program).
Pour plus d’informations sur les fournisseurs certifiés et sur les configurations pour svVP, voir
http://windowsservercatalog.com/svvp.aspx?svvppage=svvp.htm .
NOTE
La solution SVVP doit être en cours d’exécution sur du matériel certifié pour Windows Server 2008 R2 ou une
version ultérieure afin d’être considérée comme une configuration SVVP valide.
Microsoft fournit une assistance technique pour SQL Server 2008 et versions ultérieures pour les
environnements de virtualisation de matériel pris en charge suivants :
Services d’infrastructure Azure qui inclut les machines virtuelles Azure et Azure Virtual Network (consultez la
section Questions fréquemment posées pour plus d’informations)
Microsoft peut fournir un support technique limité ou nul pour les environnements suivants :
Toute version de SQL Server antérieure à SQL Server 2008 (par exemple, SQL Server 2005) qui s’exécute sur
un fournisseur ou une configuration de virtualisation.
Tout logiciel de virtualisation non-Microsoft qui n’est pas une configuration validée par le biais du
programme SVVP
Cette stratégie de prise en charge limitée est basée sur l’article suivant de la Base de connaissances Microsoft :
Stratégie de support pour les logiciels Microsoft qui s’exécutent sur des logiciels de virtualisation de matériel
non Microsoft
Restrictions et limitations
Les restrictions et limitations suivantes peuvent affecter la stratégie de prise en charge des configurations prise
en charge ci-dessus :
Le clustering de failover invité est pris en charge pour SQL Server 2008 et versions ultérieures dans une
machine virtuelle pour les environnements de virtualisation de matériel pris en charge répertoriés dans
cet article, à condition que toutes les conditions suivantes soient remplies :
Le système d’exploitation s’exécutant sur la machine virtuelle (le « système d’exploitation invité »)
est Windows Server 2008 ou une version ultérieure.
L’environnement de virtualisation répond aux exigences du clustering de Windows 2008 ou
Windows 2012, comme documenté dans les articles suivants de la Base de connaissances
Microsoft :
Stratégie de support Microsoft pour les clusters de Windows Server 2008 ou Windows
Server 2008 R2
Stratégie de support Microsoft pour les clusters de Windows serveur
Le SQL Server produit doit être une version prise en charge dans le cadre de sa politique de cycle de vie
actuelle du support Microsoft. Pour plus d’informations sur les stratégies de cycle de vie du support
Microsoft, voir Les informations de cycle de vie des produits et services de recherche.
SQL Server prend en charge les solutions de sauvegarde adaptées à la virtualisation qui utilisent VSS
(captures instantanées en volume). Par exemple, SQL Server prend en charge la sauvegarde Hyper-V.
Les captures instantanées de machine virtuelle qui n’utilisent pas de captures instantanées de volume
VSS ne sont pas prises en charge par SQL Server. Toute technologie de capture instantanée qui enregistre
en arrière-plan un état de mémoire, de disque et d’appareil à un point dans le temps des ordinateurs
virtuels sans interagir avec les applications sur l’invité à l’aide de VSS peut laisser SQL Server dans un
état incohérent.
SQL Server réplica Hyper-V est pris en charge à condition que l’indicateur
EnableWriteOrderPreservationAcrossDisks soit définie.
NOTE
Pour définir l’indicateur EnableWriteOrderPreservationAcrossDisks, exécutez l’cmdlet suivante :
Set-VMReplication -VMName \<vm-name> -EnableWriteOrderPreservationAcrossDisks 1
Exceptions
Si plusieurs VM SQL sont étroitement couplées les unes aux autres, les VM individuels peuvent faire
échouer vers le site de récupération d’urgence, mais les fonctionnalités de haute disponibilité (HA) de
SQL à l’intérieur de la VM doivent être supprimées et reconfigurées après le failover de la VM. Pour cette
raison, les fonctionnalités SQL Server suivantes ne sont pas pris en charge sur le réplica hyper-VM :
Groupes de disponibilité
Mise en miroir de bases de données
Instances de cluster de failover
Copie des journaux de transaction
Replication (Réplication)
Pour SQL serveurs en cours d’exécution sur l’environnement Linux, examinez les instructions dans la
section Technologies de virtualisation prise en charge de la stratégie de support technique pour Microsoft
SQL Server.
Il est recommandé d’utiliser SQL Server dans Exécuter Hyper-V dans une machine virtuelle avec
virtualisation imbriée uniquement à des fins de test et de développement.
S’applique à
SQL Server 2008 Standard
SQL Server 2008 Édition Standard for Small Business
SQL Server 2008 Enterprise
SQL Server Développeur 2008
SQL Server 2008 Workgroup
SQL Server Web 2008
SQL Server 2008 Express
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 PowerPivot pour Excel 2010
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Express
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2012 Enterprise Core
SQL Server 2014 Standard
SQL Server Développeur 2014
SQL Server Web 2014
SQL Server 2014 Enterprise
SQL Server 2016 Standard
SQL Server Développeur 2016
SQL Server 2016 Enterprise
SQL Server Web 2016
SQL Server 2017 sur Windows (toutes les éditions)
Stratégie de support technique pour Microsoft SQL
Server
13/08/2021 • 14 minutes to read
Cet article décrit la stratégie de prise en charge pour Microsoft SQL Server.
Version du produit d’origine : SQL Server 2017 sur Linux (toutes les éditions), SQL Server 2017 sur Windows
(toutes les éditions)
Numéro de la ko d’origine : 4047326
Résumé
Cet article décrit les stratégies de prise en charge et les limites de dépannage pour SQL Server produits installés
sur les plateformes pris en charge.
Stratégie de support
Microsoft fournit un support technique et des correctifs de produit pour les composants SQL Server qui sont
déployés sur le système d’exploitation, les systèmes de fichiers, les hyperviseurs et les architectures matérielles
pris en charge conformément à la documentation du produit. Microsoft peut fournir une assistance technique
limitée ou aucune assistance technique pour les composants logiciels SQL Server qui sont déployés sur des
systèmes d’exploitation, des systèmes de fichiers, des hyperviseurs et des plateformes matérielles non pris en
charge.
Si vous déployez SQL Server sur un système d’exploitation, un système de fichiers ou un hyperviseur non pris
en charge, vous risquez de ne pas être à l’même comportement et de connaître les résultats. Lorsque vous
dépanner de tels problèmes, l’équipe de support Microsoft peut vous demander de reproduire le problème sur
une combinaison prise en charge du système d’exploitation, du système de fichiers, de l’hyperviseur et de
l’architecture matérielle. Dans ces circonstances, Microsoft peut ne pas être en mesure de fournir une prise en
charge ou une résolution du problème si le problème se produit uniquement dans la combinaison non prise en
charge du système d’exploitation, du système de fichiers, de l’hyperviseur ou de l’architecture.
Lorsque vous dépanner les problèmes qui se produisent lorsque vous utilisez une solution ou une application
qui est conçue à l’aide de SQL Server, le support Microsoft tente d’isoler la cause du problème sur la source de
couche matérielle ou logicielle spécifique. Le problème peut se faire soit dans le logiciel SQL Server, soit dans les
composants du système d’exploitation avec SQL Server interaction. Si le problème est en cours SQL Server, le
support Microsoft fournit des solutions de résolution et des solutions de contournement appropriées pour le
problème. Si le problème se trouve dans le comportement du système d’exploitation, le Support Microsoft vous
renvoie au fournisseur du système d’exploitation pour le suivi et la résolution. Pour les systèmes d’exploitation
pris en charge, le Support Microsoft collaborera avec le fournisseur de support du système d’exploitation pour
vous offrir une résolution commercialement utilisable.
Avant de déployer SQL Server sur une version spécifique d’un système d’exploitation, consultez la
documentation du produit pour SQL Server et vérifiez auprès du fournisseur du système d’exploitation les
conditions de prise en charge requises pour l’ensemble de la solution que vous construisez pour vous assurer
que les différents composants impliqués sont compatibles et pris en charge. Contactez le fournisseur du
système d’exploitation à propos des stratégies de support qui s’appliquent aux stratégies de support
supplémentaires pour la virtualisation, le stockage et les couches matérielles.
Microsoft prendra en charge l’utilisation d’images de conteneur officielles publiées par Microsoft dans les
différents référentiels de conteneurs. Si vous utilisez des images SQL Server conteneur d’autres contributeurs, le
Support Microsoft peut vous demander de reproduire le problème sur l’image de conteneur officielle. Cette
étape peut être nécessaire pour exclure la possibilité que des personnalisations ou des modifications apportées
à l’image de conteneur privé contribuent au problème.
Si le problème est isolé du comportement du moteur de conteneur, vous devez travailler avec le fournisseur du
moteur de conteneur pour résoudre le problème.
Microsoft peut ne pas être en mesure de fournir un support technique si vous utilisez une fonctionnalité non
prise en charge ou si vous utilisez une fonctionnalité de manière non prise en charge ou non.
Cet article vous aide à résoudre le problème où le groupe de disponibilité AlwaysOn qui contient la base de
données SSISDB reste à l’état de résolution après un SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 3139534
Symptômes
Supposons que la base de données SSISDB est membre d’un groupe de disponibilité AlwaysOn et que ce
groupe de disponibilité échoue pendant qu’un package de SSISDB s’exécute de manière synchrone. Dans ce cas,
le groupe de disponibilité peut rester à l’état de résolution sur le réplica principal (désormais anciennement)
jusqu’à ce que l’exécution du package se termine.
Dans ce scénario, l’opération de failover réussit, mais le groupe de disponibilité sur le (nouveau) réplica
secondaire reste à l’état de résolution jusqu’à la fin de l’exécution du package. Pendant ce temps, le journal SQL
Server’erreurs affiche un message semblable à ce qui suit :
Les transactions non qualifiées sont en cours de mise à jour dans la base de données SSISDB pour un
changement d’état des groupes de disponibilité AlwaysOn. Achèvement de la récupération estimé : 0 %. Il
s’agit d’un message d’information uniquement. Aucune action de l’utilisateur n’est requise.
L’interrogation de l’état de la session indique que la session qui a été utilisée pour exécuter le travail est dans
l’état ROLLBACK/ROLLBACK. Si l’exécution est terminée, elle peut déclencher des erreurs telles que les suivantes
:
Cause
Ce problème se produit car les threads utilisés pour exécuter le package SSIS sont hors du contrôle du
mécanisme utilisé pour mettre fin à une session SQL Server session. Lorsqu’un package est exécuté de manière
synchrone, cela entraîne l’exécution d’une boucle qui empêche SQL Server de mettre fin à la session tant que
l’exécution du package n’est pas terminée.
Solution de contournement
Pour contourner ce problème, configurez le package SSIS pour qu’il s’exécute de manière asynchrone.
L’exécution asynchrone du package est le comportement par défaut.
Créer un objet ou un message dynamique pour la
tâche Envoyer un message dans SQL Server
Integration Services
14/08/2021 • 3 minutes to read
Cet article montre comment mettre à jour la propriété d’un objet SQL Server Integration Services (SSIS) lors de
l’utilisation en créant une expression de propriété.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 906547
Introduction
Vous pouvez créer un package SSIS à l’aide SQL Server Business Intelligence Development Studio. Lorsque vous
créez ce package, vous pouvez créer une expression pour une propriété du package SSIS à mettre à jour ou pour
remplir la propriété lors de l’utilisation. Par exemple, si le package SSIS contient une tâche Envoyer un message,
vous pouvez créer une expression pour la propriété Subject et pour la MessageSource propriété. Vous pouvez
utiliser l’expression de propriété Subject pour mettre à jour dynamiquement l’objet d’un message électronique.
Vous pouvez utiliser l’expression de propriété pour mettre à jour dynamiquement des variables dans le message
électronique, telles que des variables remplies par une transformation de nombre MessageSource de lignes.
Cet article explique comment créer un objet ou un message dynamique pour la tâche Envoyer un message.
Plus d’informations
Voici un exemple d’expression de propriété pour la propriété Subject dans une tâche Envoyer un message.
"Package>>> " + @[System::PackageName] +" was executed at>>> " + (DT_WSTR, 40) @[System::StartTime] + " by
user>>> "
+ @[System::UserName] + " on Machine>>> " + @[System::MachineName]
Si vous utilisez cet exemple d’expression de propriété, l’objet d’un message électronique est mis à jour
dynamiquement. L’objet inclut les informations suivantes :
Informations textuelles Dans cet exemple, l’objet du message électronique inclut les Package>>> informations
textuelles.
Variables système
Le message électronique inclut les variables système suivantes :
PackageName
Nom du package.
StartTime
Heure d’exécution du package.
UserName
Utilisateur qui a exécuté le package.
MachineName
Nom de l’ordinateur sur lequel le package a été exécuté.
Vous pouvez également inclure plus d’informations dans l’expression, telles qu’une variable définie par
l’utilisateur. Par exemple, une tâche de Flow peut inclure une transformation de nombre de lignes avant la tâche
Envoyer un message. (La transformation Nombre de lignes est utilisée pour compter les lignes.) La
transformation Nombre de lignes remplit une variable définie par l’utilisateur nommée @myrowcount . Cette
variable stocke les informations de nombre dans le flux de données.
Pour spécifier qu’un message électronique ne doit être envoyé que si le nombre de lignes est inférieur à une
certaine valeur, modifiez le flux de contrôle en utilisant des contraintes de priorité. Pour cela, procédez comme
suit :
1. Dans SQL Server Business Intelligence Development Studio, cliquez avec le bouton droit sur Flow tâche,
puis cliquez sur Ajouter une contrainte de priorité.
2. Double-cliquez sur la contrainte de priorité que vous avez créée.
3. Dans la boîte de dialogue Éditeur de contraintes de priorité, cliquez sur Expression et contrainte
dans l’opération d’évaluation.
4. Dans la zone Expression, tapez l’expression : @myrowcount < 2
"Error in the task: " + @[System::SourceName] + "with the ID: " + @[System::SourceID]
+ " has failed at: " + (DT_WSTR, 20) @[System::ContainerStartTime] + "."
Références
Pour plus d’informations, consultez les rubriques suivantes dans SQL Server Books Online:
Utilisation d’expressions de propriétés dans les packages
How to: Create a Property Expression
Expressions des services d’intégration avancée
Contraintes de priorité
Définition des contraintes de priorité sur les tâches et les conteneurs
Integration Services Event Handlers
Une erreur 0xC0202009 se produit lorsque SSIS
lance un cast de paramètre dans SQL Server
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre l’erreur 0xC0202009 qui se produit lorsque Microsoft SQL Server Integration
Services (SSIS) fait une cast de paramètres dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 3001293
Symptômes
Lorsque vous exécutez un package SSIS, l’exécution échoue en raison d’une erreur de cast de paramètres et vous
recevez le message d’erreur suivant :
Code : 0xC0202009
Source : Tâche de Flow données
Description : Code d’erreur SSIS DTS_E_OLEDBERROR. Une erreur OLE DB s’est produite. Code d’erreur :
0x80040E21.
Un enregistrement OLE DB est disponible. Source : « Microsoft SQL Server Native Client 11.0 »
Hresult : 0x80040E21 Description : « Valeur de caractère non valide pour la spécification de cast ».
Pour un composant source OLE DB, lorsque vous avez une tâche de flux de données qui contient une requête
paramétisée, vous pouvez être face à ce problème. Par exemple, vous avez la requête suivante :
SELECT mydate
FROM dbo.myTable
WHERE mydate >= convert (char, dateadd(year,-1,cast( ? as datetime)))
NOTE
Ce problème se produit uniquement si vous essayez d’utiliser un composant source OLE DB avec des paramètres dans la
chaîne de requête. Un marqueur de paramètre est mappé à un paramètre1 de variable utilisateur SSIS défini ? en tant
que chaîne SSIS 20080122 .
Cause
Le problème se produit en raison du changement de comportement dans la façon dont OLE DB gère les
paramètres. Dans Microsoft SQL Server 2012, la nouvelle procédure stockée de , remplacement de jeu renvoie
un sp_describe_undeclared_parameters résultat différent pour le type de fmtonly paramètre. Cette modification
est de par sa conception.
Dans l’exemple de requête de la section Symptômes, le comportement d’origine doit être ? décrit comme .
char(8) Toutefois, la nouvelle sp_describe_undeclared_parameters indique que ? c’est le datetime cas. Par
conséquent, la distribution interne de la chaîne vers celle qui est gérée par le fournisseur datetime OLE DB
renvoie le message d’erreur.
Résolution
Pour résoudre ce problème, réécrivez la requête pour ajouter un cast explicite supplémentaire au type de
données d’origine. Renvoie ensuite sp_describe_undeclared_parameters le type correct et attendu. Pour résoudre
ce problème dans la requête d’exemple décrite dans la section Symptômes, mettez à jour la requête comme suit
:
SELECT mydate
FROM dbo.myTable
WHERE mydate >= convert(char ,dateadd(year,-1, cast( cast( ? as char(8)) as datetime)))
Vous recevez un message d’erreur « Chargement
d’erreur » lorsque vous essayez d’exécuter un
package SQL Server Integration Services
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre les échecs de chargement de package qui se produisent lorsque SSIS ne peut
pas déchiffrer le mot de passe stocké dans le package.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 904800
Symptômes
Dans Microsoft SQL Server, lorsque vous essayez d’exécuter un package SSIS (SQL Server Integration Services)
à partir de Business Intelligence de Microsoft SQL Server Studio ou à l’aide de l’outil de ligne de commande SQL
Server Execute Package Utility (Dtexec.exe), vous recevez le message d’erreur suivant :
NOTE
L’espace réser vé PackageName est un espace réservé pour le nom du package SSIS que vous essayez d’exécuter.
Ce comportement se produit lorsque vous essayez d’exécuter le package SSIS à l’aide d’un autre ordinateur ou
d’un autre compte d’utilisateur que l’ordinateur et le compte d’utilisateur qui ont été utilisés pour créer le
package SSIS.
Cause
Ce comportement se produit si la valeur de la propriété dans le package SSIS est définie pour fournir la quantité
maximale de protection pour la propriété Password dans le ProtectionLevel package SSIS. Par défaut, la valeur
de la ProtectionLevel propriété est définie sur Encr yptSensitiveWithUserKey . La valeur
Encr yptSensitiveWithUserKey chiffre toutes les propriétés du package SSIS qui sont considérées comme
sensibles, telles que la propriété Password. Lorsque le même compte d’utilisateur et le même ordinateur qui ont
été utilisés pour créer le package SSIS sont utilisés pour exécuter le package SSIS, le package SSIS se déchiffre
automatiquement et aucun message d’erreur n’est généré. Toutefois, lorsqu’un autre compte d’utilisateur ou un
autre ordinateur est utilisé pour exécuter le package SSIS, la valeur Encr yptSensitiveWithUserKey de la
propriété est en jeu et la propriété Password du package SSIS reste ProtectionLevel chiffrée. Lorsque cela se
produit, un message d’erreur est généré.
Résolution
Pour résoudre ce problème, modifiez la valeur de la ProtectionLevel propriété dans le package SSIS.
Plus d’informations
Pour plus d’informations, voir les rubriques suivantes dans SQL Server Books Online :
Considérations en matière de sécurité pour les services d’intégration
Définition du niveau de protection des packages
Références
Pour plus d’informations sur un problème similaire, voir le package SSIS ne s’exécute pas lorsqu’il est appelé à
partir d’SQL Server’étape du travail de l’agent.
Impossible de préparer l’insertion en bloc SSIS pour
l’insertion de données sur les systèmes activés pour
le contrôle d’utilisateur
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez d’exécuter un package SSIS sur
des systèmes où le contrôle de compte d’utilisateur (UAC) est activé.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2009672
Symptômes
Prenons l’exemple du scénario suivant :
Vous créez un package SQL Server Integration Services (SSIS) qui possède un composant de destination
SQL Server dans une tâche de flux de données.
Vous essayez d’exécuter ce package sur les systèmes où le contrôle de compte d’utilisateur (UAC) est
activé (par exemple Vista ou Windows 7) à l’aide de l’une des méthodes suivantes :
Business Intelligence Development Studio (BIDS)
SQL Server Management Studio (SSMS) Object Explorer
DTExec.exe
DTExecUI.exe
Dans ce scénario, vous pouvez obtenir un message d’erreur semblable à ce qui suit :
SQL Server Erreur de destination : impossible de préparer l’insertion en bloc SSIS pour l’insertion de
données. [SSIS. Erreur du pipeline : le composant « SQL Server Destination » a échoué à la phase de pré-
exécution et a renvoyé le code d’erreur 0xC0202071.
NOTE
Vous n’obtenez pas cette erreur si vous exécutez le package sous le compte d’administrateur intégré créé lors de
l’installation du système d’exploitation. Toutefois, vous recevez ce message pour tout autre utilisateur, y compris ceux qui
sont membres du groupe Administrateurs local.
Le problème ne se produit pas lorsque vous exécutez le même package SSIS qu’un travail SQL Server agent.
Une fois SQL 2008 Service Pack 2 installé, le texte de l’erreur DTS_E_BULKINSERTAPIPREPARATIONFAILED
(0xC0202071) a été modifié : Impossible de copier en bloc les données. Vous devrez peut-être exécuter ce
package en tant qu’administrateur.
Cette modification a été réalisée pour faciliter la compréhension de l’action corrective requise, comme décrit dans la
section de résolution de cette ko.
Cause
Sur les systèmes où le contrôle de compte d’utilisateur est activé, lorsqu’une application (telle que SSIS) est
lancée par un compte membre du groupe Administrateurs, elle obtient deux jetons de sécurité, l’un avec des
privilèges faibles et l’autre un jeton élevé. Le jeton élevé est utilisé uniquement lorsque l’application est
explicitement exécuté sous un compte Administrateur en choisissant Exécuter en tant qu’administrateur. Par
défaut, SSIS utilise toujours le jeton à faibles privilèges, ce qui entraîne un échec lors de la connexion à SQL
Destination.
Résolution
Utilisez l’une des méthodes suivantes pour contourner le problème :
Si vous exécutez le package depuis SQL Server Management Studio (SSMS) ou Business Intelligence
Development Studio (BIDS) ou DTExecUI.exe, lancez ces outils sous le compte Administrateur élevé. Pour
ce faire, cliquez sur Démarrer, pointez sur Tous les programmes, pointez sur SQL Ser ver 2005 ou
SQL Ser ver 2008 , cliquez avec le bouton droit sur l’outil que vous utilisez, puis cliquez sur Exécuter en
tant qu’administrateur. Cette opération lance l’application avec des privilèges élevés du compte
Administrateur intégré et le package s’exécute correctement.
De même, si vous exécutez le package à l’aide DTExec.exe lancez-le à partir d’une invite de commandes
avec élévation de élévation de niveaux. Vous pouvez démarrer l’invite de commandes avec élévation de
pouvoir en cliquant sur Démarrer, sur Tous les programmes, sur Accessoires, sur Invite de
commandes avec le bouton droit, puis sur Exécuter en tant qu’administrateur.
NOTE
Si vous ne vous connectez pas à l’ordinateur en tant qu’administrateur, vous êtes invité à fournir le compte
d’administrateur. Lorsque vous êtes invité à fournir le compte d’administrateur, tapez le nom d’utilisateur et le mot
de passe de l’administrateur dans la boîte de dialogue Contrôle de compte d’utilisateur. Cliquez ensuite sur OK .
Remplacez les SQL Server destination dans les tâches de flux de données qui échouent par des
composants OLE DB Destination qui pointent vers le même gestionnaire de connexions SQL Server
données.
Utilisez un compte qui n’est pas membre du groupe Administrateurs local après avoir attribué à ce
compte le droit d’utilisateur Créer des objets globaux. Pour cela, procédez comme suit :
1. Cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Stratégie de sécurité
locale.
2. Développez les stratégies locales, puis cliquez sur Attribution des droits d’utilisateur.
3. Dans le volet droit, double-cliquez sur Créer des objets globaux.
4. Dans la boîte de dialogue Paramètres de stratégie de sécurité locale, cliquez sur Ajouter.
5. Dans la boîte de dialogue Sélectionner des utilisateurs ou un groupe, cliquez sur les comptes
d’utilisateurs que vous souhaitez ajouter, cliquez sur Ajouter, puis sur OK.
6. Cliquez sur OK .
NOTE
Lorsque vous utilisez un compte qui n’est pas membre du groupe Administrateurs local, le UAC n’entre pas en jeu.
Plus d’informations
Utilisation du contrôle de compte d’utilisateur (UAC) dans Windows Vista
Aide guidée : ajuster les paramètres de contrôle de compte d’utilisateur Windows 7 et Windows 8
Qu’est-il ad arrivé à la commande Exécuter en tant que ?
DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER
lorsque vous utilisez le gestionnaire de connexion Oracle
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez le gestionnaire de connexions
Oracle.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2009312
Symptômes
Envisagez le scénario suivant pour l’une SQL Server :
Vous concevez un package SQL Server Integration Services (SSIS) à l’aide de Business Intelligence
Development Studio (BIDS).
Dans votre package, vous vous connectez à un serveur Oracle à l’aide d’un fournisseur OLEDB pour Oracle et
utilisez le client Oracle 10G ou 11G.
Vous utilisez le fichier de configuration du package pour définir toutes les propriétés de connexion de la
connexion Oracle lors de l’utilisation.
Dans ce scénario, si vous exécutez le package à partir de BIDS, vous obtenez le message d’erreur suivant
« Erreur : 0xC0202009 package, gestionnaire de connexions « Fournisseur OLEDB » : code d’erreur SSIS
DTS_E_OLEDBERROR. Une erreur OLE DB s’est produite. Code d’erreur : 0x80040E21.
Un enregistrement OLE DB est disponible. Source : « Composants du service Microsoft OLE DB » Hresult :
0x80040E21 description : « Erreurs générées par l’opération OLE DB en plusieurs étapes. Vérifiez chaque
valeur d’état OLE DB, si disponible. Aucun travail n’a été effectué. »
Error: 0xC020801C at Data Flow Task, Oracle OLEDB Source [1]: SSIS Error Code
DTS_E_CANNOTACQUIRECONNECTIONFROMCONNECTIONMANAGER. L’appel de méthode
AcquireConnection au gestionnaire de connexions « FOURNISSEUR OLEDB » a échoué avec un code d’erreur
0xC0202009. Des messages d’erreur peuvent être publiés avant cela, avec plus d’informations sur la raison
de l’échec de l’appel de la méthode AcquireConnection.
Error: 0xC0047017 at Data Flow Task, DTS. Pipeline : le composant « Oracle OLEDB Source » (1) a échoué à
la validation et a renvoyé le code d’erreur 0xC020801C. »
Cause
Cela est dû au fait que la propriété Catalogue initial dans le fichier de configuration n’est pas reconnue par le
fournisseur Oracle. Ce paramètre est vide pour le gestionnaire de connexions Oracle dans le fichier de
configuration.
Par exemple, le fichier de configuration XML suivant est généré lorsque vous utilisez BIDS pour créer un package
SSIS qui se connecte à un serveur Oracle :
<?xml version="1.0"?>
<DTSConfiguration>
<DTSConfigurationHeading>
<DTSConfigurationFileInfo GeneratedBy="MyUserName" GeneratedFromPackageName="MyPackage"
GeneratedFromPackageID="<guid>" GeneratedDate="2/22/2010 9:00:00 PM"/>
</DTSConfigurationHeading>
<Configuration ConfiguredType="Property"
Path="\Package.Connections[MyConnectionManager].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=MyServerName;User ID=MyAccount;Password=MyPassword; **Initial
Catalog=**; Provider=MSDAORA.1;Persist Security Info=True;</ConfiguredValue>
</Configuration>
</DTSConfiguration>
Résolution
Supprimez la case à cocher du catalogue initial lors de la création ou de la modification du fichier de
configuration via le Concepteur BIDS.
Par exemple, la version fixe de l’exemple de fichier de configuration indiqué dans la section Cause sera la
suivante :
<?xml version="1.0"?>
<DTSConfiguration>
<DTSConfigurationHeading>
<DTSConfigurationFileInfo GeneratedBy="MyUserName" GeneratedFromPackageName="MyPackage"
GeneratedFromPackageID="<guid>" GeneratedDate="2/22/2010 9:00:00 PM"/>
</DTSConfigurationHeading>
<Configuration ConfiguredType="Property"
Path="\Package.Connections[MyConnectionManager].Properties[ConnectionString]" ValueType="String">
<ConfiguredValue>Data Source=MyServerName;User
ID=MyAccount;Password=MyPassword;Provider=MSDAORA.1;Persist Security Info=True;</ConfiguredValue>
</Configuration>
</DTSConfiguration>
Plus d’informations
INFO : Limitations du pilote ODBC Microsoft Oracle et du fournisseur OLEDB
Séquencement de messages (données de licence
non valides) SQL Server Business Intelligence
Development Studio (BIDS) avec App-V
13/08/2021 • 2 minutes to read
Cet article explique la stratégie de prise en charge concernant le séquencement SQL Server Business Intelligence
Development Studio (BIDS) ou SQL Server Data Tools (SSDT).
Version du produit d’origine : SQL Server, SQL Server Management Studio
Numéro de la ko d’origine : 2679533
Résumé
Lorsque vous tentez de virtualiser (séquence) Business Intelligence de Microsoft SQL Server Development
Studio (BIDS) ou SQL Server Data Tools (SSDT) avec Microsoft Application Virtualization (App-V), le package
résultant échoue avec l’erreur suivante :
Plus d’informations
Le séquencement d’une version SQL Server Business Intelligence Development Studio (BIDS) ou SQL Server
Data Tools (SSDT) n’est pas pris en charge. Cela inclut, mais n’est pas limité à toutes les versions de SQL Server, y
compris SQL Server Management Studio.
Les points de contrôle SSIS ne sont pas honorés
pour les éléments de conteneur de boucle For ou
de boucle Foreach
13/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème où les points de contrôle SQL Server Integration Services (SSIS)
ne sont pas honorés pour les éléments de conteneur ou pour For Loop Foreach Loop ceux-ci.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2624458
Symptômes
Prenons l’exemple du scénario suivant :
Vous installez Microsoft SQL Server Integration Services sur un ordinateur.
Vous créez un package SSIS qui contient un élément de conteneur pour boucle suivi d’un conteneur de
séquence.
Les éléments Conteneur de boucle For et Conteneur de séquence ont l’une des valeurs suivantes :
An Execute SQL Task (OR)
Deux ou plusieurs tâches exécuter SQL qui s’exécutent en parallèle.
Vous activez le paramètre Point de contrôle pour le package SSIS.
Vous exécutez le package SSIS
Le conteneur For Loop se termine et l’exécution du package est exécutée sur le conteneur sequence.
Vous devez prendre l’une des mesures ci-dessous :
Pour les packages ayant une seule tâche Exécuter SQL, vous arrêtez l’exécution du package pendant
que la tâche est en cours d’exécution.
Pour les packages exécutant plusieurs tâches Execute SQL, vous arrêtez l’exécution du package ou
vous faites face à un échec dans l’une de ces tâches alors que d’autres tâches Execute SQL sont
toujours en cours d’exécution.
Le package SSIS s’exécute à nouveau.
Dans ce scénario, le package commence à partir For Loop du conteneur au lieu du Sequence conteneur.
NOTE
Ce problème n’est pas lié à l’exécution SQL tâche. Cela peut également se produire avec d’autres tâches.
Cause
Ce comportement est inhérent au produit. Les données de point de contrôle ne sont pas enregistrées pour
For Loop les éléments conteneur et Foreach Loop conteneur. Si un conteneur enfant de la boucle s’exécute
correctement, il n’est pas enregistré dans le fichier de point de contrôle. Ainsi, lorsque le package est redémarré,
les tâches de chacun de ces éléments de conteneur sont réexécutées.
Solution de contournement
Pour contourner le problème, encapsulez le conteneur ou le For Loop Foreach Loop conteneur à l’intérieur d’un
Sequence conteneur.
Le package SSIS ne s’exécute pas lorsqu’il est appelé
à partir d’une étape SQL Server travail de l’agent
de sécurité
14/08/2021 • 9 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous appelez un package SSIS à partir d’une
étape SQL Server travail de l’agent.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 918760
Symptômes
Lorsque vous appelez un package Microsoft SQL Server Integration Services (SSIS) à partir d’une étape de
travail SQL Server Agent, le package SSIS ne s’exécute pas. Toutefois, si vous ne modifiez pas le package SSIS, il
s’exécutera correctement en dehors SQL Server Agent.
Résolution
Pour résoudre ce problème, utilisez l’une des méthodes suivantes. La méthode la plus appropriée dépend de
l’environnement et de la raison de l’échec du package. Les raisons de l’échec du package sont les suivantes :
Le compte d’utilisateur utilisé pour exécuter le package sous SQL Server Agent diffère de l’auteur du package
d’origine.
Le compte d’utilisateur ne dispose pas des autorisations requises pour établir des connexions ou accéder à
des ressources en dehors du package SSIS.
Le package peut ne pas s’exécuter dans les scénarios suivants :
L’utilisateur actuel ne peut pas déchiffrer les secrets du package. Ce scénario peut se produire si le compte
actuel ou le compte d’exécution diffère de l’auteur du package d’origine et que le paramètre de propriété
ProtectionLevel du package ne permet pas à l’utilisateur actuel de déchiffrer les secrets dans le package.
Une connexion SQL Server qui utilise la sécurité intégrée échoue, car l’utilisateur actuel ne peut pas avoir les
autorisations requises.
L’accès aux fichiers échoue car l’utilisateur actuel ne peut pas écrire dans le partage de fichiers accessible par
le gestionnaire de connexions. Par exemple, ce scénario peut se produire avec des fournisseurs de journaux
de texte qui n’utilisent pas de connexion et de mot de passe. Ce scénario peut également se produire avec
n’importe quelle tâche qui dépend du gestionnaire de connexions de fichiers, telle qu’une tâche de système
de fichiers SSIS.
Une configuration de package SSIS basée sur le Registre utilise les HKEY_CURRENT_USER clés de Registre. Les
HKEY_CURRENT_USER clés de Registre sont spécifiques à l’utilisateur.
Une tâche ou un gestionnaire de connexions requiert que le compte d’utilisateur actuel dispose des
autorisations correctes.
Pour résoudre le problème, utilisez les méthodes suivantes :
Méthode 1 : utiliser un compte proxy SQL Server’agent de gestion. Créez un SQL Server proxy agent de
gestion. Ce compte proxy doit utiliser une informations d’identification qui permet à l’agent SQL Server
d’exécuter le travail en tant que compte qui a créé le package ou en tant que compte qui dispose des
autorisations requises.
Cette méthode fonctionne pour déchiffrer les secrets et répond aux exigences clés de l’utilisateur.
Toutefois, cette méthode peut avoir un succès limité, car les clés utilisateur du package SSIS impliquent
l’utilisateur actuel et l’ordinateur actuel. Par conséquent, si vous déplacez le package vers un autre
ordinateur, cette méthode peut toujours échouer, même si l’étape du travail utilise le compte proxy
correct.
Méthode 2 : définissez la propriété du package SSIS ProtectionLevel sur ServerStorage. Modifiez la
propriété SSIS Package ProtectionLevel en ServerStorage. Ce paramètre stocke le package dans une base
de données SQL Server et autorise le contrôle d’accès via SQL Server rôles de base de données.
Méthode 3 : définir la propriété du package SSIS ProtectionLevel sur EncryptSensitiveWithPassword .
Modifiez la propriété du package SSIS ProtectionLevel sur EncryptSensitiveWithPassword . Ce paramètre
utilise un mot de passe pour le chiffrement. Vous pouvez ensuite modifier la ligne de commande SQL
Server l’étape du travail de l’agent pour inclure ce mot de passe.
Méthode 4 : utiliser les fichiers de configuration du package SSIS. Utilisez les fichiers de configuration du
package SSIS pour stocker des informations sensibles, puis stockez ces fichiers de configuration dans un
dossier sécurisé. Vous pouvez ensuite modifier la propriété afin que le package ne soit pas chiffré et
n’essaie pas d’enregistrer les ProtectionLevel DontSaveSensitive secrets dans le package. Lorsque vous
exécutez le package SSIS, les informations requises sont chargées à partir du fichier de configuration.
Assurez-vous que les fichiers de configuration sont correctement protégés s’ils contiennent des
informations sensibles.
Méthode 5 : Créer un modèle de package. Pour une résolution à long terme, créez un modèle de package
qui utilise un niveau de protection différent du paramètre par défaut. Ce problème ne se produira pas
dans les futurs packages.
IMPORTANT
Examinez le processus de développement et l’environnement pour déterminer les comptes nécessaires et utilisés sur
chaque ordinateur. Le paramètre EncryptSensitiveWithUserKey de la propriété ProtectionLevel est un paramètre
puissant. Ce paramètre ne doit pas être réduit, car il provoque d’abord des complications de déploiement. Vous pouvez
chiffrer les packages lorsque vous êtes connecté au compte approprié. Vous pouvez également utiliser l’utilitaire d’invite
de commandes SSIS Dtutil.exe pour modifier les niveaux de protection à l’aide d’un fichier .cmd et du sous-système de
commande de l’agent SQL Server. Par exemple, suivez ces étapes. Étant donné que vous pouvez utiliser l’utilitaire
Dtutil.exe dans des boucles et des fichiers de lots, vous pouvez suivre ces étapes pour plusieurs packages en même temps.
NOTE
Étant donné que la clé inclut le nom d’utilisateur et le nom de l’ordinateur, l’effet du déplacement des packages
vers un autre ordinateur peut être limité.
OnError,DOMAINNAME,DOMAINNAME\USERNAME,FTP Task,{C73DE41C-D0A6-450A-BB94-DF6D913797A1},{2F0AF5AF-2FFD-4928-
88EE-1B58EB431D74},4/28/2006 1:51:59 PM,4/28/2006 1:51:59 PM,-1073573489,0x,Unable to connect to FTP server
using "FTP Connection Manager".
Error: 2006-04-27 18:13:34.76 Code: 0xC0202009 Source: AgentTesting Connection manager "(local).msdb"
Description: An OLE DB error has occurred. Error code: 0x80040E4D. An OLE DB record is available. Source:
"Microsoft SQL Native Client" Hresult: 0x80040E4D Description: "Login failed for user
'DOMAINNAME\username'.". End Error
Error: 2006-04-28 13:51:59.19 Code: 0xC0016016 Source: Description: Failed to decrypt protected XML node
"DTS:Property" with error 0x80070002 "The system cannot find the file specified.". You may not be authorized
to access this information. This error occurs when there is a cryptographic error. Verify that the correct
key is available. End Error
Log: Name: OnError Computer: COMPUTERNAME Operator: DOMAINNAME\username Source Name: Execute SQL Task Source
GUID: {C6C7286D-57D4-4490-B12D-AC9867AE5762} Execution GUID: {7AFE3D9E-5F73-42F0-86FE-5EFE264119C8} Message:
Failed to acquire connection "(local).msdb". Connection may not be configured correctly or you may not have
the right permissions on this connection. Start Time: 2006-04-27 18:13:34 End Time: 2006-04-27 18:13:34 End
Log
Références
Pour plus d’informations sur un problème similaire, voir « Erreur de chargement » lorsque vous essayez
d’exécuter un package services d’intégration SQL Server 2005 dans SQL Server 2005
Pour plus d’informations sur l’utilisation de l’utilitaire Dtutil.exe dans les opérations par lots, voir
Comment utiliser l’utilitaire dtutil (Dtutil.exe) pour définir le niveau de protection d’un lot de packages
SSIS (SQL Server Integration Services) dans SQL Server 2005
Pour plus d’informations sur la création de modèles de package, voir Comment créer un modèle de
package dans SQL Server Business Intelligence Development Studio
Pour plus d’informations sur la sécurité du package SSIS et la propriété, voir la rubrique Considérations
de sécurité pour les services d’intégration ProtectionLevel dans SQL Server 2005 Books Online.
Malheureusement, les utilisateurs ne savent pas que les paramètres d’étape du travail d’agent par défaut les
placent dans cet état. Pour plus d’informations sur SQL Server proxies de l’agent de SQL Server et le SSIS,
consultez les rubriques suivantes dans SQL Server 2005 Books Online :
Planification de l’exécution du package dans SQL Server Agent
Création de SQL Server agent de sécurité
L’exécution d’un package SSIS cesse de répondre
lorsque vous activez des transactions DTC pour un
package dans Microsoft SQL Server
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème dans lequel l’exécution d’un package SSIS (Microsoft SQL Server
Integration Services) cesse de répondre si vous activez les transactions DTC pour le package et activez la
propriété d’un composant dans une tâche de flux de ValidateExternalMetadata données.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2253391
Symptômes
Prenons l’exemple du scénario suivant :
Vous créez un package SSIS dans SQL Server.
Le package SSIS contient une tâche de flux de données et d’autres tâches.
La propriété du package SSIS est définie sur TransactionOption Obligatoire pour utiliser les transactions DTC.
Les autres tâches s’exécutent dans une transaction DTC avant l’exécution de la tâche de flux de données.
Vous ajoutez un composant à la tâche de flux de données.
La ValidateExternalMetadata propriété d’un composant de flux de données est définie sur True.
La tâche de flux de données contient un composant OLE DB Destination dont le mode d’accès aux données
est définie sur Table ou Affichage, ou sur nom de table ou variable de nom d’affichage.
Lorsque vous exécutez le package dans ce scénario, l’exécution cesse de répondre. En outre, si vous déboguer le
package SSIS dans Visual Studio, vous recevez des messages qui ressemblent à ce qui suit dans l’affichage
Progression :
Cause
Ce problème se produit car la connexion dans le flux de données n’est pas inscrite dans la transaction DTC. Cela
entraîne le blocage de l’exécution sp_cursoropen de la procédure stockée. Il s’agit d’une fonctionnalité de
conception, car une connexion ne peut pas être inscrite dans une transaction DTC pendant le processus de
validation. Dans le scénario décrit dans la section Symptômes, le processus de validation d’un composant de flux
de données est bloqué lorsque vous exécutez le package, car la connexion dans la tâche de flux de données n’a
pas été inscrite dans la transaction DTC.
Résolution
Pour résoudre ce problème, utilisez l’une des méthodes suivantes :
Définissez ValidateExternalMetadata pour tous les composants de la tâche de flux de données sur False .
Définissez le mode d’accès aux données du composant OLE DB Destination sur l’un des modes suivants :
Table ou affichage - chargement rapide
Nom de la table ou variable de nom d’affichage - chargement rapide
SQL commande
Plus d’informations
Le mode d’accès aux données table ou affichage est bloqué, mais les autres modes d’accès aux données ne le
sont pas car les différentes commandes émises par le fournisseur de données pour chaque mode d’accès aux
données. Pour obtenir plus de détails sur ce problème, utilisez SQL Server Profiler pour voir les différentes
commandes émises par le fournisseur de données.
Pour plus d’informations sur l’utilisation SQL Server Profiler, voir SQL Server Profiler modèles et
autorisations.
Pour plus d’informations sur la résolution des problèmes de packages SSIS, voir Troubleshooting Package
Development.
Message d’erreur lorsque vous déployez un package
SSIS sur un autre serveur dans SQL Server
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque le package SSIS utilise le composant
nettoyage Data Quality Client pour nettoyer les données de flux de données dans un environnement SQL Server.
Version du produit d’origine : SQL Server 2012 Business Intelligence, SQL Server 2012 Developer, SQL Server
2012 Enterprise
Numéro de la ko d’origine : 2882914
Symptômes
Prenons l’exemple du scénario suivant :
Vous créez une conception de package SSIS (SQL Server Integration Services) qui utilise le composant
nettoyage des services de qualité des données (DQS) pour nettoyer les données de flux de données dans un
environnement Microsoft SQL Server 2012 ou SQL Server 2014.
Vous déplacez le package SSIS d’un environnement serveur vers un autre. Par exemple, vous déployez le
package SSIS sur un autre serveur.
Vous mettez à jour le gestionnaire de connexion nettoyage DQS pour qu’il pointe vers le nouveau nom de
serveur.
Dans ce scénario, vous recevez le message d’erreur suivant :
Cause
Ce problème se produit lorsque le numéro d’ID de la base de connaissances DQS, tel que 1000999, n’existe pas
sur l’instance de destination de SQL Server dans la base de données DQS_MAIN données.
Le nombre varie chaque fois que vous modifiez et publiez la base de connaissances DQS (KB). Le numéro
d’identification est un identificateur unique pour chaque ko DQS publié et ne correspond qu’à une seule Ko.
Lorsque le package SSIS est persistant dans le fichier .dtsx ou dans la base de données SSISDB, l’ID numérique
de la base de données DQS est mémoriser dans les balises de conception, comme dans l’exemple suivant :
Le nom du serveur DQS et le numéro de la base de données de la base de données restent cohérents même
lorsque vous déplacez les packages SSIS vers différents serveurs.
Pour vérifier qu’il en est la cause, connectez-vous au moteur de base de données SQL Server qui héberge les
bases de données des services de qualité des données, puis exécutez la requête suivante pour déterminer si l’ID
de la base de données mentionné dans le message d’erreur existe :
NOTE
Si vous exportez une ko DQS, puis importez la ko dans une instance DQS, le numéro d’ID change lorsque la ko est
importée, puis publiée. Par conséquent, même si les éléments de conception de la base de données sont identiques, il se
peut que le nombre ne soit plus synchronisé entre la conception du package SSIS et la base de données de qualité de la
base de données publiée.
NOTE
La propriété du composant nettoyage DQS n’est pas dynamique et n’est pas configurable avec les KnowledgebaseName
configurations, expressions, variables ou environnements SSIS classiques. Il s’agit d’une limitation de conception SQL
Server 2012 et SQL Server 2014.
Solution de contournement
Pour contourner ce problème, suivez les étapes suivantes :
1. Modifiez le nom du serveur DQS ou déployez le package SSIS dans un autre environnement serveur.
2. Ouvrez le package des services d’intégration dans le concepteur SQL Server Data Tools.msdn.
3. Recherchez la tâche de flux de données concernée.
4. Double-cliquez sur le composant nettoyage DQS pour afficher l’éditeur personnalisé.
5. Mettez à jour la base de connaissances répertoriée dans la liste de listes de la Base de connaissances sur la
qualité des données.
6. Cliquez sur OK, puis enregistrez le package.
Pour éviter ce problème, veillez à pointer vers la même instance DQS, même lorsque vous déployez des
packages SSIS entre différents serveurs. Par conséquent, pendant le développement de SSIS et avant le
déploiement vers un système de production, vous pouvez ajuster les noms des serveurs dans le gestionnaire de
connexions, puis effectuer cette solution de contournement.
NOTE
Bien que vous pouvez modifier manuellement les balises XML dans une conception de package SSIS, cette procédure n’est
pas prise en charge. Vous pouvez le faire à vos propres risques en visualisant le code du fichier .dtsx dans un éditeur de
texte, en localisant la balise XML appropriée, puis en ajustant la propriété pour corriger le KnowledgeBaseName numéro.
Pour déterminer le nombre possible, exécutez la requête suivante pour vérifier la colonne d’ID de chaque nom de la Ko
correspondante :
Cet article vous aide à résoudre le problème qui se produit lorsque vous configurez votre SQL Server pour
utiliser les connexions chiffrées et l’option de taille des paquets réseau.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2006769
Symptômes
Prenons le scénario suivant pour SQL Server environnements de travail :
Vous configurez votre SQL Server pour utiliser activer les connexions chiffrées au Moteur de base de
données connexions.
Vous configurez votre serveur SQL pour utiliser une option de taille de paquet réseau supérieure à la
valeur par défaut (4K).
Dans ce scénario, vous remarquerez les choses suivantes :
Une tentative d’enregistrer des packages SSIS dans le magasin de packages MSDB échoue avec le
message d’erreur suivant :
NOTE
Vous pouvez également exécuter le message d’erreur ci-dessus lors de l’enregistrement des plans de maintenance
créés dans SQL Server Management Studio en tant que packages SSIS dans des bases de données MSDB, car
cette opération utilise intrinsèquement le chiffrement pour les connexions à SQL Server.
La fonctionnalité de collecteur de données SQL Server qui utilise SSIS, présente différents problèmes,
comme indiqué ci-dessous :
Un travail jeu de collecte de données signale les erreurs suivantes dans l’historique des travail :
dcexec : Erreur : erreur interne chez Main (raison : le système ne peut pas trouver le fichier spécifié).
dcexec: Error: Internal error at Main (Reason: The handle is invalid).
Lorsque vous exécutez un jeu de collecte de données directement à partir des données, vous pouvez
rencontrer le message d’erreur suivant :
Le package « Set_{7B191952-8ECF-4E12-AEB2-EF646EF79FEF}_Master_Package_Collection » a
échoué.
Si vous examinez les journaux du collecteur de données, vous trouverez un message d’erreur semblable au
suivant :
Le problème peut se produire avec toute opération qui utilise les méthodes
Application.LoadFromSqlServer(String, String, String, String, IDTSEvents) ou
Application.SaveToSqlServer(Package, IDTSEvents, String, String, String) lorsque les conditions (chiffrement et
taille des paquets de grande taille) abordées dans cette section sont vraies.
Cause
Secure Socket Layer (SSL) et son remplacement, Transport Layer Security(TLS), limitent les fragments de
données à 16 000 (16 384) de taille. Cela est documenté dans la norme RFC 2246 publique (section 6.2.2) et
l’implémentation actuelle des protocoles réseau, et la couche points de terminaison TDS respecte cette
spécification. Ainsi, lorsque vous utilisez une taille de paquet réseau supérieure à 16 000 dans les
environnements où le chiffrement est activé sur SQL Server, vous êtes face à des erreurs abordées dans la
section Symptômes.
Résolution
Pour résoudre ce problème, spécifiez une taille de paquet réseau qui est plus petite ou égale à 16 384 octets.
Vous pouvez utiliser le code suivant pour définir network packet size l’option de configuration de la procédure
stockée système sp_configure :
NOTE
Si MARS est activé, le fournisseur SMUX ajoute un en-tête de 16 octets au paquet avant le chiffrement SSL, réduisant ainsi
la taille maximale des paquets réseau à 16 368 octets.
La taille des paquets réseau peut également être modifiée via la page Propriétés du serveur dans l’Explorateur
d’objets. Sélectionnez l’option Avancé et tapez la nouvelle valeur pour Taille des paquets réseau, puis cliquez
sur OK.
NOTE
Vous n’avez pas besoin de redémarrer SQL Server pour que la modification soit effective. Une fois ce paramètre modifié,
toutes les nouvelles connexions reçoivent la nouvelle valeur.
Plus d’informations
TLS et SSL
Étapes à reproduire
sp_configure 'network packet size', 16384
RECONFIGURE WITH OVERRIDE
GO
Cet article vous aide à résoudre le problème où la mise en transit basée sur une entité Master Data Services
(MDS) peut échouer lorsqu’une valeur de balise de lot en double est utilisée dans SQL Server 2012.
Version du produit d’origine : SQL Server 2012
Numéro de la ko d’origine : 2712547
Symptômes
Prenons l’exemple du scénario suivant :
Vous utilisez la Microsoft SQL Server 2012 MDS intermédiaire basé sur une entité pour importer des
données dans MDS.
Vous devez remplir diverses tables MDS de transit (stg.name) avec les données de transit à l’aide de la
colonne pour BatchTag identifier le lot.
Vous utilisez la même valeur pour remplir une table intermédiaire distincte qui appartient à une autre
entité dans un BatchTag modèle MDS différent.
Vous exécutez les procédures stockées nécessaires pour démarrer le traitement par lots. Sinon, vous
démarrez le lot intermédiaire à partir de la zone fonctionnelle Gestion de l’intégration sur le MDS web.
Lorsque vous démarrez le processus intermédiaire, vous utilisez l’une des trois procédures stockées :
stg.udp_name_Leaf
stg.udp_name_Consolidated
stg.udp_name_Relationship
NOTE
L’espace réservé est le nom de la table intermédiaire spécifiée lors de la création de <name> l’entité.
Les exemples suivants montrent comment démarrer le processus intermédiaire à l’aide de la procédure stockée
intermédiaire :
exec mds.stg.udp_entityname1 'versionAdescription',0,'batchtag'
Dans ce scénario, vous recevez le message d’erreur suivant lorsque vous démarrez le processus intermédiaire :
MDSERR310029
État du lot spécifié non valide.
En outre, lorsque vous vérifiez l’état du lot, vous remarquez que le lot qui a la valeur reste bloqué indéfiniment
dans l’état BatchTag En cours d’exécution.
NOTE
Vous pouvez vérifier l’état du lot à partir du site web MDS en cliquant sur Gestion de l’intégration, puis en sélectionnant le
modèle pour afficher l’état ou en interrogeant la [mdm].[tblStgBatch] table.
Cause
Ce problème se produit parce que le MDS intermédiaire basé sur une entité vérifie l’état, quel que BatchTag soit
MDS modèle.
Résolution
Si votre lot est bloqué dans l’état En cours d’exécution, arrêtez le processus de traitement par lots, puis essayez
de traiter à nouveau le lot. Pour arrêter le processus de traitement par lots, exécutez l’instruction SQL : Pour
résoudre ce problème, mettez à jour la valeur BatchTag dans la table intermédiaire pour les enregistrements
avec un Exec [mdm].[udpStagingBatchQueueActivate] nouveau nom. En outre, assurez-vous que le
importstatus_ID champ est définie sur 0 pour les enregistrements.
Plus d’informations
Pour plus d’informations sur le démarrage du processus intermédiaire, voir le site web suivant :
Staging Stored Procedure (Master Data Services)
SQL Server Archive vidéo
Vue d’ensemble : importation de données à partir de tables (Master Data Services)
Importer des états (Master Data Services)
MDS La commande Valider la version échoue avec
une erreur de serveur SQL Server 2012 et SQL
Server 2014
13/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème où la commande Master Data Services (MDS) Valider la version
échoue avec une erreur de serveur dans SQL Server 2012 et SQL Server 2014.
Version du produit d’origine : SQL Server 2012, SQL Server 2014
Numéro de la ko d’origine : 2711671
Symptômes
Prenons l’exemple du scénario suivant :
Un administrateur installe Microsoft SQL Server 2012 ou SQL Server 2014 MDS puis déploie le site web
MDS à l’aide d’un nouveau compte de pool d’applications.
Plus tard, accédez au site MDS web, puis suivez les étapes suivantes :
1. Cliquez sur la page Gérer les versions.
2. Cliquez sur la commande Valider la version dans la barre d’outils supérieure.
3. Vous sélectionnez la case à cocher Valider pour le modèle .
4. Vous confirmez que vous voulez vraiment valider cette version ? Invitez-vous, puis cliquez sur
OK.
Dans ce scénario, vous recevez le message d’erreur suivant dans la fenêtre du navigateur :
NOTE
Un problème similaire peut se produire lorsqu’une application microsoft .NET Framework personnalisée utilise la classe API
MDS ValidationGetRequest. This problem is documented on: ValidationGetRequest Class.
Cause
Ce problème se produit car les nouveaux comptes ne sont pas VIEW SERVER STATE autorisés.
Lorsque vous utilisez l’utilitaire Gestionnaire de configuration Master Data Services pour créer un site web MDS,
l’outil vous demande les informations d’identification du compte d’utilisateur du pool d’applications pour
l’identité du pool d’applications.
Ensuite, une fois le MDS et la base de données sélectionnés, l’outil accorde des autorisations au compte. Le
compte d’informations d’identification du pool d’applications spécifié se voir accorder plusieurs autorisations
dans la base de données MDS spécifiée et est ajouté au groupe d’utilisateurs local et au rôle de base de données
dans le catalogue de bases de données MDS_ServiceAccounts mds_exec MDS spécifié.
Toutefois, VIEW SERVER STATE l’autorisation n’est pas accordée à la base de données maître. Parfois, Windows
comptes peuvent avoir cette autorisation dans SQL Server. Toutefois, par défaut, les nouveaux comptes ne sont
pas autorisés.
L’autorisation est utile pour interroger le service Broker à l’aide de l’affichage gestion dynamique (DMV) pour
vérifier la progression de l’activité en VIEW SERVER STATE sys.dm_broker_activated_tasks arrière-plan en file
d’attente.
L MDS’application web exécute en interne la procédure stockée exec mdm.udpValidationIsRunning pour vérifier la
progression de la validation. Toutefois, les informations d’identification du pool d’applications qui exécute la
requête n’ont pas d’autorisations sur le DMV et reçoivent le message d’erreur suivant :
L’instruction suivante à l’intérieur de la procédure échoue et la page web n’est pas rendue :
Solution de contournement
Pour contourner ce problème, utilisez un compte membre du rôle serveur fixe administrateur système pour
accorder manuellement des autorisations au compte désigné pour exécuter le pool d’applications MDS système.
Par exemple, pour accorder manuellement les autorisations, exécutez les commandes suivantes :
USE Master;
GO
NOTE
L’espace réservé <domain\MdsWebAppAccount> représente le compte correct pour votre configuration.
Plus d’informations
Pour déterminer si ce problème est lié à l’autorisation, exécutez une trace de profileur SQL, puis recherchez le
message d’erreur suivant lorsque vous exécutez les instructions comme décrit dans la VIEW SERVER STATE
section Cause :
Ensuite, vérifiez si le compte a des autorisations effectives et ajoutez les autorisations si nécessaire. Pour cela,
procédez comme suit :
1. Ouvrez Management Studio, puis connectez-vous au moteur SQL Server de données qui héberge le
catalogue MDS web.
2. Dans le volet Explorateur d’objets, développez le dossier Sécurité.
3. Recherchez le compte utilisé pour exécuter le pool d’applications MDS IIS.
4. Cliquez avec le bouton droit sur le compte, puis cliquez sur Propriétés.
5. Cliquez sur la page Sécurisables. Dans le volet inférieur, cliquez sur l’onglet Effectif.
Si l’autorisation VIEW SERVER STATE effective est répertoriée, cela n’est probablement pas le
problème.
Si l’autorisation n’est pas répertoriée, revenir à l’onglet Explicite de la boîte de dialogue Propriétés
de connexion, puis cochez la case Afficher les autorisations d’état du serveur pour accorder des
autorisations au compte.
Références
Pour plus d’informations sur l’utilisation de l’application web Master Data Manager pour valider des données,
voir :
Valider une version par rapport aux règles métiers (Master Data Services)
sys.dm_broker_activated_tasks (Transact-SQL)
80020009 d’erreur lorsque vous récupérez des
données à partir SQL
13/08/2021 • 3 minutes to read
Cet article vous aide à résoudre l’erreur 80020009 lorsque vous récupérez des données à partir SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 175239
Symptômes
L’erreur suivante se produit lors de l’accès à un jeu d’enregistrements dans un fichier Active Server Pages (ASP)
qui contient ou tape des données Text d’une table SQL suivante Blob :
Cause
La condition suivante peut provoquer l’erreur :
Les champs Texte/Objet Blob sont sélectionnés dans un ordre précédant les autres types de champs.
Résolution
Lorsque vous traitez des champs BLOB Microsoft SQL Server, vous devez les placer à droite des colonnes non
BLOB dans le groupe de résultats. Pour être sûr, vous devez également lire les colonnes dans l’ordre de gauche à
droite. Ainsi, si vous avez deux colonnes BLOB comme les deux dernières colonnes dans votre groupe de
résultats, lisez la première, puis la seconde. Ne les lisez pas dans l’ordre inverse.
Pour démontrer l’ordre correct de sélection de champ, créez une page ASP dans une Project Visual InterDev et
collez le code suivant dans la page ASP vide. Modifiez la chaîne de connexion pour vous connecter à votre SQL
Server :
NOTE
Vous devez modifier Username= <username> et PWD= <strong password> avec les valeurs correctes avant d’exécuter
ce code. Assurez-vous que l’ID utilisateur dispose des autorisations appropriées pour effectuer cette opération sur la base
de données.
<%@ Language=VBScript %>
<HTML>
<BODY bgcolor=white>
<%
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")'Open the connection.
cn.Open "dsn=yoursystemdsn;Username=<username>;PWD=<strong password>;database=pubs;"
'Notice that the Blob field, pr_info, is last in the field order.
Statut
Ce comportement est inhérent au produit. Toutefois, il ne se produit pas lors de l’utilisation de Mdac 2.1 sp2 ou
une ultérieure avec le pilote 3.7 ou une SQL Server.
Plus d’informations
SQL Server renvoie les données sur le réseau et le client reçoit essentiellement un flux de bits lus
séquentiellement sur le réseau. Avec des colonnes liées (c’est-à-dire que les valeurs peuvent être copiées dans
des mémoires tampons locales et mises en cache à cet effet), le pilote transfère les données de ces colonnes vers
les mémoires tampons. Une fois que les données sont dans des mémoires tampons locales, vous pouvez les lire
dans n’importe quel ordre. Par conséquent, vous pouvez lire les colonnes de résultats dans n’importe quel ordre
lorsque toutes les colonnes sont liées (et non les colonnes BLOB).
Lorsque vous incluez des colonnes BLOB, la longueur de la colonne peut être d’environ 2 gigaoctets et les
bibliothèques d’accès aux données ne lient généralement pas ces colonnes, car le pilote ne peut souvent pas
déterminer exactement la taille de l’objet BLOB tant qu’il n’a pas été récupéré. En outre, les bibliothèques d’accès
aux données évitent généralement la mise en cache des données BLOB, car cela peut consommer de grandes
quantités de mémoire et les mettre en cache à la fois dans la bibliothèque d’accès aux données et votre
application est inefficace. Si le pilote d’accès aux données est invité à renvoyer le contenu d’une colonne BLOB, il
rejette généralement les colonnes non liées qui précèdent la colonne BLOB demandée, car il doit récupérer le
flux de données séquentiel avant de pouvoir lire la colonne demandée. Par conséquent, il est plus efficace de lire
votre ensemble de résultats de gauche à droite, car cela correspond à la façon dont les données sont récupérées.
NOTE
Cela décrit le comportement des SQL Server. Oracle et d’autres SGBD client/serveur peuvent faire la même chose, mais ce
n’est pas obligatoire.
Une meilleure solution consiste peut-être à éviter d’utiliser une colonne de texte. Étant donné SQL Server de
l’espace en blocs de 2K, l’utilisation de colonnes de texte peut entraîner une utilisation inefficace du stockage si
la longueur du texte est faible. Le temps de sauvegarde est également affecté car le vidage du journal des
transactions prend plus de temps. Il est souvent préférable de créer une autre table qui possède le PK de votre
table existante, une colonne de numéro de bloc et une varchar (255) colonne. Divisez le texte en autant de
blocs de 255 caractères nécessaires et insérez autant de lignes dans le nouveau tableau que de blocs. Il vaut
généralement la peine d’utiliser davantage de temps de codage, car vous utilisez plus efficacement le stockage
et les sauvegardes sont beaucoup plus rapides.
Vous ne pouvez pas traduire correctement les
données de caractères d’un client vers un serveur à
l’aide du pilote ODBC SQL Server si la page de
code client diffère de la page de code serveur
12/08/2021 • 6 minutes to read
Cet article vous aide à contourner un problème qui provoque une traduction incorrecte des données client lors
de l’utilisation SQL Server pilote ODBC.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 234748
Symptômes
Lorsque vous utilisez MDAC 2.1 ou une version ultérieure du pilote ODBC SQL Server (version 3.70.0623 ou
ultérieure) ou du fournisseur OLEDB (version 7.01.0623 ou ultérieure), dans certaines circonstances, vous
pouvez faire l’expérience de la traduction des données de caractères de la page de code client vers la page de
code serveur, même lorsque la connexion est Autotranslation désactivée.
Cause
Autotranslation n’est pas le seul mécanisme qui peut entraîner une conversion de page de code. Le pilote
ODBC SQL Server 7.0 et le fournisseur OLEDB introduisent un nouveau comportement lors de la connexion à
MSDE 1.0, SQL Server 7.0 ou à des versions ultérieures de l’une ou l’autre. Toutes SQL instructions envoyées en
tant qu’événement de langue sont converties en Unicode sur le client avant d’être envoyées au serveur. L’effet
final est similaire à une de toutes les données qui circulent du client vers le serveur via un événement de langue,
quel que soit le paramètre actuel Autotranslation Autotranslation de la connexion. Cela n’introduit aucune
difficulté, sauf lorsque vous essayez de stocker des données de caractères non traduites à partir d’une page de
code autre que SQL Server page de code.
Solution de contournement
Ne stockez pas de données X de page de code dans une page de code Y SQL Server (par exemple, la page de
code 950 données dans une page de code 1252 serveur). Bien que cela était possible dans certaines
circonstances avec les versions précédentes de SQL Server, elle n’a toujours pas été pris en compte. Pour un
chiffre de 1 252 SQL Server, tout autre qu’un caractère de 1 252 n’est pas une donnée de caractère valide. Les
données de caractères non Unicode d’une autre page de code ne seront pas triées correctement et, dans le cas
des données codées sur deux caractères (DBCS), SQL Server ne reconnaîtra pas correctement les limites des
caractères. Cela peut entraîner des problèmes importants.
Le meilleur choix pour la page SQL Server code est la page de code des clients qui accèderont au serveur.
Le serveur et le client peuvent avoir des pages de code différentes, mais vous devez vous assurer que la
traduction automatique est activée sur le client afin que vous receviez correctement la traduction des données
vers et depuis la page de code du serveur dans tous les cas.
Si votre serveur doit stocker des données à partir de plusieurs pages de code, la solution prise en charge
consiste à stocker les données dans les colonnes Unicode ( NCHAR/NVARCHAR/NTEXT ).
Si votre situation nécessite que vous stockiez des données de page de code X dans une page de code SQL
Server Y, il existe deux façons de le faire de manière fiable :
Stockez les données dans des colonnes binaires ( BINARY/VARBINARY/IMAGE ).
Écrivez votre application pour utiliser les appels de procédure distante (RPCs) pour toutes les SQL qui traitent
des données de caractères. Les données envoyées via un événement RPC ne sont pas soumises à la
conversion. Vous ne pouvez rien faire au niveau du pilote ou de la DSN pour modifier le type d’événements
envoyés. Le fait qu’une commande soit envoyée en tant que langage ou événement RPC dépend entièrement
des API et de la syntaxe choisies par le programmeur lors de l’écriture de l’application.
Plus d’informations
La traduction automatique (c’est-à-dire, la case à cocher Effectuer la traduction des données de caractères dans
les applications ODBC les plus récentes) convertit les données de caractères de la page de code client en page
de code serveur avant d’envoyer les données au serveur, en utilisant Unicode comme support de traduction.
Toutefois, le pilote ODBC 3.7 SQL Server convertit également toutes les instructions SQL envoyées en tant
qu’événement de langue en Unicode avant de les placer sur le réseau, ce qui a un effet similaire à la traduction
automatique, mais qui n’est pas régi par le paramètre de traduction automatique. En revanche, les données de
caractères qui circulent du serveur vers les clients respectent l’indicateur de traduction automatique . Si la
traduction automatique est désactivée, les données arrivent à l’application cliente avec les mêmes codes de
caractères que les données sur le serveur. De même, la traduction des données pour les événements RPC de
client à serveur peut être désactivée en désactivant la traduction automatique. Script simple qui montre
comment le comportement affecte les événements de langue suit. Cet exemple a été exécuté à partir de
l’Analyseur de requêtes sur un client de la page de code 1252 qui se connecte à un serveur 437 de la page de
code :
c1 c2
----------- ---- -----------
1 157
(1 row(s) affected)
c1 c2
----------- ---- -----------
1 ¥ 157
2 ¥ 157
(2 row(s) affected)
Dans ce cas, le fait de revenir en arrière n’a eu aucun effet sur la traduction du client vers le serveur (c’est-à-dire
que la même traduction correcte du code de caractère 165 au code de caractère 157 s’est produite), mais elle a
eu un effet sur les données extraites du Autotranslation serveur. Lorsque l’instruction SELECT est exécuté cette
fois (avec on), les symboles de symboles s’affichent correctement dans la page de code 1252 de l’application, car
ils ont été convertis du code de caractère 157 au code de caractère 165 par le Autotranslation Autotranslation
mécanisme.
Vous verrez ce comportement (conversion d’événements de langue en Unicode sur le client) lorsque vous
utilisez un pilote ODBC SQL Server version 3.70 ou ultérieure et que vous vous connectez à SQL Server 7.0 ou
version ultérieure. Elle ne se produit pas lorsque vous utilisez des pilotes ODBC plus anciens ou lorsque vous
utilisez le pilote 3.7 pour vous connecter à SQL Server 6.5 ou une antérieure. En outre, si vous stockez vos
données dans des colonnes Unicode () la conversion ne NCHAR/NVARCHAR/NTEXT sera pas un problème.
Pour plus d’informations sur la représentation des données de caractères dans SQL Server 2005, voir Character
data is represented incorrectly when the code page of the client computer differs from the code page of the
database in SQL Server 2005.
Vérifier la version de MDAC
12/08/2021 • 2 minutes to read
Résumé
Cet article décrit deux façons différentes de vérifier la version de Microsoft Data Access Components (MDAC)
installée sur un système :
Utilisez l’outil De vérification des composants.
Vérifiez les informations de version stockées dans le Registre.
Pour utiliser le contrôle de composant pour vérifier la version MDAC, suivez les étapes suivantes :
1. Dans le menu Démarrer, cliquez sur Exécuter.
2. Dans la zone de texte Ouvrir, c:\CompChecker\CC.exe tapez, puis cliquez sur OK.
3. Dans la boîte de dialogue Vérification des composants - Choisissez Type d’analyse, sélectionnez Effectuer
une analyse de votre ordinateur et déterminer automatiquement la version finale, puis cliquez sur OK .
4. Le programme tente d’identifier la version MDAC sur votre ordinateur en analysant tous les fichiers
MDAC principaux et les paramètres de Registre. Ce processus prend normalement plusieurs minutes.
Lorsque vous avez terminé, vous devez recevoir le message suivant :
La version MDAC la plus proche de la version sur votre ordinateur est « XXXX ».
5. Cliquez sur OK .
6. Un résumé de l’analyse de vérification des composants s’affiche.
NOTE
Les erreurs Dir, FileDescription et FileSize peuvent être ignorées en toute sécurité.
4. Dans le volet Détails, recherchez et dans la colonne FullInstallVer Version Nom. Chacune de ces clés
aura les informations de version correspondantes dans la colonne Données.
5. Lorsque vous avez terminé, cliquez sur Quitter dans le menu Registre pour fermer l’Éditeur du Registre.
Les téléchargements des composants d’accès aux données Microsoft sont disponibles SQL développeur de
données.
Erreur lorsque vous utilisez le curseur client pour
ajouter un enregistrement à SQL Server table qui a
une valeur par défaut dans le champ Datetime
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez le curseur client pour ajouter un
enregistrement à une table SQL Server qui a une valeur par défaut dans le champ Datetime.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 279888
Symptômes
Si vous utilisez ADO pour insérer un nouvel enregistrement via un jeu d’enregistrements côté client dans une
table SQL Server avec un champ non nullable avec une valeur par défaut, vous recevez le message d’erreur
suivant si vous ne fournissez pas de valeur pour le champ datetime datetime :
Erreur d'2147217887 '-2147217887 (80040e21) : une opération en plusieurs étapes a généré des erreurs.
Vérifiez chaque valeur d’état.
Cette erreur se produit si vous utilisez le fournisseur OLE DB pour SQL Server ou le fournisseur OLE DB pour les
pilotes ODBC. Le message d’erreur peut différer lorsque vous utilisez Microsoft Data Access Components
(MDAC) version 2.5 Service Pack 1 (SP1) ou une version antérieure. Cette erreur ne se produit pas avec un
curseur côté serveur.
Cause
Cette erreur se produit dans le moteur de curseur client lorsqu’il tente de convertir la valeur du type
DBTYPE_DBTIMESTAMP en DBTYPE_VARIANT .
Résolution
Il existe plusieurs façons de contourner ce problème :
Utilisez un curseur côté serveur pour le jeu d’enregistrements.
Supprimez la valeur par défaut spécifiée pour le champ dans la base de données.
Spécifiez toujours une valeur pour le champ lorsque vous ajoutez un nouvel enregistrement.
2. Pour insérer une ligne dans le tableau, exécutez un code semblable au code suivant.
NOTE
Vous devez modifier l’ID utilisateur = <UID> et le mot de passe = aux <strong password> valeurs correctes avant
d’exécuter ce code. Assurez-vous que <UID> vous disposez des autorisations appropriées pour effectuer cette
opération sur la base de données. Assurez-vous également que vous ne fournissez pas de valeur pour le
datetime champ.
.AddNew
.Fields("Nonsense").Value = "test data"
.Update
End With
Debug.Print rst("TestDate").Value
Vous recevez le message d’erreur mentionné ci-dessus lorsque vous examinez la propriété Value du
datetime champ.
SQL Server ne termine pas l’exécution d’un lot
important d’SQL instructions
13/08/2021 • 6 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous exécutez un grand lot d’instructions
SQL qui renvoient de nombreux jeux de résultats.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 827575
Symptômes
Lorsque vous exécutez un lot important d’instructions SQL qui renvoie de nombreux jeux de résultats, Microsoft
SQL Server peut arrêter le traitement du lot avant que toutes les instructions du lot ne soient exécutées. Les
effets de ce comportement dépendent des opérations effectuées par les instructions batch. Par exemple, si le lot
démarre une transaction au début et la validation à la fin, il se peut que la validation ne se produise pas. Ce
comportement entraîne le blocage des verrous plus longtemps que prévu. Cela peut également entraîner le
retour de la transaction à la fermeture de la connexion. Si le lot ne démarre pas de transaction, les symptômes
du problème peuvent être que certaines instructions ne sont pas exécutées.
Lors du traitement des résultats d’un lot, SQL Server remplit la mémoire tampon de sortie de la connexion avec
les jeux de résultats créés par le lot. Ces jeux de résultats doivent être traitées par l’application cliente. Si vous
exécutez un lot important avec plusieurs jeux de résultats, SQL Server remplit cette mémoire tampon de sortie
jusqu’à ce qu’elle atteint une limite interne et ne puisse pas continuer à traiter d’autres jeux de résultats. À ce
stade, le contrôle retourne au client. Lorsque le client commence à consommer les jeux de résultats, SQL Server
exécute à nouveau le lot, car il existe désormais de la mémoire disponible dans la mémoire tampon de sortie.
Solution de contournement
Pour contourner le problème, utilisez l’une des méthodes suivantes :
Méthode 1 : Vider tous les jeux de résultats de sortie. Dès que tous les jeux de résultats de sortie sont
consommés par le client, SQL Server exécute le lot.
Si vous utilisez Open Database Connectivity (ODBC) pour vous connecter à SQL Server, vous pouvez
appeler la méthode jusqu’à ce que la méthode signale qu’il n’y a plus de jeux SQLMoreResults de
résultats.
Si vous utilisez OLE DB pour vous connecter à SQL Server, vous pouvez appeler à plusieurs reprises la
méthode IMultipleResults::GetResult jusqu’à ce qu’elle retourne DB_S_NORESULT .
Méthode 2 : ajoutez SET NOCOUNT ON l’instruction au début de votre lot. Si le lot est exécuté dans une
procédure stockée, ajoutez l’instruction au début de la définition de procédure stockée. Cela empêche
SQL Server renvoyer de nombreux types de jeux de résultats. Par conséquent, il peut réduire les données
à sortie dans la mémoire tampon de sortie du serveur. Toutefois, cela ne garantit pas que le problème ne
se produira pas. Cela augmente uniquement le risque que les données renvoyées à partir du serveur sont
suffisamment petites pour tenir dans un lot de jeux de résultats.
NOTE
Microsoft recommande de toujours consommer tous les jeux de résultats de SQL Server quelle que soit la taille du lot
que vous exécutez. Si vous ne videz pas ces données et que des jeux de résultats réussis doivent être renvoyés avant
l’erreur dans le lot du jeu de résultats, le client risque de ne pas découvrir les erreurs du serveur.
Les applications clientes doivent vider les jeux de résultats pour garantir une exécution correcte.
Statut
Ce comportement est inhérent au produit.
create proc bigBatch as begin transaction update authors set au_fname = 'newname1' where au_id='172-
32-1176' update authors set au_fname = 'newname2' where au_id='172-32-1176' update authors set
au_fname = 'newname3' where au_id='172-32-1176' ... update authors set au_fname = 'newname1000' where
au_id='172-32-1176' commit transaction
NOTE
Remplacez le texte « ... » avec les instructions de requête de base de données appropriées qui sont similaires aux
autres instructions de requête de base de données dans le code.
2. Créez, puis configurez un nom de source de données (DSN) avec une base de données pubs qui se
connecte au SQL Server.
3. Démarrez l’outil Profiler qui est disponible avec SQL Server’installation.
4. Créez, puis démarrez un nouveau suivi pour le SQL Server à partir de l’outil Profiler.
NOTE
Veillez à ajouter la classe d’événement nommée Procédure stockée pour la nouvelle SQL profileur. Lorsque vous le
faites, vous pouvez voir les étapes individuelles de la procédure lorsqu’elle est exécutée.
5. Connecter à SQL Server à l’aide d’ODBC. Pour cela, procédez comme suit :
a. Ouvrez l’exemple d’outil test ODBC disponible avec l’installation du SDK d’accès aux données (MDAC).
b. Dans le menu Conn, cliquez sur Connecter .
c. Dans la boîte de Connecter complète, cliquez sur le nom de la DSN que vous avez créée à l’étape 2.
d. Assurez-vous que la connexion à SQL Server est réussie.
e. Dans le menu Stmt, cliquez sur SQLExecDirect .
f. Dans la zone StatementText, tapez {call bigBatch}, puis cliquez sur OK .
Dans l’analyse du suivi SQL profileur, vous remarquez que le traitement de la procédure stockée n’est pas
terminé. Toutefois, l’outil test ODBC indique que l’exécution a réussi. Pour extraire tous les jeux de résultats et
provoquer la fin du lot sur le serveur, cliquez sur Obtenir toutes les données dans le menu Résultats. Vous
pouvez vous connecter à SQL Server à l’aide de OLE DB. Pour cela, procédez comme suit :
1. Ouvrez l’exemple d’outil RowsetViewer OLE DB disponible avec le SDK MDAC.
2. Connecter la base de données SQL Server pubs à l’aide de l’option Connecter complète.
3. Dans le menu Commande, pointez sur ICommand, puis cliquez sur Exécuter.
4. Dans la zone Texte cmd, tapez {call bigBatch}.
5. Cliquez IID_IMultipleResults dans la liste REFIID, puis cliquez sur Propriétés.
6. Dans la boîte de dialogue ICommandProper ties::SetProper ties, cliquez sur DBPROP_IMultipleResults,
modifiez la valeur en VARIANT_TRUE puis cliquez sur OK .
7. Cliquez sur OK .
Dans l’analyse du suivi SQL profileur, vous remarquez que le traitement de la procédure stockée n’est pas
terminé. Toutefois, l’outil RowsetViewer indique que l’opération a réussi. Pour récupérer tous les jeux de résultats,
cliquez avec le bouton droit sur l’objet MultipleResults dans le volet gauche, pointez sur IMultipleResults,
puis cliquez sur GetResult . Répétez jusqu’à ce que tous les jeux de résultats soient consommés.
Le problème est plus facile à reproduire lorsque vous êtes connecté au SQL Server à l’aide du protocole Canaux
nommés ou du protocole de mémoire partagée (LPC). Cela est dû à la taille de mémoire tampon interne SQL
Server disponible pour les différents protocoles.
Voici les effets possibles de ce problème. Les effets sont variés et dépendent exactement de ce que contient
votre lot.
Considérez qu’un lot d’instructions de requête de base de données est exécuté à partir d’une application.
Si le lot d’instructions de requête de base de données est composé d’une TRANSACTION BEGIN au début
et de COMMIT TRANSACTION à la fin, il se peut que l’opération de validation ne se produise pas même si
le contrôle est renvoyé à l’application. Il s’agit d’un problème, car les verrous éventuellement mis en
attente peuvent provoquer une transaction en attente et rester ignorés.
Dans ce scénario, étant donné que la transaction n’est jamais committede dans le lot, elle reste en attente
et est resserée lors de la déconnexion du SQL Server.
Si vous utilisez une interface de programme d’application (API) pour commencer et valider votre
transaction, vous pouvez voir le comportement suivant :
Si vous utilisez l’API pour envoyer une notification au serveur pour démarrer une transaction, puis que
vous exécutez le lot, SQL ne peut traiter qu’une partie du lot, puis renvoyer le contrôle à l’application.
Après cette étape, si vous utilisez l’API pour valider la transaction, seule la partie du lot qui a été traitée
est valider. Aucune erreur ne se produit.
Par exemple, avec ODBC, vous appelez pour démarrer la transaction, puis vous
SQLSetConnectAttr(SQL_ATTR_AUTOCOMMIT, SQL_AUTOCOMMIT_OFF) l’utilisez SQLEndTran(SQL_COMMIT) pour
valider la transaction.
Références
Utilisation de plusieurs jeux de résultats actifs (MARS)
NOTE
Si vous utilisez ADO, l’appel de la méthode de l’objet entraîne l’exécution de la méthode par le fournisseur
NextRecordset Recordset OLE IMultipleResults::GetResult DB.
Utilisation de plusieurs jeux de résultats actifs (MARS) dans SQL Server Native Client
SET NOCOUNT (Transact-SQL)
SQLMoreResults
IMultipleResults::GetResult
L’outil Administrateur ODBC affiche les DSN
utilisateur 32 bits et 64 bits dans une version 64 bits
de Windows
13/08/2021 • 3 minutes to read
Cet article fournit une solution de contournement du problème qui se produit dans l’outil Administrateur de
source de données ODBC.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 942976
Symptômes
Une version 64 bits du système d’exploitation Microsoft Windows inclut les versions suivantes de l’outil
Administrateur de source de données ODBC (Odbcad32.exe) :
La version 32 bits du fichier Odbcad32.exe se trouve dans le %systemdrive%\Windows\SysWoW64 dossier.
La version 64 bits du fichier Odbcad32.exe se trouve dans le %systemdrive%\Windows\System32 dossier.
Le Odbcad32.exe de données affiche les types de noms de source de données (DSN) suivants :
DSN système
DSN utilisateur
Symptôme 1
La version 32 bits de l’outil Administrateur ODBC affiche les DSN système 32 bits, les DSN utilisateur 32 bits et
les DSN utilisateur 64 bits. La version 64 bits de l’outil Administrateur ODBC affiche les DSN système 64 bits, les
DSN utilisateur 32 bits et les DSN utilisateur 64 bits.
Symptôme 2
La SQLDataSources fonction renvoie toutes les versions des DSN utilisateur, quelle que soit l’architecture de
l’application. La fonction appelée dans une application 32 bits renvoie uniquement les DSN système pour les
pilotes 32 bits, mais renvoie les DSN utilisateur pour les pilotes SQLDataSources 32 bits et 64 bits. De même, la
fonction appelée dans une application 64 bits renvoie uniquement les DSN système pour les pilotes 64 bits,
mais renvoie les DSN utilisateur pour les pilotes SQLDataSources 32 bits et 64 bits. Par conséquent, si
l’application effectue une connexion à l’aide d’un DSN utilisateur renvoyé par la fonction, vous pouvez recevoir
le SQLDataSources message d’erreur suivant :
Par exemple, prenons le scénario suivant. Vous créez un nom d’utilisateur DSN pour le pilote 32 bits « Pilote
Microsoft Access (*.mdb) ». Ce pilote n’a pas de version 64 bits correspondante. La fonction appelée dans une
application 64 bits renvoie ce SQLDataSources DSN utilisateur 32 bits. Toutefois, si vous vous connectez via ce
nom d’utilisateur 32 bits, vous recevez le message d’erreur mentionné plus haut dans cette section.
Cause
Les DSN utilisateur sont stockés sous la sous-clé de Registre suivante :
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
La redirection du Registre n’est pas activée pour cette sous-clé de Registre. Par conséquent, les DSN utilisateur
sont visibles dans les versions 32 bits et 64 bits de l’outil Administrateur ODBC.
Résolution
Pour maintenir la compatibilité ascendante, aucune résolution de ce problème n’est actuellement disponible.
Solution de contournement
Pour contourner ce problème, utilisez la version appropriée de l’outil Administrateur ODBC. Si vous créez puis
exécutez une application en tant qu’application 32 bits sur un système d’exploitation 64 bits, vous devez créer la
source de données ODBC à l’aide de l’outil Administrateur ODBC dans %windir%\SysWOW64\odbcad32 .exe. Pour
indiquer le type de DSN, vous pouvez ajouter « _32 » aux DSN utilisateur 32 bits et « _64 » aux DSN utilisateur
64 bits.
Plus d’informations
L’outil Administrateur ODBC 64 bits peut être appelé à partir du Panneau de contrôle pour gérer les DSN
utilisateur et les DSN système utilisés par les processus 64 bits. Sur un système d’exploitation 64 bits, l’outil
Administrateur ODBC 32 bits est utilisé pour Windows sur Windows 64 (WOW64). Vous devez appeler
directement l’outil Administrateur ODBC 32 bits à partir du dossier SysWoW64. Vous pouvez utiliser l’outil
Administrateur ODBC 32 bits pour gérer les DSN utilisateur et les DSN système utilisés par les processus
WOW64.
Les DSN système sont stockés dans la sous-clé de Registre suivante :
HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI
La redirection du Registre est activée pour cette sous-clé de Registre. Par conséquent, les DSN système pour les
pilotes 32 bits et pour les pilotes 64 bits sont séparés. L’outil Administrateur ODBC 64 bits n’affiche pas les DSN
système créés par l’outil Administrateur ODBC 32 bits. De même, l’outil Administrateur ODBC 32 bits n’affiche
pas les DSN système créés par l’outil Administrateur ODBC 64 bits. En outre, l’outil Administrateur ODBC 64 bits
n’affiche pas les DSN système qui utilisent des pilotes 32 bits. De même, l’outil Administrateur ODBC 32 bits
n’affiche pas les DSN système qui utilisent des pilotes 64 bits.
Les DSN utilisateur sont stockés dans la sous-clé de Registre suivante :
HKEY_CURRENT_USER\Software\ODBC\ODBC.INI
La redirection du Registre n’est pas activée pour cette sous-clé de Registre. Par conséquent, les deux outils
d’administrateur ODBC affichent tous les DSN utilisateur.
Pour plus d’informations sur la redirection du Registre, voir Redirection du Registre.
Ouvrir une connexion ADO et des objets Recordset
14/08/2021 • 4 minutes to read
Cet article explique comment ouvrir une connexion ADO et des objets Recordset.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 168336
Résumé
ActiveX Data Objects (ADO) offre plusieurs façons d’ouvrir les objets Connection et Recordset. Cet article
présente un exemple de code pour plusieurs techniques courantes pour chaque objet.
Plus d’informations
Il existe plusieurs façons d’ouvrir un objet Connection dans ADO :
En fixant ConnectionString la propriété sur une chaîne Connecter valide, puis en appelant la Open()
méthode. Cette chaîne de connexion dépend du fournisseur.
En passant une chaîne Connecter valide au premier argument de la Open() méthode.
En passant un objet Command valide dans le premier argument de la méthode Open d’un objet Recordset.
En passant le nom de la source de données ODBC et éventuellement l’ID utilisateur et le mot de passe à la
méthode de l’objet Open() Connection.
Il existe trois façons d’ouvrir un objet Recordset dans ADO :
En ouvrant le recordset à partir de la Connection.Execute() méthode.
En ouvrant le recordset à partir de la Command.Execute() méthode.
En ouvrant l’objet Recordset sans objet Connection ou Command et en passant une chaîne Connecter valide
au deuxième argument de la Recordset.Open() méthode.
Ce code suppose que Nwind.mdb est installé avec Visual Basic, et se trouve dans
C:\Program Files\DevStudio\VB directory :
Option Explicit
Dim i As Integer
Dim AccessConnect As String
'--------------------------
' Recordset Object Methods
'--------------------------
' Recordset Open Method #4: Open w/o Connection & w/Connect String
Rs1.Open "SELECT * FROM Employees", AccessConnect, adOpenForwardOnly
Rs1.Close
Done:
Set Rs1 = Nothing
Exit Sub
AdoError:
i = 1
On Error Resume Next
AdoErrorLite:
' Get VB Error Object's information
strTmp = strTmp & vbCrLf & "VB Error # " & Str(Err.Number)
strTmp = strTmp & vbCrLf & " Generated by " & Err.Source
strTmp = strTmp & vbCrLf & " Description " & Err.Description
MsgBox strTmp
REMARQUES D’ERREUR
Seul l’objet Connection ADO possède une collection d’erreurs. Le lecteur observateur remarquera qu’un handler
d’erreurs léger est en vigueur pour les RecordSet.Open exemples. En cas d’erreur lors de l’ouverture d’un objet
RecordSet, ADO doit renvoyer l’erreur la plus explicite du fournisseur OLEDB. Voici quelques erreurs courantes
qui peuvent être rencontrées avec le code précédent.
Si vous omettez (ou qu’une erreur s’est produite) dans le paramètre DefaultDir dans la chaîne de connexion,
vous pouvez recevoir l’erreur suivante :
En cas d’erreur dans le paramètre Dbq dans la chaîne de connexion, vous pouvez recevoir l’erreur suivante :
Erreur ADO # -2147467259 Description [Microsoft][Pilote ODBC Microsoft Access 97] Impossible de trouver
le fichier '(inconnu) ».
Fournisseur Microsoft OLE DB source pour les pilotes ODBC
Les erreurs précédentes complètent également la collection d’erreurs de connexion avec les erreurs suivantes :
NOTE
Pour chaque erreur, le numéro d’erreur ADO est le même, en l’occurrence en 0x80004005, qui est le message d’erreur
E_FAIL générique. Le composant sous-jacent n’a pas de numéro d’erreur spécifique pour la condition rencontrée, mais des
informations utiles n’ont jamais été moins élevées dans ADO.
Références
Microsoft ActiveX Data Objects (ADO)
Utilisation d’un objet Connection
Récupérer des valeurs dans SQL Server procédures
stockées avec ADO
12/08/2021 • 6 minutes to read
Cet article montre comment récupérer des valeurs dans SQL Server procédures stockées avec ADO.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 194792
Résumé
Il existe des problèmes importants à prendre en compte lors de la tentative de récupération de valeurs à partir
SQL Server RAISERROR/PRINT/RETURN procédures stockées via ActiveX Data Objects (ADO). Voici trois problèmes :
RAISERROR dans SQL Server doit être un niveau de gravité de 11 à 18.
Les instructions PRINT SQL Server peuvent également remplir la collection d’erreurs ADO. Toutefois, les
instructions PRINT sont de niveau de gravité zéro (0) de sorte qu’au moins une instruction est requise
dans la procédure stockée pour récupérer une instruction PRINT avec ADO via la RAISERROR collection
Errors.
Les valeurs RETURN d’une procédure stockée doivent être associées à au moins un groupe de résultats.
Plus d’informations
L’exemple de code suivant illustre la navigation dans la collection Errors ADO pour accéder aux détails à partir
d’SQL Server procédure stockée renvoyant plusieurs RAISERROR/PRINT/RETURN jeux de résultats :
1. Collez et exécutez le code suivant dans la fenêtre SQL Server Management Studio (SSMS) après avoir
créé la base de données Pubs pour créer la procédure stockée utilisée pour l’exemple ADO à l’étape 4 :
use pubs
GO
if exists (select * from sysobjects where id = object_id('dbo.ADOTestRPE') and sysstat & 0xf = 4)
drop procedure dbo.ADOTestRPE
GO
IF @R1Num > 0
BEGIN
SET ROWCOUNT @R1Num
SELECT 'Resultset 1' RsNum, Title
FROM Pubs..Titles
SET ROWCOUNT 0
END
IF @P1Num > 0
BEGIN
SELECT @iLoop = 0
WHILE @iLoop < @P1Num
BEGIN
SELECT @iLoop = @iLoop + 1
SELECT @PrintText = 'PRINT.Resultset.1: Line ' +
CONVERT(char(2), @iLoop)
PRINT @PrintText
END
END
IF @E1Num > 0
BEGIN
SELECT @iLoop = 0
WHILE @iLoop < @E1Num
BEGIN
SELECT @iLoop = @iLoop + 1
SELECT @iErrNum = @iLoop + 201000
RAISERROR ("RAISERROR.Resultset.1", 11, 2)
END
END
/* Resultset 2 ******************************* */
IF @R2Num > 0
BEGIN
SET ROWCOUNT @R2Num
SELECT 'Resultset 2' RsNum, Title
FROM Pubs..Titles
SET ROWCOUNT 0
END
IF @P2Num > 0
BEGIN
SELECT @iLoop = 0
WHILE @iLoop < @P2Num
BEGIN
SELECT @iLoop = @iLoop + 1
SELECT @PrintText = 'PRINT.Resultset.2: Line ' +
CONVERT(char(2), @iLoop)
PRINT @PrintText
END
END
IF @E2Num > 0
BEGIN
SELECT @iLoop = 0
WHILE @iLoop < @E2Num
BEGIN
SELECT @iLoop = @iLoop + 1
select @SetRtn = -1
RETURN @SetRtn
GO
2. Créez un projet .EXE standard dans Visual Basic. Form1 est créé par défaut.
3. Dans le menu Project, choisissez Références et sélectionnez la bibliothèque d’objets ActiveX Microsoft.
NOTE
Vous devez utiliser ADO version 2.0 ou ultérieure pour que le code fonctionne correctement. Vous pouvez obtenir
les derniers composants Microsoft Data Access Components (MDAC) sur le Web à l’adresse : MDAC.
4. Placez un bouton Commande sur le formulaire, puis collez le code suivant dans la section Déclarations
générales du formulaire. Vous devrez peut-être modifier la chaîne de connexion de base de données pour
votre environnement.
Sub CreateParms()
strConnect = "driver={SQL
Server};server=(local);uid=sa;pwd=;database=pubs"
'Parameter 2
sParmName = "R1Num" 'Number of rows to return in Resultset 1.
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, _
adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = 1
'Parameter 3
sParmName = "P1Num" 'Number of PRINT statements in Resultset 1.
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, _
adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = 0
'Parameter 4
sParmName = "E1Num" 'Number of RAISERROR statements in Resultset
'1.
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, _
adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = 0
'Parameter 5
sParmName = "R2Num" 'Number of rows to return in Resultset 2.
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, _
adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = 2
'Parameter 6
sParmName = "P2Num" 'Number of PRINT statements in Resultset 2.
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, _
adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = 0
'Parameter 7
sParmName = "E2Num" 'Number of RAISERROR statements in Resultset
' 2.
Set ADOPrm = ADOCmd.CreateParameter(sParmName, adInteger, _
adParamInput)
ADOCmd.Parameters.Append ADOPrm
ADOCmd.Parameters(sParmName).Value = 0
GoTo Shutdown
ErrHandler:
Call ErrHandler(ADOCon)
Resume Next
Shutdown:
Set ADOCmd = Nothing
Set ADOPrm = Nothing
Set ADORs = Nothing
Set ADOCon = Nothing
End Sub
Call CreateParms
End Sub
objCon.Errors.Clear
End Sub
5. Modifiez la valeur des paramètres 2 à 7 pour modifier le nombre d’instructions et/ou d’instructions
générées par la procédure stockée et renvoyées via PRINT RAISERROR ADO. Exécutez à nouveau Visual
Basic exemple de code et notez que les instructions et les instructions sont renvoyées par le biais de la
collection d’erreurs RAISERROR PRINT ADO. Modifiez les valeurs pour expérimenter différentes
combinaisons PRINT/RAISERROR d’instructions avec différents jeux de résultats. Reportez-vous SQL
procédures stockées pour des solutions de contournement spécifiques pour des cas particuliers.
Pour récupérer une valeur RETURN dans ADO avec une procédure stockée, il doit y avoir au moins un resultset.
Pour contourner ce problème, lorsqu’aucun jeu de résultats n’est spécifié (dans l’exemple de code ADO), la
procédure stockée exécute une valeur SELECT NULL pour renvoyer un jeu de résultats null à ADO, ce qui remplit
la valeur RETURN. En outre, pour contourner le problème de spécification d’aucune instruction et d’une
combinaison d’instructions, les instructions par défaut sont générées afin de fournir un contexte pour renvoyer
l’instruction RAISERROR PRINT via RAISERROR PRINT ADO. Vous devez coder les instructions au format indiqué
dans la procédure stockée, car seuls les niveaux de gravité de 11 à 18 reviennent par le biais de la collection
d’erreurs RAISERROR ADO.
Références
RAISERROR (Transact-SQL)
SQL Server clients peuvent modifier les protocoles
lorsque les ordinateurs clients tentent de se
connecter à une instance de SQL Server
13/08/2021 • 2 minutes to read
Cet article présente SQL Server clients peuvent modifier les protocoles lorsque les ordinateurs clients tentent de
se connecter à une instance de SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 328383
Résumé
Les ordinateurs clients qui ont microsoft Data Access Components (MDAC) version 2.6 ou ultérieure peuvent
essayer plusieurs protocoles ou mécanismes IPC (Interprocess Communication) pour établir des connexions à
SQL Server.
Plus d’informations
Une amélioration a été apportée à la bibliothèque réseau côté client, Dbnetlib.dll pour MDAC version 2.6 et
versions ultérieures. Avec MDAC version 2.6 et versions ultérieures, si plusieurs protocoles sont disponibles et
qu’une tentative de connexion avec le premier protocole échoue, l’application cliente tente immédiatement
d’utiliser l’un des autres protocoles.
Par défaut, les clients disposent de protocoles TCP et Canaux nommés en tant que protocoles disponibles. Vous
pouvez manipuler l’ordre de protocole à l’aide de l’utilitaire SQL Server client. L’application cliente utilise les
protocoles dans l’ordre spécifié sur l’ordinateur client. L’ordre de protocole est stocké à l’emplacement de clé de
Registre suivant sous la valeur ProtocolOrder :
HKLM\Software\Microsoft\MSSQLServer\Client\SuperSocketNetLib
Si vous utilisez SQL Server 2005, l’ordre de protocole est stocké dans l’entrée de Registre ProtocolOrder sous
la sous-clé de Registre suivante :
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\Client\SNI<version>
Par exemple, si un ordinateur client dispose à la fois de TCP et de canaux nommés, et que la commande est la :
TCP
Canaux nommés
Lorsque l’ordinateur client tente d’établir une connexion TCP au serveur et que la tentative de connexion renvoie
un code de retour non nul, le client tente de façon transparente une connexion à l’aide du protocole suivant de la
liste, nommé Canaux. Dans ce scénario, le client ne peut pas établir de connexion TCP ; toutefois, le client a réussi
à établir une connexion Canaux nommés.
NOTE
Le client ne reçoit pas d’erreur qui indique que le premier protocole a échoué.
Si l’application cliente utilise le deuxième protocole et renvoie également une erreur, une erreur est renvoyée au
client.
Si vous créez un alias à l’aide de l’une des méthodes suivantes, l’application cliente utilise les informations d’alias
pour établir une connexion au serveur et n’utilise aucun protocole supplémentaire.
Utilisation de l’utilitaire SQL Server client
À l’aide Gestionnaire de configuration SQL Server
Lorsque vous créez un nom de source de données ODBC (DSN)
Si vous souhaitez contrôler le protocole utilisé par une application cliente pour chaque tentative de connexion et
ne pas autoriser le client à essayer plusieurs protocoles, vous pouvez :
Utilisez l SQL ou l’Gestionnaire de configuration SQL Server client pour créer un alias en spécifiant le
protocole de votre préférence.
Spécifiez le protocole dans votre chaîne de connexion. Par exemple :
DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBMSSOCN;Address=IP_Address,1433;UID=
YourUID;PWD=YourPassword;
Dans cet exemple, vous spécifiez le protocole réseau comme , ce qui signifie que vous souhaitez utiliser le
protocole DBMSSOCN TCP/IP. Si vous spécifiez le protocole à l’intérieur de votre chaîne de connexion,
Dbnetlib utilise uniquement le protocole spécifié et n’essaie aucun autre protocole. De même, pour activer
le protocole Named Pipe uniquement, utilisez une chaîne de connexion semblable à celle-ci :
DSN=DSNName;SERVER=servername;DATABASE=YourDataBaseName;Network=DBNMPNTW;Address=\\.\pipe\sql\query;U
ID=YourUID;PWD=YourPassword;
RÉFÉRENCES
Résolution des erreurs de connectivité SQL Server
SQLDescribeCol renvoie un type de données et une
longueur de colonnes erronés dans une requête
Union complexe avec des paramètres
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où la commande renvoie une longueur de colonne et un type de
données erronés dans une requête Union complexe qui possède SQLDescribeCol des paramètres.
Version du produit d’origine : SQL Server 2008, Microsoft SQL Server 2005
Numéro de la ko d’origine : 2900760
Résumé
Prenons l’exemple du scénario suivant :
Vous utilisez une version de Microsoft SQL Server Native Client antérieure à Microsoft SQL Server Native
Client 11.0.
Votre code appelle la fonction pour une requête Union complexe qui contient des SQLDescribeCol
paramètres et une clause WHERE.
Dans ce scénario, renvoie une longueur de colonne et un SQLDescribeCol type de données incorrects.
Cause
Ce problème se produit car le pilote tronque la requête pour les métadonnées sur le mot clé UNION. Par
conséquent, SQL Server les métadonnées uniquement pour la première requête et ignore la deuxième requête.
Si vous modifiez l’ordre des requêtes, SQLDescribeCol renvoie les données correctes.
Résolution
Pour résoudre ce problème, utilisez SQL Server Native Client 11.0 ou une version ultérieure dans votre
application. Pour obtenir SQL Server Native Client 11.0 ou pour plus d’informations, voir Microsoft SQL Server
2012 SP4 Feature Pack.
Solution de contournement
Pour contourner ce problème, prenez l’une des mesures suivantes :
Compilez la requête en une procédure stockée qui utilise des paramètres.
Inverser l’ordre des instructions dans la requête Union afin que le champ SELECT constant se trouve dans la
dernière SELECT instruction.
État
Microsoft a confirmé qu’il s’agit d’un problème connu dans les versions SQL Server et SQL Server Native Client.
Microsoft a confirmé qu’il s’agit d’un bogue dans les produits Microsoft répertoriés au début de cet article.
S’applique à
v R2 Enterprise
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Standard
SQL Server 2008 Enterprise
SQL Server 2008 Standard
Microsoft SQL Server 2005 Êdition Entreprise
Microsoft SQL Server 2005 Édition Standard
Utiliser le paramètre nom du serveur dans une
chaîne de connexion pour spécifier la bibliothèque
réseau cliente
13/08/2021 • 2 minutes to read
Résumé
Cet article explique comment spécifier par programme la bibliothèque réseau cliente dans la chaîne de
connexion lorsque vous vous connectez à une base de données SQL Server client.
Dans Microsoft Data Access Components (MDAC) 2.6 et les ultérieures, vous pouvez spécifier la bibliothèque
d’accès au client à l’aide du paramètre nom du serveur dans la chaîne de connexion. Par conséquent, vous
pouvez spécifier une bibliothèque d’accès au client spécifique lorsque vous êtes invité par une application à
indiquer un nom de serveur auquel vous connecter. Ce comportement peut être utile lorsque vous testez et
dépannage des problèmes de connectivité pour SQL Server.
Par exemple, vous pouvez utiliser l’utilitaire de ligne de commande Osql pour vous connecter à SQL Server et le
forcer à utiliser la bibliothèque réseau TCP/IP :
osql -Stcp:myServer,portNumber -E
Exemple de code
L’exemple de code Microsoft Visual C# .NET suivant montre comment définir la chaîne de connexion. La chaîne
de connexion a le même format quelle que soit la langue que vous utilisez :
using System;
using System.Data;
using System.Data.SqlClient;
namespace getCurrentProtocol
{
/// <summary>
/// Main Application Driver Class
/// </summary>
class Driver
{
static void Main(string[] args)
{
string sCxn = "server=myServer;Integrated Security=SSPI; database=master";
//string sCxn = "server=np:myServer;Integrated Security=SSPI; database=master";
//string sCxn = "server=tcp:myServer;Integrated Security=SSPI; database=master";
//string sCxn = "server=rpc:myServer;Integrated Security=SSPI; database=master";
//string sCxn = "server=lpc:myServer;Integrated Security=SSPI; database=master";
string sCmd = "SELECT net_library from sysprocesses where spid=@@spid";
SqlConnection cxn = new SqlConnection(sCxn);
SqlCommand sqlCmd = new SqlCommand(sCmd, cxn);
SqlDataAdapter sqlDa = new SqlDataAdapter(sCmd, cxn);
DataTable dt = new DataTable();
try
{
sqlDa.Fill(dt);
Console.WriteLine("Hit ENTER to continue ...");
Console.ReadLine();
foreach (DataRow dr in dt.Rows)
Console.WriteLine(dr["net_library"]);
}
catch (SqlException e)
{
Console.WriteLine(e.StackTrace);
Console.WriteLine("SQL Error Number: " + e.Number);
Console.WriteLine("SQL Error Message: " + e.Message);
}
}
}
}
NOTE
Chaîne de connexion et en particulier la valeur du paramètre serveur :
server=tcp:hostname
Vous pouvez éventuellement spécifier un numéro de port spécifique. Par défaut, le port est 1433.
server=tcp:hostname, portNumber
Canaux nommés :
server=np:hostname
server=np:\\hostname\pipe\pipeName
Par défaut, le nom du canal est sql\query. Si vous vous connectez à une instance nommée, le nom du
canal est généralement au format suivant :
MSSQL$instnaceName\sql\query
La valeur par défaut du protocole sous-jacent est déterminée par les paramètres du système
d’exploitation où un protocole peut avoir l’une des valeurs suivantes :
Mémoire partagée :
server=lpc:hostname
Références
Pour plus d’informations, consultez l’Annexe A : Entrées de Registre.
Détecter une inclinaison des données sur les valeurs
des clés de distribution
13/08/2021 • 2 minutes to read
Cet article montre comment détecter une inclinaison sur la clé de distribution d’une table distribuée dans une
appliance Parallel Data Warehouse.
Version du produit d’origine : SQL Server 2008 R2 Parallel Data Warehouse
Numéro de la ko d’origine : 3046863
Résumé
Une inclinaison des données peut se produire à différents niveaux dans Microsoft SQL Server Parallel Data
Warehouse. Cet article se concentre sur les lignes qui sont obliques vers certaines valeurs. Une table distribuée
peut ainsi placer plus de données sur une distribution que sur les autres distributions. La requête suivante
compte le nombre de lignes qui ont une valeur spécifique pour la clé de distribution de la table :
from distributed_table
group by distribution_key
NOTE
La having clause est commentée. Toutefois, si vous souhaitez vérifier rapidement s’il existe une inclinaison significative,
cette clause peut vous indiquer. Vous de devez peut-être ajuster la valeur ayant un sens pour votre jeu de résultats. Par
exemple, si toutes les valeurs ont 5 000 enregistrements, nous vous recommandons de définir cette valeur sur 7 500 ou
10 000 pour indiquer un problème.
La question de savoir quand une inclinaison devient un problème n’a pas de réponse déterministe. Une
inclinaison devient un problème lorsque les performances des distributions obliques deviennent perceptibles et
que l’application ne peut pas tolérer la situation. La règle générale est que l’appliance peut tolérer une
inclinaison de 10 à 20 % dans toutes les tables. À l’intérieur de ce seuil, les distributions obliques doivent même
sortir en cas de concurrence. Au-dessus de ce seuil, vous pouvez commencer à voir certaines distributions de
longue durée lorsque les données sont traitées. Certaines implémentations peuvent être en mesure de tolérer
une plus grande inclinaison, et d’autres peuvent ne pas pouvoir tolérer autant. Des tests sont nécessaires pour
déterminer le seuil réel de votre implémentation.
Plus d’informations
Si la valeur oblique est également utilisée comme condition de jointeur et que l’autre côté est oblique vers la
même valeur, il peut y avoir une explosion dans le nombre de lignes à partir de la jointeur. Cela peut entraîner
un temps d’exécution de requête long.
IMPORTANT
Prêtez une attention particulière au nombre de valeurs NULL, car cela peut entraîner des problèmes pour les jointeurs.
Erreur 105005 lors de l’opération CETAS sur le
stockage d’objets blob Azure
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous faites une opération sur le stockage
CREATE EXTERNAL TABLE AS SELECT (CETAS) Blob Azure à l’aide de PolyBase.
Version du produit d’origine : SQL Server 2012 Parallel Data Warehouse (APS), SQL Server 2008 R2 Parallel
Data Warehouse
Numéro de la ko d’origine : 3210540
Symptômes
Lorsque vous faites une opération CREATE EXTERNAL TABLE (Transact-SQL) vers le stockage d’objets blob Azure
à l’aide de PolyBase ? à partir de l’appliance Microsoft SQL Server Parallel Data Warehouse (PDW), le service
Azure renvoie le message d’erreur suivant :
Cause
Cette erreur se produit car PolyBase ne peut pas terminer l’opération. L’échec de l’opération peut être dû à l’une
des opérations suivantes ou les deux :
Défaillance du réseau lorsque vous essayez d’accéder au stockage d’objets blob Azure sur les ports réseau
requis.
Configuration du compte de stockage Azure
Résolution
Pour résoudre ce problème, assurez-vous que les conditions préalables suivantes sont remplies.
Exigences réseau :
Autorisez les ports de pare-feu local 80 et 443 sortants vers *.blob.core.windows.net à partir du nœud
CTL01 via une connectivité Internet fournie.
Stockage conditions requises pour les comptes :
Assurez-vous que le compte de stockage est configuré en tant que compte de stockage standard
qui utilise l’une des options de réplication de stockage suivantes (classique ou basée sur le
Gestionnaire de ressources) :
Standard Locally Redundant Stockage (Standard-LRS)
Standard Geo-Redundant Stockage (Standard-GRS)
Pour les comptes de stockage basés sur le Gestionnaire de ressources :
Configurez le compte à des fins générales.
NOTE
Lorsque vous utilisez des comptes de stockage basés sur le Gestionnaire de ressources, assurez-vous que le compte est
configuré à des fins générales. Si vous utilisez le Magasin d’objets Blob, un message d’erreur est renvoyé.
Plus d’informations
Pour plus d’informations sur PolyBase, consultez les articles Azure suivants :
Didacticiel : Charger des données dans le pool de SQL Azure Synapse Analytics
Meilleures pratiques pour le chargement des données à l’aide du pool SQL synapse
Évaluer la précision des statistiques PDW
14/08/2021 • 2 minutes to read
Cet article montre comment évaluer la précision des statistiques PDW d’une table PDW ou de toutes les tables
d’une base de données PDW en fonction du nombre total de lignes.
Version du produit d’origine : SQL Server 2012 Parallel Data Warehouse (APS), SQL Server 2008 R2 Parallel
Data Warehouse
Numéro de la ko d’origine : 3046875
Résumé
Cet article contient une requête pour comparer le nombre réel de lignes et le nombre de lignes dans les
statistiques parallel Data Warehouse pour une table spécifique ou pour toutes les tables de la base de données
actuelle. Si les valeurs de nombre de lignes diffèrent trop fortement, Parallel Data Warehouse n’a pas de
statistiques précises pour cette table. Cela peut entraîner le choix par l’optimiseur Parallel Data Warehouse des
opérations et des mouvements de données qui ne sont pas efficaces et qui peuvent entraîner de longs temps
d’utilisation des requêtes.
Plus d’informations
Exécutez la requête suivante pour afficher une comparaison entre le nombre réel de lignes et le nombre de
lignes CTL affiché dans les statistiques parallel Data Warehouse :
SELECT db_name() as [Database],
pdwtbl.name as [Table],
Sum(part.rows)/ max(pdwpart.partition_number)/8 AS CMP_ROW_COUNT,
sum(pdwpart.rows)/max(size.distribution_id)/max(pdwpart.partition_number)/8 AS CTL_ROW_COUNT
FROM sys.pdw_nodes_partitions part
JOIN sys.pdw_nodes_tables tbl
ON part.object_id = tbl.object_id
AND part.pdw_node_id = tbl.pdw_node_id
JOIN sys.pdw_distributions size
on size.pdw_node_id = tbl.pdw_node_id
JOIN sys.pdw_table_mappings map
ON map.physical_name = tbl.name
JOIN sys.tables pdwtbl
ON pdwtbl.object_id = map.object_id
JOIN sys.partitions pdwpart
ON pdwpart.object_id = pdwtbl.object_id
join sys.pdw_table_distribution_properties dist
on pdwtbl.object_id = dist.object_id
WHERE dist.distribution_policy = 2
-- uncomment the below if you are looking for row counts for a specific table
-- this table will also need to be added below
-- and pdwtbl.name = 'table_name'
GROUP BY pdwtbl.name
UNION ALL
SELECT db_name() as [Database],
pdwtbl.name,
Sum(part.rows)/ sum(pdwpart.partition_number) AS CMP_ROW_COUNT,
sum(pdwpart.rows) /max(pdwpart.partition_number) /(select count(type) from sys.dm_pdw_nodes
where type = ''' + 'COMPUTE' + ''')
AS CTL_ROW_COUNT
FROM sys.pdw_nodes_partitions part
JOIN sys.pdw_nodes_tables tbl
ON part.object_id = tbl.object_id
AND part.pdw_node_id = tbl.pdw_node_id
JOIN sys.pdw_table_mappings map
ON map.physical_name = tbl.name
JOIN sys.tables pdwtbl
ON pdwtbl.object_id = map.object_id
JOIN sys.partitions pdwpart
ON pdwpart.object_id = pdwtbl.object_id
join sys.pdw_table_distribution_properties dist
on pdwtbl.object_id = dist.object_id
where dist.distribution_policy = 3
-- uncomment the below if you are looking for row counts for a specific table
-- this table will also need to be added below
-- and pdwtbl.name = 'table_name'
GROUP BY pdwtbl.name
NOTE
Cette requête évalue uniquement le nombre de lignes et non la cardinalité. Il nécessite également que des statistiques
de niveau entrepôt de données parallèles existent sur au moins une colonne du tableau. Il ne prend pas en compte
l’existence de statistiques sur plusieurs colonnes ou la colonne pour laquelle elles existent.
La valeur de nombre par défaut dans Parallel Data Warehouse est de 1 000 lignes. Si aucune statistiques parallel Data
Warehouse n’a été créée, une valeur de 1 000 est renvoyée pour le nombre de lignes CTL.
Msg 104381 lors de l’exécution d’INSERT... Instruction
SELECT dans Analytics Platform System 2016 ou
versions ultérieures
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous exécutez une instruction dans
INSERT ... SELECT Microsoft Analytics Platform System (APS) 2016 ou une version ultérieure de APS et cette
instruction inclut une ORDER BY clause.
S’applique à : Microsoft Analytics Platform System
Numéro de la ko d’origine : 4038456
Symptômes
Lorsque vous exécutez une instruction dans APS 2016 ou une version ultérieure de APS et que cette instruction
inclut une clause, vous recevez un message d’erreur ressemblant à ce qui INSERT ... SELECT ORDER BY suit :
Cause
Ce problème se produit car les opérations de tri ne sont pas valides avec INSERT ... SELECT l’instruction. Ce
comportement est voulu par la conception même du produit.
Résolution
Pour résoudre ce problème, supprimez ORDER BY la clause de l’instruction.
Plus d’informations
Dans les versions antérieures APS, aucune erreur n’a pu être renvoyée. Toutefois, la ORDER BY clause n’a pas été
honorée.
System Center Operations Manager ne peut pas
surveiller SQL Server système de plateforme
d’analyse
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où System Center Operations Manager ne peut pas surveiller SQL
Server’appliance système de plateforme d’analyse.
Version du produit d’origine : SQL Server 2012 Parallel Data Warehouse, SQL Server 2008 R2 Parallel Data
Warehouse
Numéro de la ko d’origine : 4034603
Symptômes
Prenons l’exemple du scénario suivant :
Vous avez installé les packs d’administration Microsoft System Center Operations Manager.
Vous ajoutez une appliance SQL Server Du système de plateforme d’analyse (APS) en exécutant
new-apsappliance.ps1 .
Vous pouvez configurer les comptes Watcher et Monitoring.
Dans ce scénario, l’appliance n’est pas surveillée et vous devez faire face à l’un des problèmes suivants :
Problème A : L’appliance n’est pas découverte et n’est pas visible dans Operations Manager.
Problème B : L’appliance est répertoriée dans Operations Manager, mais elle est dans l’état NOT
MONITORED.
Cause
Ce problème est dû à une erreur qui se produit lors de la découverte. Pour voir les informations d’erreur,
consultez le journal des événements Operations Manager sur le nœud de l’observeur. Les scénarios d’erreur
suivants peuvent se produire.
Scénario A :
Erreurs pour le APS de l’utilisateur, telles qu’un mot de passe incorrect.
Scénario B :
Erreur consignée dans le journal des événements :
NOTE
Il s’agit d’une erreur ambiguë. APS ne nécessite plus de DSN. Les informations sur l’appliance sont ajoutées et
utilisées dans le Registre.
Résolution
Pour résoudre ce problème, suivez ces étapes selon le scénario d’erreur.
Pour le scénario A :
Corrigez le mot de passe dans Operations Manager.
Pour le scénario B :
Vérifiez que l’appliance est ajoutée au Registre du nœud de l’observeur.
NOTE
L’adresse IP spécifiée doit être pour l’APS IP du nœud de contrôle. Elle doit se trouver sous la sous-clé de
Registre suivante :
HKLM\SOFTWARE\Microsoft\Analytics Platform System\Management Pack\Appliances
Cet article vous aide à résoudre le problème que vous pouvez avoir avec l’appel de fonction API lors de la
remise AuthzInitializeContextFromSid d’un abonnement de messagerie.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 842423
Résumé
Cet article décrit la cause et certaines résolutions possibles d’un problème qui peut se produire dans Microsoft
SQL Server Reporting Services et Power BI Report Server, en SQL Server Reporting Services, lorsque vous
essayez de créer et de traiter un abonnement de messagerie à l’aide d’un compte d’utilisateur de domaine. Le
problème se produit lorsqu’un appel de fonction API dans AuthzInitializeContextFromSid le fichier Authz.dll'est
pas réussi.
NOTE
Ce problème ne se produit pas dans Windows Server 2008.
Introduction
Cet article traite d’un problème associé à l’appel de fonction API qui se produit lors de la remise
AuthzInitializeContextFromSid d’un abonnement de messagerie. Cet article traite également de certaines
résolutions possibles du problème.
Informations détaillées
Lors de la livraison d’un courrier électronique pour un abonnement de messagerie, le programme Reporting
Services peut appeler la fonction API définie dans le AuthzInitializeContextFromSid fichier Authz.dll de
messagerie. Le programme Reporting Services peut appeler la fonction API si l’une
AuthzInitializeContextFromSid des conditions suivantes est vraie :
Si l’appel de fonction échoue, il se peut que vous demandons de configurer les paramètres sur le domaine de
l’ordinateur qui exécute Reporting Services pour résoudre le problème.
Le programme Reporting Services appelle la fonction API pour vérifier si le compte d’utilisateur qui a été utilisé
pour créer l’abonnement dispose toujours des autorisations correctes pour afficher
AuthzInitializeContextFromSid le rapport. Cette vérification n’est pas requise lorsque le courrier électronique
contient uniquement un lien, une URL, vers le rapport, car Reporting Services effectue la vérification des
autorisations utilisateur lorsque l’utilisateur tente d’accéder au rapport à l’aide de l’URL.
L’appel de la fonction API lit l’attribut AuthzInitializeContextFromSid tokenGroupsGlobalAndUniversal (TGGAU)
du numéro d’identification de sécurité (SID) spécifié dans l’appel de fonction API pour déterminer les
informations d’appartenance au groupe Windows pour l’utilisateur AuthzInitializeContextFromSid actuel.
Reporting Services appelle la fonction API à l’aide du contexte de sécurité du compte d’connexion de service du
service Windows AuthzInitializeContextFromSid Reporting Services. Par conséquent, le compte d’utilisateur
que vous utilisez pour exécuter le service Reporting Services Windows doit avoir les autorisations suffisantes
pour lire l’attribut sur le compte d’utilisateur utilisé pour créer et traiter les abonnements de TGGAU messagerie.
Si l’ordinateur n’est pas configuré correctement pour accéder à la fonction API et l’exécuter dans le fichier
Authz.dll, vous pouvez recevoir un AuthzInitializeContextFromSid message d’erreur. En outre, un message
d’erreur peut être écrit dans le fichier journal Reporting Services. Pour déterminer l’erreur qui s’est produite,
suivez les étapes suivantes :
1. Ouvrez ReportServerService_ fichier .log d’timestamp. Recherchez le mot authz .
NOTE
Par défaut, le ReportServerService_ .log d’timestamp se trouve dans
<Installation drive>:\Program Files\Microsoft SQL Server\<InstanceOfSQLServer>\Reporting
Services\Logfiles folder
le fichier .
Dans le ReportServerService_ .log d’timestamp, vous pouvez remarquer des messages d’erreur
semblables aux suivants :
Message d’erreur 1
Message d’erreur 2
2. Modifiez l’abonnement de messagerie à l’origine du message d’erreur. N’incorporez pas ou n’attachez pas
de rapport dans le courrier électronique. Utilisez un lien vers le rapport. Après avoir traitée l’abonnement
modifié, si vous ne recevez pas de message d’erreur, vous pouvez confirmer que l’erreur s’est produite en
raison de l’échec de l’appel de la fonction AuthzInitializeContextFromSid API.
Pour résoudre ce problème, utilisez l’une des méthodes suivantes.
Vous pouvez utiliser la méthode 1 si les conditions suivantes sont vraies :
Le service Windows Reporting Services est en cours d’exécution sous le compte service réseau.
Vous ne souhaitez pas modifier le compte sous Windows service Reporting Services. Vous pouvez utiliser la
méthode 2 pour une résolution générale. Si la méthode 2 ne résout pas le problème, utilisez la méthode 3.
Méthode 1
1. Ajoutez le Windows au groupe Accès à la compatibilité pré-Windows 2000 à l’aide du logiciel en ligne
Utilisateurs et ordinateurs Active Directory.
2. Ajoutez le Windows au groupe d’accès Windows’autorisation à l’aide du logiciel en ligne Utilisateurs et
ordinateurs Active Directory.
3. Redémarrez l’ordinateur qui exécute Reporting Services.
NOTE
Le Windows à l’étape 1 et à l’étape 2 est le compte que vous utilisez pour exécuter Reporting Services.
Une fois que vous avez ajouté le compte à ces groupes, il est garanti que Reporting Services peut accéder à l’attribut
TGGAU.
Cette méthode ne vous oblige pas à modifier les autorisations sur un utilisateur ou un groupe.
Méthode 2
Configurez le service Windows Reporting Services pour qu’il s’exécute sous un compte d’utilisateur de domaine.
NOTE
Un message d’erreur peut être écrit dans le journal de suivi de Reporting Services lorsque vous essayez de modifier le
compte d’utilisateur utilisé pour exécuter le service d’Windows Reporting Services.
Méthode 3
Configurez les paramètres sur le domaine de l’ordinateur qui exécute Reporting Services. Pour ce faire, utilisez
l’une des méthodes suivantes.
Accorder l’autorisation de lecture sur tous les comptes d’utilisateurs et sur tous les groupes du domaine
Vous pourrez peut-être résoudre le problème en accordant des autorisations de lecture pour le compte
d’utilisateur que vous utilisez pour exécuter le service Reporting Services Windows afin de lire l’attribut sur tous
les comptes d’utilisateur et tous les groupes dans le TGGAU domaine. Pour ce faire, utilisez les informations de
l’une des sections suivantes, en fonction du système d’exploitation que vous utilisez.
Pour un domaine Microsoft Windows 2000
Si le domaine est en mode d’accès préalable à la compatibilité Windows 2000, le groupe EVERYONE dispose de
l’autorisation de lecture sur l’attribut pour tout le compte d’utilisateur et tous les TGGAU groupes. Par
conséquent, le compte d’utilisateur que vous utilisez pour exécuter le service Reporting Services Windows a
accès à l’attribut sur le compte d’utilisateur que Reporting Services utilise pour créer l’abonnement TGGAU de
messagerie.
Si le domaine n’est pas en mode d’accès à la compatibilité pré-Windows 2000, également appelé mode natif,
vous devez accorder une autorisation de lecture pour le compte d’utilisateur utilisé pour exécuter le service
Windows Reporting Services afin qu’il puisse lire l’attribut sur le compte d’utilisateur que Reporting Services
utilise pour créer TGGAU l’abonnement. Vous pouvez créer un groupe local de domaine qui simule le groupe de
compatibilité pré-Windows 2000, ajouter le compte d’utilisateur que vous utilisez pour exécuter le service
Windows Reporting Services à ce groupe, puis accorder des autorisations de lecture pour le groupe sur tous les
comptes d’utilisateur. Pour cela, procédez comme suit :
NOTE
Vous devez avoir des autorisations d’administrateur sur le domaine pour suivre ces étapes.
1. Cliquez sur Démarrer, pointez sur Programmes, pointez sur Outils d’administration, puis cliquez sur
Utilisateurs et ordinateurs Active Director y.
2. Dans la fenêtre Utilisateurs et ordinateurs Active Director y, dans le volet gauche, développez
DomainName .
3. Cliquez avec le bouton droit sur Utilisateurs, pointez sur Nouveau, puis cliquez sur Groupe.
4. Dans la boîte de dialogue Nouvel objet - Groupe, tapez MyAuthZGrp dans la zone Nom du groupe.
5. Sous l’étendue Groupe, sélectionnez l’option locale Domaine, puis cliquez sur OK. Le groupe
MyAuthZGrp peut apparaître dans le volet droit.
6. Dans le volet gauche de la fenêtre Utilisateurs et ordinateurs Active Director y, cliquez avec le bouton droit
sur le dossier Utilisateurs, puis cliquez sur Propriétés.
7. Dans la boîte de dialogue Propriétés des utilisateurs, cliquez sur l’onglet Sécurité.
8. Cliquez sur Ajouter .
9. Dans la boîte de dialogue Sélectionner des utilisateurs, des ordinateurs ou des groupes,
sélectionnez le groupe que vous avez créé à l’étape 5.
10. Cliquez sur Ajouter , puis sur OK .
11. Accordez une autorisation de lecture au compte d’utilisateur que vous avez sélectionné à l’étape 9.
Pour un domaine Microsoft Windows Server 2003
Si le domaine est au niveau fonctionnel Windows 2000, le groupe EVERYONE dispose d’autorisations de lecture
sur l’attribut TGGAU de tous les comptes et groupes d’utilisateurs. Par conséquent, le compte de service
Reporting Service dispose des autorisations correctes sur le compte d’utilisateur qui a créé l’abonnement de
messagerie.
Si le domaine se trouve à un niveau fonctionnel Windows Server 2003, le groupe d’accès à l’autorisation
Windows (groupe WAA) dispose d’autorisations de lecture sur l’attribut TGGAU de tous les comptes et groupes
d’utilisateurs. Par conséquent, si vous ajoutez le compte de service Reporting Services au groupe WAA, le
compte de service Reporting Services dispose d’autorisations de lecture sur l’attribut TGGAU des comptes
d’utilisateurs qui peuvent créer des abonnements de messagerie.
Pour ajouter le compte de service Reporting Services au groupe WAA, suivez les étapes suivantes :
1. Sur le contrôleur de domaine, cliquez sur Démarrer, pointez sur Programmes, pointez sur Outils
d’administration, puis cliquez sur Utilisateurs et ordinateurs Active Director y.
2. Dans la fenêtre Utilisateurs et ordinateurs Active Directory, développez DomainName, puis cliquez sur
Utilisateurs ou une autre unité d’organisation appropriée.
3. Double-cliquez sur le compte de service Reporting Services.
4. Dans la boîte de dialogue Propriétés, cliquez sur l’onglet Membre de.
5. Sous l’onglet Membre de, cliquez sur Ajouter.
6. Dans la boîte de dialogue Sélectionner des groupes, tapez Windows groupe d’accès d’autorisation sous
Entrez les noms des objets à sélectionner, puis cliquez sur OK.
7. Redémarrez le service Reporting Services.
Accorder des autorisations de lecture à un compte d’utilisateur ou à un groupe spécifique qui peut créer un
abonnement Reporting Services
Vous ne souhaitez peut-être pas accorder d’autorisations de lecture à l’attribut TGGAU de tous les comptes et
groupes d’utilisateurs. Au lieu de cela, vous pouvez accorder des autorisations de lecture à l’attribut TGGAU d’un
compte d’utilisateur ou d’un groupe spécifique.
NOTE
Le compte d’utilisateur que Reporting Services utilise pour exécuter l’abonnement est le compte Windows utilisateur
qui se connecte au Gestionnaire de rapports lors de la création de l’abonnement.
Ces étapes ne sont pas nécessaires si le compte de service Reporting Services se trouve dans le groupe WAA.
Vous devez suivre ces étapes pour chaque compte d’utilisateur ou groupe qui peut créer un abonnement de
messagerie dans Reporting Services.
Pour accorder des autorisations de lecture à l’attribut d’un compte d’utilisateur ou d’un groupe TGGAU
spécifique, suivez les étapes suivantes :
1. Sur un contrôleur de domaine, cliquez sur Démarrer, pointez sur Programmes, pointez sur Outils
d’administration, puis cliquez sur Utilisateurs et ordinateurs Active Director y.
2. Dans le menu Affichage, assurez-vous que l’élément Fonctionnalités avancées est sélectionné.
3. Double-cliquez sur le compte d’utilisateur ou le groupe qui peut créer un abonnement Reporting Services.
4. Dans la boîte de dialogue Propriétés , cliquez sur l'onglet Sécurité .
5. Sous l’onglet Sécurité , cliquez sur Ajouter .
6. Dans la boîte de dialogue Sélectionner des utilisateurs, des ordinateurs ou des groupes, tapez le compte de
service Reporting Services sous Entrez les noms des objets à sélectionner, puis cliquez sur OK .
7. Dans la boîte de dialogue Propriétés, cliquez sur le compte d’utilisateur que vous avez ajouté à l’étape 6
sous Les noms de groupes ou d’utilisateurs.
8. Sous Autorisations pour Utilisateur, cliquez pour cocher la case Autoriser en regard de l’autorisation de
lecture, puis cliquez sur OK.
NOTE
Les modifications peuvent ne pas prendre effet immédiatement.
Cet article présente les meilleures pratiques pour modifier le compte de service pour le serveur de rapports
dans Microsoft SQL Server Reporting Services et Power BI Report Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 958999
Introduction
Dans Microsoft SQL Server Reporting Services, vous pouvez configurer le serveur de rapports pour utiliser le
type d’informations d’identification du service pour la connexion de base de données. Lorsque vous essayez de
modifier le compte de service à l’aide de la console de gestion Services.msc, l’opération peut endommagé la clé
de chiffrement utilisée pour protéger les informations sensibles stockées dans la base de données du serveur de
rapports. Nous vous recommandons de modifier le compte de service pour le serveur de rapports à l’aide de
l’une des méthodes suivantes :
Méthode 1
Utilisez Reporting Services Configuration Manager pour modifier le compte de service pour le serveur de
rapports. Pour ce faire, suivez les étapes suivantes :
1. Ouvrez Reporting Services Configuration Manager, puis connectez-vous à l’instance de SQL Server
Reporting Services.
2. Cliquez sur Identité du ser vice Microsoft dans le volet gauche.
3. Modifiez le compte et le mot de passe dans les zone de texte Compte et Mot de passe, puis cliquez sur
Appliquer .
Méthode 2
Utilisez Rsconfig.exe l’utilitaire pour modifier le compte de service pour le serveur de rapports. Pour ce faire,
exécutez la commande suivante :
Rsconfig -c -s <Server Name> -d <Database Name> -u <User Name> -p <Password> -a <Authentication Method>
NOTE
Si l’instance de SQL Server qui héberge la base de données du serveur de rapports est une instance nommée, ajoutez le
commutateur -i pour spécifier le nom de l’instance.
Méthode 3
Si les méthodes 1 et 2 ne fonctionnent pas, utilisez rskeymgmt l’utilitaire. Lorsque vous utilisez cet utilitaire, vous
devez back up the encrypted keys before you change the user account that is used to run the Report Server
Microsoft service or the Report Server Web service, and then you must apply the keys that were backed up.
Pour ce faire, suivez les étapes suivantes sur l’ordinateur qui exécute le service :
1. Démarrez le service Microsoft du serveur de rapports et le service Web Report Server à l’aide du compte
d’utilisateur pour qui le service s’erait correctement.
2. Utilisez rskeymgmt l’utilitaire de ligne de commande pour la back up des clés de chiffrement. Pour ce
faire, exécutez la commande à l’invite de commandes : RSKeyMgmt -e -f <FileName> -p <StrongPassword>
NOTE
Par défaut, rskeymgmt l’utilitaire de ligne de commande se trouve dans
<InstallationDrive>:\Program Files\Microsoft SQL Server\80\Tools\Binn folder le .
Pour plus d’informations sur l’utilitaire de ligne de rskeymgmt commande, exécutez la commande
suivante à l’invite de commandes : rskeymgmt /?
3. Utilisez rskeymgmt l’utilitaire de ligne de commande pour supprimer la référence aux clés existantes. Pour
ce faire, exécutez la commande à l’invite de commandes : rskeymgmt -r <InstallationID>
NOTE
Remplacez l’espace réservé à l’aide de l’ID d’installation fourni dans le paramètre InstallationID du
InstallationID RSReportServer.config fichier. Par défaut, le RSReportServer.config est stocké dans le
<InstallationDrive>:\Program Files\Microsoft SQL Server\MSSQL\Reporting Services\ReportServer
folder
fichier .
NOTE
Remplacez l’espace réservé et l’espace réservé par le nom de fichier et le mot de passe que vous avez utilisés pour
la protection des clés de chiffrement symétriques à <FileName> <StrongPassword> l’étape 1.
Vous ne pouvez pas commencer SQL Server
Reporting Services après avoir appliqué la mise à
jour abordée dans la 2677070
13/08/2021 • 4 minutes to read
Cet article vous aide à résoudre une erreur de délai et un problème dans lequel les ID d’événement 7000, 7009
et 1530 sont enregistrés lorsque vous démarrez SQL Server Reporting Services (SSRS).
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2745448
Symptômes
Supposons que vous appliquez la mise à jour décrite dans l’article de la Base de connaissances Microsoft
2677070 sur un ordinateur qui exécute SSRS. Lorsque vous essayez de démarrer SSRS, vous recevez une erreur
de délai d’délai, et l’ID d’événement 7000 et l’ID d’événement 7009 sont enregistrés dans le journal des
applications.
En outre, l’ID d’événement 1530 est journalisé et les informations qui ressemblent à ce qui suit sont consignées
dans le journal des applications :
NOTE
L’espace réservé < l'> événement représente l’heure à l’heure de l’événement. L’espace réservé < nom du serveur SSRS
> représente le nom du serveur SSRS.
Cause
Ce problème se produit en raison de l’impossibilité de récupérer des listes d’autorisation de certificat (CTL)
fiables et non fiables. Si le système n’a pas accès à Windows Update, soit parce que le système n’est pas
connecté à Internet, soit parce que Windows Update est bloqué par des règles de pare-feu, la récupération du
réseau arrive à son heure d’attente avant que le service puisse poursuivre sa procédure de démarrage. Dans
certains cas, ce délai d’attente de récupération réseau peut dépasser le délai d’attente de démarrage du service
de 30 secondes. Si un service ne peut pas signaler que le démarrage s’est terminé après 30 secondes, le
gestionnaire de contrôle de service (SCM) arrête le service.
Les URL pour mettre à jour la CTL ont été modifiées avec cette mise à jour. Par conséquent, si les URL
précédentes ont été codées en dur en tant qu’exceptions dans le pare-feu ou le proxy, ou s’il n’y a pas d’accès à
Internet sur l’ordinateur, la CTL ne peut pas être mise à jour.
Pour télécharger les CTL les plus récentes, utilisez les URL mises à jour suivantes :
disallowedcertstl.cab
authrootstl.cab
Solution de contournement
Pour contourner ce problème, configurez l’ordinateur afin que le réseau ne récupère pas les CTLs fiables et non
fiables. Pour ce faire, utilisez l’une des méthodes suivantes :
Méthode 1
Validez que les pare-feux de limite, les règles d’accès du routeur ou les serveurs proxy en aval autorisent
les systèmes qui ont des mises à jour 2677070 à contacter Microsoft Update. Pour plus d’informations
sur cette exigence, voir : un programme de mise à jour automatique des certificats révoqués est
disponible pourWindows Vista, Windows Server 2008, Windows 7 et Windows Server 2008 R2 (cela
inclut les URL accessibles par la mise à jour CTL).
Méthode 2
Modifier les paramètres de stratégie de groupe. Pour cela, procédez comme suit :
1. Sous le nœud Configuration de l’ordinateur dans l’Éditeur de stratégie de groupe local, double-
cliquez sur Stratégies.
2. Double-cliquez sur Windows Paramètres, double-cliquez sur Sécurité Paramètres, puis double-
cliquez sur Stratégies de clé publique.
3. Dans le volet d’informations, double-cliquez sur Validation du chemin d’accès du cer tificat
Paramètres .
4. Sélectionnez l’onglet Récupération réseau, cochez la case Définir ces paramètres de stratégie, puis
cochez la case Mettre à jour automatiquement les certificats dans la case à cocher Programme de
certificat racine Microsoft (recommandé).
5. Sélectionnez OK, puis fermez l’Éditeur de stratégie de groupe local.
Méthode 3
Modifiez le Registre. Pour cela, procédez comme suit.
IMPORTANT
Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des
problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à
suivre ces étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier.
Vous pouvez alors le restaurer en cas de problème. Pour plus d’informations sur la façon de la back up et de la
restauration du Registre, voir : Comment le restaurer dans Windows.
1. Sélectionnez Démarrer, sélectionnez Exécuter, tapez regedit dans la zone Ouvrir, puis cliquez
sur OK.
2. Recherchez puis sélectionnez la sous-clé de Registre suivante :
HKLM\Software\Policies\Microsoft\SystemCertificates .
3. Cliquez avec le bouton droit sur AuthRoot, sélectionnez Nouveau, puis cliquez sur DWORD.
4. Tapez DisableRootAutoUpdate, puis appuyez sur Entrée.
5. Cliquez avec le bouton droit sur DisableRootAutoUpdate, puis cliquez sur Modifier .
6. Dans la zone Données de la valeur, tapez 1, puis cliquez sur OK.
7. Dans le menu Fichier, cliquez sur Quitter.
Méthode 4
Augmentez le délai d’int rement du service par défaut.
IMPORTANT
Cette section, méthode ou tâche contient des étapes vous indiquant comment modifier le Registre. Toutefois, des
problèmes graves peuvent se produire si vous modifiez le Registre de façon incorrecte. Par conséquent, veillez à
suivre ces étapes scrupuleusement. Pour une meilleure protection, sauvegardez le registre avant de le modifier.
Vous pouvez alors le restaurer en cas de problème. Pour plus d’informations sur la façon de la back up et de la
restauration du Registre, voir : Comment le restaurer dans Windows.
Pour augmenter le délai d’accès au service par défaut, suivez les étapes suivantes :
1. Cliquez sur Démarrer , puis Exécuter , entrez regedit dans la zone Ouvrir et cliquez sur OK .
2. Recherchez, puis sélectionnez la sous-clé de Registre suivante :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control .
3. Cliquez avec le bouton droit sur Contrôle, pointez sur Nouveau, puis cliquez sur DWORD .
4. Dans la zone Nouvelle valeur, tapez ServicesPipeTimeout, puis appuyez sur Entrée.
5. Cliquez avec le bouton droit sur Ser vicesPipeTimeout, puis cliquez sur Modifier.
6. Cliquez sur Décimal, tapez le nombre de millisecondes que vous souhaitez attendre jusqu’à
l’attente du service, puis cliquez sur OK. Par exemple, pour attendre 60 secondes avant l’heure
d’attente du service, tapez 60000.
7. Dans le menu Fichier, cliquez sur Quitter, puis redémarrez l’ordinateur.
Plus d’informations
Pour plus d’informations sur le programme de certificat racine Windows, les certificats, l’autorisation de
certificat et la liste d’autorisation de certificat, voir la section Plus d’informations de l’article de la Base de
connaissances Microsoft : An-automatic-updater-of-untrusted-certificates-is-available-for-window.
Des blocages de base de données se produisent
lorsque vous essayez d’afficher un rapport SSRS en
mode intégré SharePoint après la mise à jour d’une
source de données
14/08/2021 • 2 minutes to read
Cet article fournit des solutions aux blocages qui se produisent lorsque vous essayez d’afficher un rapport SQL
Server Reporting Services (SSRS) en mode SharePoint intégré.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2691331
Symptômes
Prenons l’exemple du scénario suivant :
Vous configurez une instance de Microsoft SSRS pour utiliser le mode SharePoint’intégration.
Vous créez un rapport qui possède plusieurs sources de données.
Vous déployez le rapport sur un site SharePoint web.
Vous mettez à jour l’une des sources de données.
Vous essayez d’afficher le rapport à partir d’une page SharePoint personnalisée. Le rapport est incorporé
dans un contrôle IFrame de la page à l’aide de l’accès URL direct au point de terminaison du proxy SSRS
comme suit :
http://<Server Name >/< Site Name >/_vti_bin/ReportServer/<Report Name >.rdl?<Report URL
Parameters >
Dans ce scénario, vous pouvez être face à un ou plusieurs des symptômes suivants.
Symptôme 1
Les blocages de base de données se produisent sur l’une des procédures stockées suivantes dans la base
de données du serveur de rapports principal :
[dbo].[GetDataSources]
[dbo].[DeleteDataSources]
Symptôme 2
Vous recevez l’un des messages d’erreur suivants :
Message d'erreur 1
Une erreur s’est produite dans la base de données du serveur de rapports. Cela peut être dû à
une défaillance de connexion, un délai d’accès ou une condition de disque faible au sein de la
base de données. (rsReportServerDatabaseError)
Message d'erreur 2
Expiration du délai d’expiration. Le délai d’expiration s’est produit avant la fin de l’opération ou
le serveur ne répond pas.
Symptôme 3
Le chargement SharePoint pages de sites est très lent lorsque vous essayez d’accéder SharePoint contenu
du site.
Cause
Ce problème se produit car la source de données n’est pas synchronisée correctement après sa mise à jour.
Résolution
Pour contourner ce problème, appliquez l'une des méthodes suivantes :
Méthode 1
Affichez le rapport directement à partir de la bibliothèque SharePoint documents une fois que vous avez
mis à jour la source de données du rapport. Cela permet de s’assurer que la source de données est
synchronisée correctement avant d’afficher le rapport via le point de terminaison du proxy SSRS.
Méthode 2
Utilisez un partie Web De la Visionneuse de rapports pour afficher le rapport.
Erreur (l’extension de données sélectionnée n’est pas
installée ou ne peut pas être chargée) lorsque vous
chargez des extensions personnalisées dans SQL
Server Outils de données <Custom Extension
Name> 2012
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où vous recevez un message d’erreur lorsque vous essayez de
charger des extensions personnalisées dans des projets de serveur de rapports dans SQL Server 2012 Data
Tools.
S’applique à : SQL Server 2012 Enterprise, SQL Server 2012 Business Intelligence, SQL Server 2012 Developer,
SQL Server 2012 Standard, SQL Server 2012 Web
Numéro de la ko d’origine : 2750044
Symptômes
Prenons l’exemple du scénario suivant :
Vous développez une extension de traitement des données Reporting Services personnalisée.
L’assembly d’extension de traitement des données personnalisé fait référence à
Microsoft.ReportingServices.Interfaces.dll fichier. Le fichier est inclus dans Microsoft SQL Server 2005
Reporting Services, SQL Server 2008 Reporting Services ou SQL Server 2008 R2 Reporting Services.
Vous installez SQL Server Data Tools (SSDT) dans Microsoft SQL Server 2012.
Vous déployez l’assembly d’extension de traitement des données à l’aide de SSDT.
Vous créez un projet de serveur de rapports basé sur le modèle Business Intelligence et vous essayez de
sélectionner l’extension de traitement des données personnalisée afin d’ajouter une nouvelle source de
données.
Dans ce cas, un message d’erreur semblable au suivant s’affiche :
Impossible de se connecter à la source de données ' <Data Source Name> '. L’extension de données
sélectionnée <Custom Extension Name> ' n’est pas installée ou ne peut pas être chargée. Vérifiez que
l’extension de données sélectionnée est installée sur le client pour les rapports locaux et sur le serveur de
rapports pour les rapports publiés.
NOTE
Le nom de la source de données est un espace réservé pour le nom de la source de données et le nom de
l’extension personnalisée est un espace réservé pour le nom de l’extension personnalisée.
Si vous chargez l’extension personnalisée dans un rapport SQL Server Reporting Services (SSRS), puis exécutez le
rapport via un service web SSRS ou une interface web, l’extension personnalisée s’exécute correctement.
Ce problème n’est pas limité aux extensions de traitement des données. Vous pouvez rencontrer des erreurs
similaires lorsqu’une extension personnalisée fait référence au fichier Microsoft.ReportingServices.Interfaces.dll
inclus dans SQL Server 2005 Reporting Services, SQL Server 2008 Reporting Services ou SQL Server 2008 R2
Reporting Services.
Cause
Le problème se produit en raison d’un bogue dans le processus d’installation de SSDT.
Lorsque SSDT est installé, les entrées incorrectes suivantes sont ajoutées au fichier devenv.exe.config et au
PreviewProcessingService.exe.config suivant :
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportingServices.Interfaces" publicKeyToken="89845dcd8080cc91"
culture="neutral"/>
<bindingRedirect oldVersion="9.0.242.0" newVersion="10.0.0.0"/>
</dependentAssembly>
Résolution
Pour résoudre ce problème, utilisez les entrées correctes dans devenv.exe.config fichier et dans
lePreviewProcessingService.exe.config fichier.
Pour corriger l’entrée dans devenv.exe.config fichier, suivez les étapes suivantes :
Ouvrez ledevenv.exe.config qui se trouve à l’emplacement :
%Program Files%\Microsoft Visual Studio 10.0\Common7\IDE .
NOTE
Le PreviewProcessingService.exe.config se trouve dans
%Program Files%\Microsoft Visual Studio 10.0\Common7\IDE\PrivateAssemblies .
<dependentAssembly>
<assemblyIdentity name="Microsoft.ReportingServices.Interfaces" publicKeyToken="89845dcd8080cc91"
culture="neutral"/>
<bindingRedirect oldVersion="9.0.242.0" newVersion="10.0.0.0"/>
</dependentAssembly>
NOTE
Les étapes de correction de l’entrée dansPreviewProcessingService.exe.config fichier sont les mêmes.
Le workbook contient des lignes et des colonnes
masquées lorsque vous exportez des rapports de
SQL Server Reporting Services vers Excel
15/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème où des lignes ou des colonnes masquées sont insérées dans un
workbook Excel lorsque vous exportez des rapports de SQL Server Reporting Services (SSRS) vers Excel.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2777223
Symptômes
Lorsque vous exportez un rapport Microsoft SSRS vers un Excel, il existe des lignes ou des colonnes masquées
dans le manuel. L’image suivante illustre ce problème :
Cause
Ce problème se produit parce que les hauteurs de ligne ou les largeurs de colonne sont arrondies.
Le langage RDL (Report Definition Language) vous permet d’utiliser plusieurs unités de mesure (par exemple, ,
et ) pour spécifier des valeurs de inches pixels position et de centimeters points taille. Toutefois, Excel
utilise uniquement points . Par conséquent, l’extension de rendu Excel SSRS convertit la hauteur et la largeur
du tableau, les hauteurs des lignes et les largeurs des colonnes en points . Ce processus peut inclure l’arrondi
de certaines valeurs. Dans ce cas, la hauteur ou la largeur du tableau et la somme des hauteurs de ligne ou des
largeurs de colonne sont différentes. Pour compenser la différence, l’extension de rendu Excel SSRS insère une
petite ligne ou colonne dans le workbook.
Solution de contournement
Pour contourner ce problème, spécifiez l’unité de mesure dans points .
NOTE
Vous pouvez convertir d’autres unités de mesure en points. Par exemple, vous pouvez convertir des pouces en points à
l’aide d’un rapport de 1 pouce à 72 points.
Message d’erreur au démarrage du service Serveur
de rapports ou lorsque vous essayez d’accéder au
site Web Reporting Services ou à la Power BI
Report Server : « Clé non valide pour une utilisation
dans l’état spécifié »
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous réinitialisez le compte de service
Report Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 955757
Symptômes
Lorsque vous travaillez avec un ordinateur qui exécute Microsoft SQL Server, vous pouvez recevoir le message
d’erreur suivant dans le journal de suivi du service Report Server :
Une erreur interne s’est produite sur le serveur de rapports. Pour plus d’informations, voir le journal des
erreurs. (rsInternalError) Obtenir la clé d’aide en ligne non valide pour une utilisation dans l’état spécifié.
(Exception de HRESULT : 0x8009000B)
Vous pouvez recevoir ce message d’erreur lorsque l’une des actions suivantes se produit :
Le service Serveur de rapports démarre.
Vous essayez d’accéder au site Web Reporting Services.
En outre, vous pouvez recevoir le message d’erreur suivant dans le journal de suivi du service Report Server :
Cause
En règle générale, ce problème se produit lorsque le mot de passe du compte de service Report Server est
réinitialisé.
Résolution
Pour résoudre ce problème, utilisez l’une des méthodes suivantes.
Méthode 1 : restaurer la clé symétrique
NOTE
Pour utiliser cette méthode, vous devez avoir une copie de sauvegarde de la clé symétrique disponible.
IMPORTANT
Cette méthode supprime tout le contenu chiffré. Cela inclut les chaînes de connexion et les informations d’identification
stockées. Ensuite, cette méthode crée une clé symétrique. Utilisez cette méthode uniquement si vous ne pouvez pas
restaurer la clé symétrique.
Après avoir supprimé le contenu chiffré, vous devez reenter les chaînes de connexion manquantes et les
informations d’identification stockées manquantes dans les rapports et dans les sources de données partagées
qui n’ont plus ces valeurs. En outre, vous devez mettre à jour tous les abonnements qui utilisent des extensions
de remise qui stockent des données chiffrées. Cela inclut l’extension de remise du partage de fichiers et toute
extension de remise tierce qui utilise des valeurs chiffrées.
Il n’existe aucun moyen automatisé de mettre à jour ces informations. Vous devez mettre à jour chaque rapport,
chaque abonnement et chaque source de données partagée qui utilise les informations d’identification stockées
et les chaînes de connexion un par un.
Pour supprimer le contenu chiffré, suivez les étapes suivantes :
1. Démarrez l’outil de configuration de Reporting Services, puis connectez-vous au serveur de rapports que
vous souhaitez configurer.
2. Dans la page Clés de chiffrement, cliquez sur Supprimer le contenu chiffré.
Références
Pour plus d’informations sur le journal de suivi du service Report Server, voir Report Server Service Trace
Log.
Pour plus d’informations sur la restauration de la clé symétrique, voir Clés de chiffrement SSRS - Back Up
and Restore Encryption Keys.
Pour plus d’informations sur les clés de chiffrement, voir Encryption Keys (Reporting Services Configuration).
Le volet paramètre n’est pas visible dans le rapport
drillThrough SharePoint mode intégré dans SSRS
13/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème dans lequel le volet paramètres d’un rapport enfant est
définitivement masqué.
Version du produit d’origine : SQL Server 2012 Business Intelligence, SQL Server 2012 Developer, SQL Server
2012 Enterprise, SQL Server 2012 Standard, SQL Server 2012 Web
Numéro de la ko d’origine : 2903465
Symptômes
Prenons l’exemple du scénario suivant :
Vous avez un serveur SSRS qui s’exécute en SharePoint mode intégré.
Un rapport parent (rapport principal) qui s’exécute sur le serveur ne possède que des paramètres masqués
ou n’a aucun paramètre.
Un rapport enfant (rapport de drillthrough) est en cours d’exécution sur le même serveur et ce rapport est
associé à un ou plusieurs paramètres.
Vous allez dans le rapport enfant à partir du rapport parent.
Dans ce scénario, le volet de paramètres de l’état enfant est définitivement masqué et vous ne pouvez pas
sélectionner ou modifier les valeurs de paramètre du rapport enfant.
Cause
Ce problème se produit en raison d’une limitation connue au sein du SSRS.
Solution de contournement
Pour contourner ce problème, créez un paramètre factice pour le rapport parent et assurez-vous que le
paramètre est paramétrable.
Rendu des problèmes de SQL Server Reporting
Services rapports dans Internet Explorer
12/08/2021 • 3 minutes to read
Cet article répertorie différents problèmes dans lequel les rapports ne sont pas rendus comme prévu dans
Internet Explorer 8 et versions ultérieures en mode standard.
Version du produit d’origine : SQL Server 2012 Enterprise
Numéro de la ko d’origine : 2967090
Résumé
Vous pouvez rencontrer différents problèmes avec les rapports Microsoft SQL Server Reporting Services (SSRS)
dans lesquels les rapports ne sont pas rendus comme prévu dans Internet Explorer 8 et versions ultérieures en
mode standard (également appelé mode documents). Les problèmes sont les suivants :
Les rapports du tableau de bord Dynamics CRM et d’autres rapports ne sont pas correctement rendus. Plus
précisément, les rapports sont réduit et s’affichent dans une colonne étroite plutôt que dans la page entière
du navigateur.
L’alignement des rapports est oblique en mode SharePoint reporting Services et en mode natif.
Dans la mesure où SSRS prend entièrement en charge le mode « Quirks » d’Internet Explorer, les clients
Dynamics CRM ne peuvent pas effectuer de personnalisations. Les personnalisations sont uniquement pris
en charge en mode standard Internet Explorer.
Étant donné que SSRS prend entièrement en charge le mode quirks d’Internet Explorer, les clients qui
utilisent une application personnalisée pour s’intégrer à SSRS ne peuvent pas utiliser le mode standard
Internet Explorer par défaut.
Les options d’exportation disparaissent lorsqu’un rapport est rendu en mode standard Internet Explorer.
Les performances d’exploration diminuent considérablement en mode standard Internet Explorer.
Lorsque vous sélectionnez la propriété Rotate270 (qui spécifie le texte vertical du bas vers le haut) dans une
zone de texte, puis que vous affichez un état en mode intégré WritingMode SharePoint (SharePoint Server
2010 ou une version ultérieure), vous diminuez particulièrement la clarté du texte lorsque le rapport est
affiché dans le navigateur. Le texte est beaucoup moins clair en mode standard (il s’agit de la valeur
SharePoint par défaut) dans Internet Explorer 7 et versions ultérieures qu’en mode Quirks d’Internet Explorer
5.
Lorsque vous exécutez System Center Configuration Manager rapports sur les clients qui utilisent le
navigateur Internet Explorer 11, vous êtes figé. Ces rapports sont effectivement restituer conformément au
journal SSRS. Toutefois, le client voit le volant de rotation vert et l’état ne semble jamais s’restituer. Pour
corriger ce problème, il s’est possible de définir Internet Explorer 11 en mode « Quirks ».
Dans les versions d’Internet Explorer ultérieures à Internet Explorer 7, si nous zoomons sur le texte
Rotation270 dans un état, le texte s’déborde en dehors des limites de la zone de texte qui est destinée à le
contenir. Par conséquent, le texte devient partiellement ou complètement masqué.
NOTE
Les rapports SSRS ne prend en charge Internet Explorer qu’en mode quirks. Ce comportement est inhérent au produit.
Pour plus d’informations, voir : Planning for Reporting Services and Power View Browser Support
Plus d’informations
Notre équipe produit s’engage à prendre en charge les navigateurs à jour. Cela inclut le mode standard Internet
Explorer. Toutefois, étant donné que ce mode est la base du rendu des rapports, le correctif est assez complet et
ne peut pas être inclus dans une mise à jour cumulative ou un Service Pack pour Reporting Services. Nous
mettreons à jour cet article en cas de modification de la stratégie de prise en charge pour le mode standard.
Impossible de récupérer des fichiers d’application.
Erreur de déploiement des fichiers endommagés
lorsque vous essayez de démarrer la version
ClickOnce de Report Builder à partir de SQL Server
2012 Reporting Services
12/08/2021 • 2 minutes to read
Cet article vous aide à résoudre l’impossibilité de récupérer des fichiers d’application. Fichiers
endommagés lors d’une erreur de déploiement qui se produit lorsque vous essayez de démarrer la version
ClickOnce de SQL Server Report Builder.
Version du produit d’origine : SQL Server 2012
Numéro de la ko d’origine : 2781227
Symptômes
Lorsque vous essayez de démarrer la version ClickOnce de Microsoft SQL Server Report Builder pour Microsoft
SQL Server 2012 sur un ordinateur client, vous pouvez recevoir un message d’erreur semblable à ce qui suit :
En outre, lorsque vous cliquez sur Détails dans la boîte de dialogue du message d’erreur, vous voyez des
informations détaillées sur l’erreur qui ressemblent à ce qui suit :
ERREUR + L’exception s’est produite lors du chargement du manifeste à partir MSReportBuilder.exe fichier :
le manifeste peut ne pas être valide ou le fichier n’a pas pu être ouvert. + Impossible de charger le manifeste
interne à partir du fichier de composant. DÉTAILS DE L’ERREUR Les erreurs suivantes ont été détectées au
cours de cette opération. * [31/10/2012 9:25:34 AM]
System.Deployment.Application.InvalidDeploymentException (ManifestLoad) - Une exception s’est produite
lors du chargement du manifeste à partir du MSReportBuilder.exe de fichier : le manifeste peut ne pas être
valide ou le fichier n’a pas pu être ouvert. - Source : System.Deployment - Stack trace: at
System.Deployment.Application.Manifest.AssemblyManifest.ManifestLoadExceptionHelper(Exception
exception, String filePath) at
System.Deployment.Application.Manifest.AssemblyManifest.LoadFromInternalManifestFile(String filePath) at
System.Deployment.Application.DownloadManager.ProcessDownloadedFile(Object sender,
DownloadEventArgs e) at
System.Deployment.Application.FileDownloader.DownloadModifiedEventHandler.Invoke(Object sender,
DownloadEventArgs e) at
System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) at
System.Deployment.Application.SystemNetDownloader.DownloadAllFiles() at
System.Deployment.Application.FileDownloader.Download(SubscriptionState subState) at
System.Deployment.Application.DownloadManager.DownloadDependencies(SubscriptionState subState,
AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String
targetDirectory, String group, notification IDownloadNotification, Options DownloadOptions) sur
System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState,
ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp) at
System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState,
ActivationDescription actDesc) at
System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri,
Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings
browserSettings, String& errorPageUrl) at
System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) --- Inner
Exception --- System.Deployment.Application.DeploymentException (InvalidManifest) - Cannot load internal
manifest from component file.
Cause
Ce problème se produit car Microsoft .NET Framework 4 ou une version ultérieure du .NET Framework n’est pas
installé sur l’ordinateur client.
Résolution
Pour résoudre ce problème, installez le .NET Framework 4. Le fichier suivant est disponible en téléchargement à
partir du Centre de téléchargement Microsoft :
Téléchargez le package .NET Framework 4 maintenant.
Pour plus d’informations sur le téléchargement des fichiers de support Microsoft, voir : Comment obtenir des
fichiers de support Microsoft à partir des services en ligne
Revendication de l’analyse antivirus
Microsoft a analysé ce fichier à la recherche de virus, à l’aide du logiciel de détection de virus le plus actuel
disponible à la date à laquelle le fichier a été publié. Le fichier est stocké sur des serveurs à sécurité améliorée
qui permettent d’empêcher toute modification non autorisée.
Configuration requise pour le redémarrage
Vous devez redémarrer votre ordinateur après avoir installé ce package, puis redémarrer l Report Builder
ClickOnce application.
Plus d’informations
Pour plus d’informations sur .NET Framework, voir : .NET
Pour plus d’informations sur les conditions préalables pour SQL Server Report Builder, voir : Prerequisites for
Tutorials (Report Builder)
S’applique à
SQL Server Web 2012
SQL Server 2012 Standard
SQL Server 2012 Enterprise Core
SQL Server 2012 Express
SQL Server 2012 Developer
SQL Server 2012 Enterprise
Vous recevez un message d’avertissement lorsque
vous ajoutez un assembly Reporting Services en
tant que références à un projet d’élément de
rapport personnalisé dans SQL Server 2012
Reporting Services
15/08/2021 • 2 minutes to read
Cet article vous aide à comprendre les messages d’avertissement qui se produisent lors de l’ajout d’une
référence à des assemblys de services de création de rapports lors du développement d’un projet de rapport
personnalisé à l’aide SQL Server Business Intelligence Development Studio.
Version du produit d’origine : SQL Server 2012
Numéro de la ko d’origine : 2722683
Symptômes
Prenons l’exemple du scénario suivant :
Dans Microsoft SQL Server 2012 Reporting Services, vous développez un projet d’élément de rapport
personnalisé à l’aide SQL Server Business Intelligence Development Studio.
Vous définissez la .NET Framework cible du projet sur .NET Framework 3,5.
Vous ajoutez l’un des assemblys suivants en tant que références au projet d’élément de rapport personnalisé
:
Microsoft.ReportingServices.Interfaces.dll
Microsoft.ReportingServices.ProcessingCore.dll
Une fois que vous avez .NET Framework la .NET Framework 4.0, le projet peut être compilé avec succès.
Toutefois, le service SQL Server Reporting Services (SSRS) ne peut pas charger l’élément de rapport
personnalisé. L’élément de rapport personnalisé ne s’affiche dans aucun rapport SQL Server 2012 Reporting
Services.
Résolution
Pour résoudre ce problème, vous pouvez ignorer le message d’avertissement en toute sécurité. Le projet est
compilé et peut être déployé avec succès sur le serveur de rapports.
Choisir un modèle de licence pour SQL Server sur
Linux
13/08/2021 • 2 minutes to read
Cet article explique comment choisir un modèle de licence pour SQL Server sur Linux.
Version du produit d’origine : SQL Server 2017 sur Linux (toutes éditions)
Numéro de la ko d’origine : 4475751
Résumé
Si vous installez Microsoft SQL Server sur Linux à l’aide de l’outil d’installation mssql-conf et si vous avez acheté
la licence appropriée via le Centre de gestion des licences en volume (VLSC), vous pouvez sélectionner l’une des
options PAYANTes appropriées parmi les éditions SQL Server suivantes :
Évaluation (gratuite, aucun droit d’utilisation de production, limite de 180 jours)
Développeur (gratuit, aucun droit d’utilisation de production)
Express (gratuit)
Web (PAYANT)
Standard (PAID)
Enterprise (PAID)
Enterprise Core (PAID)
« J’ai acheté une licence par le biais d’un canal de vente au détail et j’ai une clé de produit à entrer. »
Plus d’informations
Pour plus d’informations, consultez les sections suivantes de SQL Server sur Linux Forum Aux Questions (FAQ).
Comment fonctionne la gestion des licences sur Linux ?
SQL Server est sous licence de la même manière pour Windows linux. Vous sélectionnez la plateforme de votre
choix pendant le processus de gestion des licences. Pour plus d’informations, voir Comment obtenir une licence
SQL Server.
Quelle édition de SQL Ser ver dois-je choisir si je l’ai déjà achetée ?
Lorsque vous exécutez le programme d’installation mssql-conf, vous avez les options d’installation suivantes :
Choisissez une édition de SQL Server :
Évaluation (gratuite, aucun droit d’utilisation de production, limite de 180 jours)
Développeur (gratuit, aucun droit d’utilisation de production)
Express (gratuit)
Web (PAYANT)
Standard (PAID)
Enterprise (PAID)
Enterprise Core (PAID)
J’ai acheté une licence via un canal de vente au détail et j’ai une clé de produit à entrer.
Si vous avez obtenu votre licence par le biais de licences en volume dans le cadre d’un Accord Entreprise ou de
votre abonnement MSDN, vous devez choisir parmi les options 4 à 7. Si vous avez acheté une édition Standard
via un canal de vente au détail, vous devez sélectionner l’option 8.
SQL Server se termine et génère un vidage
principal sur RHEL 7.4 lorsque vous essayez
d’exécuter mssql-conf
12/08/2021 • 4 minutes to read
Cet article vous aide à résoudre le problème où SQL Server se termine et génère un vidage principal sur RHEL
7.4 lorsque vous essayez d’exécuter mssql-conf après l’installation.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 4134638
Symptômes
Après avoir installé Microsoft SQL Server sur RHEL 7.4, le programme s’termine et génère un vidage principal
lorsque vous essayez d’exécuter l’outil mssql-conf. En outre, l’entrée suivante est consignée dans les journaux
systemctl du service mssql-server ( journalctl -u mssql-server.service) :
Ce programme a rencontré une erreur fatale et ne peut pas poursuivre son exécution.
Les informations de diagnostic suivantes sont disponibles :
Raison : 0x00000003
Message : résultat
Stacktrace : 00005577212bcd92 0000557721266767
Processus : 590 - sqlservr
Thread : 594 (thread d’application 0x1000)
ID d’instance : afe0f97b-fdbc-4a4d-910c-038e7ee2049b
ID d’incident : 544c4c67-0f49-4877-a959-92c14798d58e
Cachet de build : f7473acad6f0299cd161863aaa02e4284434ab6d915c7b467e2a14e907290249
Cause
Ce problème se produit car SQL Server sur Linux est incompatible avec les dispositions VA héritées. En raison
des paramètres activés sur RHEL 7.4, tous les processus commencent par using legacy_va_layout .
Au démarrage, SQL Server sur Linux vérifier les plages d’adresses. Lorsqu’elle trouve une incompatibilité en
raison d’une disposition VA héritée, elle génère une affirmation, met fin au programme et génère un vidage
principal.
RHEL 7.4 peut basculer vers une disposition VA héritée pour l’une des raisons suivantes :
La valeur de limite de pile souple est définie sur Unlimited (par exemple, un script limits.conf modifié ou un
paramètre ulimit -s).
Une disposition va héritée globale est activée (par exemple, sysctl vm.legacy_va_layout ou
modify/etc/sysctl.conf ).
Résolution
1. Dans la /etc/security/limits.conf disposition, ajoutez une nouvelle ligne, puis entrez le code :
2. Dans la /etc/sysctl.conf disposition, ajoutez une nouvelle ligne, puis entrez le code :
vm.legacy_va_layout = 0 .
3. Redémarrez l’ordinateur reboot :.
4. Assurez-vous que le paramètre de pile souple pour les utilisateurs, racine et mssql , est 8192 . Basculez
vers le contexte de l’utilisateur, puis exécutez la commande suivante ulimit -s :
5. Assurez-vous que la disposition va héritée globale est 0 : Sysctl vm.legacy_va_layout .
Lorsque ces paramètres sont effectués dans un système x64, la disposition de l’espace d’adressare ressemble à
ce qui suit :
MMAP_BASE se trouve près de la partie supérieure de l’espace d’adressan. À mesure que les mappages sont
ajoutés, l’allocation d’espace d’adressare augmente. Il s’agit de la configuration par défaut pour RHEL, et c’est ce
que SQL Server s’attend à rencontrer au démarrage.
mmap code
=========
#include <stdio.h>
#include <sys/mman.h>
int main()
{
void* result = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, 0, 0);
printf("mmap %p\n", result);
return 0;
}
Toutefois, si l’un des paramètres ou les deux sont modifiés, la disposition va peut revenir à sa disposition héritée
:
Ici, MMAP_BASE il est placé à un tiers de l’espace d’adressan. À mesure que les mappages sont ajoutés, l’allocation
d’espace d’adressace augmente (augmente).
Étant donné que nous avons un espace d’adressare virtuel 47 bits, dans Linux 64 bits, il est placé autour de la
0x2A0000000000 MMAP_BASE virtuelle de 42 0x2A0000000000. Par conséquent, mssql se déchaille sur les
adresses qui sont déjà mappées en dessous de 64 To lorsqu’elle tente de définir ses cartes fixes.
Cet article vous aide à contourner le problème d’échec d’une opération de restauration SQL base de données
sur des serveurs Linux.
S’applique à : SQL Server 2017 sur Linux, SQL Server 2017 Developer Linux, SQL Server 2017 Enterprise Core
Linux, SQL Server 2017 Enterprise Linux, SQL Server 2017 Standard Linux
Numéro de la ko d’origine : 4519691
Symptômes
Lorsque vous essayez de restaurer une base de données SQL sur un serveur Linux Microsoft SQL Server 2017,
l’opération échoue pendant le processus de restauration et renvoie un message d’erreur semblable à ce qui suit :
MODIFY FILE a rencontré l’erreur du système d’exploitation 31(Un appareil connecté au système ne
fonctionne pas.) lors de la tentative de développement du fichier physique
Cause
Ce problème peut se produire parce que le disque dur est à court d’espace. Sur les serveurs Linux, SQL Server
ne vérifie pas l’espace disponible avant le démarrage de l’opération.
Solution de contournement
Pour contourner ce problème, restituer la base de données sur un volume qui dispose de suffisamment
d’espace.
Références
Découvrez la description de la terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft
que Microsoft utilise pour décrire les mises à jour logicielles.
Vous ne pouvez pas faire basculer le volet de
résultats dans SQL Server Management Studio
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème dans lequel vous ne pouvez pas faire basculer le volet de résultats
SQL Server Management Studio dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2860024
Symptômes
Lorsque vous utilisez SQL Server Management Studio (SSMS) dans SQL Server 2012 ou versions ultérieures, la
possibilité de faire basculer le volet de résultats peut être manquante. Par conséquent, vous ne verrez pas le
raccourci Masquer le volet De résultats ou Afficher les résultats dans le menu Fenêtre. En outre, lorsque vous
appuyez sur Ctrl+R, la visibilité du volet de résultats ne bascule pas.
NOTE
Lorsque vous appuyez sur Ctrl+R, vous recevez le message suivant dans la barre d’état :
Cause
Ce problème se produit parce que .vssettings le fichier de SSMS est endommagé.
NOTE
Par défaut, ce fichier est nommé NewSettings.vssettings et se trouve dans le dossier suivant :
%USERPROFILE%\Documents\SQL Server Management Studio\Settings\SQL Server Management Studio
Remarque : pour SSMS versions 18.x, le fichier se trouve .vssetting dans le dossier suivant :
%LOCALAPPDATA%\Microsoft\SQL Server Management Studio\18.0_IsoShell\Settings\SQL Server Management Studio
Solution de contournement
Pour contourner ce problème, réinitialisez le schéma de mappage de clavier par défaut. Pour cela, procédez
comme suit :
1. Ouvrez SQL Server Management Studio.
2. Dans la barre de menus, cliquez sur Outils, puis sur Options.
3. Dans le volet arborescence sur le côté gauche de la boîte de dialogue, cliquez sur Clavier .
4. Cliquez sur Réinitialiser pour réinitialiser le schéma de mappage de clavier par défaut.
5. Dans la boîte de dialogue qui s’affiche, cliquez sur Oui.
6. Cliquez sur OK .
SQL Server 2016 l’agent ne parvient pas à démarrer
ou l’erreur « Échec de récupération des données »
lorsque vous essayez de lire le journal des erreurs
depuis SSMS 2016
14/08/2021 • 2 minutes to read
Cet article répertorie les différents problèmes qui se produisent dans SSMS lors de l’utilisation d’une version
antérieure du pilote ODBC 13 MS et la résolution de ces problèmes.
Version du produit d’origine : SQL Server Développeur 2016
Numéro de la ko d’origine : 3185365
Symptômes
Lorsque vous avez une instance nommée Microsoft SQL Server 2016 RTM ou SQL Server 2016 RTM CU1, vous
pouvez être face à l’un des symptômes suivants.
Symptôme 1
Le fichier journal SQL Server Agent de sécurité affiche un message semblable à ce qui suit :
Symptôme 2
Lorsque vous essayez de lire le journal d SQL Server des erreurs, la tentative échoue et une erreur semblable à
ce qui suit est renvoyée :
En outre, lorsque vous essayez d’exécuter xp_readerrorlog, cela peut déclencher les erreurs suivantes :
Symptôme 3
Certains plans de maintenance ou SQL de l’agent de maintenance, tels qu’une tâche de nettoyage de
maintenance pour supprimer les anciens fichiers de sauvegarde ou signaler « silencieusement » l’échec. Dans le
cas de la tâche de nettoyage, les fichiers que vous prévoyez de supprimer ne sont pas supprimés lorsque le
travail correspondant est exécuté et aucune erreur n’est écrite dans le journal SQL Server. L’exécution
sp_readerrorlog entraînerait le symptôme 2.
Cause
Ce problème est dû à un défaut du pilote ODBC 13 MS. SQL Server Management Studio (SSMS) et l’agent SQL
Server utilisent ce pilote pour se connecter à SQL Server ordinateur.
Résolution
This issue is fixed in the MS ODBC 13.1 driver.
Message d’erreur lorsque vous cliquez sur le nœud
Bases de données SQL Server Management Studio
dans SQL Server
13/08/2021 • 2 minutes to read
Cet article décrit un message d’erreur qui se produit généralement dans SSMS lorsqu’un problème survient lors
de la récupération d’informations sur une ou plusieurs bases de données d’une instance SQL Server données.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 956179
Symptômes
Vous pouvez recevoir un message d’erreur semblable au suivant lors de l’utilisation SQL Server Management
Studio (SSMS)
NOTE
Ce problème se produit également si vous n’êtes pas membre du groupe Sysadmins.
Pour contourner ce problème, utilisez l’ancienne version SSMS les étapes suivantes :
1. Fermez le message d’erreur.
2. Appuyez sur F7 pour ouvrir le volet Détails de l’Explorateur d’objets.
3. Cliquez avec le bouton droit sur les en-têtes de colonne et assurez-vous que seules les colonnes
suivantes sont sélectionnées :
Nom
Date de création
État de la stratégie
Propriétaire
4. Cliquez avec le bouton droit sur le nœud Bases de données, puis cliquez sur Actualiser.
Vous pouvez également télécharger et installer SSMS à partir de Download SQL Server Management
Studio (SSMS) et voir si le problème disparaît. Si le problème se produit toujours avec la nouvelle version
de SSMS, consultez SQL Server’aide et vos commentaires pour obtenir de l’aide supplémentaire sur votre
problème.
Vous vous connectez à SQL Server 2008 R2 ou à une version antérieure de SQL Server et lorsque
l’utilisateur invité est désactivé dans la base de données msdb. Pour plus d’informations, vous ne devez
pas désactiver l’utilisateur invité dans la base de données msdb dans SQL Server
L’Explorateur d’objets se bloque par intermittence
lorsque vous utilisez SSMS 2012 ou une ultérieure
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème où l’Explorateur d’objets se bloque par intermittence lorsque vous
utilisez SQL Server Management Studio (SSMS) 2012 ou une version ultérieure.
Version du produit d’origine : Microsoft SQL Server Management Studio
Numéro de la ko d’origine : 4091777
Symptômes
L’Explorateur d’objets se bloque par intermittence lorsque vous utilisez SSMS. Ce problème s’applique à toutes
les versions SSMS 2012.
Ce problème peut se produire chaque fois que l’Explorateur d’objets est en focus (par exemple, lorsque vous
cliquez sur un élément dans l’arborescence). Toutefois, ce problème se produit uniquement si toutes les
conditions suivantes sont vraies :
SQL Server’authentification est utilisée.
La base de données par défaut de la connexion utilisée pour la connexion n’est pas la base de données
principale.
La SSMS est 2012 ou une version ultérieure.
L’Explorateur d’objets est connecté au moteur de base de données.
NOTE
Les fenêtres de requête ne font pas l’expérience de ce problème.
Cause
Ce problème est dû à un type de condition de course qui se produit entre des threads utilisés par l’Explorateur
d’objets.
Résolution
Pour éviter ce problème, utilisez l’une des méthodes suivantes :
Méthode 1 : utiliser l’authentification Windows utilisateur.
Méthode 2 : modifiez le paramètre de base de données par défaut en base de données maître pour la
connexion.
Méthode 3 : modifier la chaîne SSMS connexion pour demander une connexion à la base de données maître.
For, méthode 2
Pour modifier la base de données par défaut pour la connexion, exécutez les commandes suivantes à l’aide
d’une connexion qui dispose de l’autorisation ALTER ANY LOGIN :
USE [master]
GO
ALTER LOGIN [YourLogin] WITH DEFAULT_DATABASE=[master]
GO
For, méthode 3
Pour modifier la chaîne SSMS connexion, suivez les étapes suivantes :
1. Dans l’Explorateur d’objets, cliquez Connecter, puis cliquez sur Moteur de base de données .
3. Sous l’onglet Propriétés de connexion, entrez maître dans le Connecter de base de données, puis
cliquez sur Connecter .
Exception lorsque vous exécutez une requête dans
SQL Server Management Studio
14/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez SQL Server Management
Studio (SSMS) pour exécuter une requête SQL qui renvoie une grande quantité de données.
Version du produit d’origine : SQL Server 2012, SQL Server 2008, SQL Server 2005
Numéro de la ko d’origine : 2874903
Symptômes
Lorsque vous utilisez SSMS pour exécuter une requête SQL qui renvoie une grande quantité de données, vous
recevez un message d’erreur qui ressemble à ce qui suit :
Une erreur s’est produite lors de l’exécution du lot. Message d’erreur : exception de type «
System.OutOfMemoryException » a été lancée
Cause
Ce problème se produit car SSMS mémoire est insuffisante pour allouer des résultats importants.
NOTE
SSMS est un processus 32 bits. Par conséquent, elle est limitée à 2 Go de mémoire. SSMS impose une limite artificielle sur
la quantité de texte qui peut être affichée par champ de base de données dans la fenêtre de résultats. Cette limite est de
64 Ko en mode « Grille » et de 8 Ko en mode texte. Si le jeu de résultats est trop grand, la mémoire requise pour afficher
les résultats de la requête peut dépasser la limite de 2 Go du processus SSMS de requête. Par conséquent, un jeu de
résultats important peut provoquer l’erreur mentionnée dans la section Symptômes.
Solution de contournement
Pour contourner ce problème, essayez l’une des méthodes suivantes.
S’applique à
SQL Server 2012 Express
SQL Server 2012 Developer
SQL Server 2012 Enterprise
SQL Server 2012 Standard
SQL Server Web 2012
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
SQL Server 2008 Developer
SQL Server 2008 Enterprise
SQL Server 2008 Express
SQL Server 2008 Standard
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2005 Developer Edition
SQL Server 2005 Enterprise Edition
SQL Server Version d’évaluation 2005
SQL Server 2005 Express Edition
SQL Server 2005 Édition Standard
SQL Server 2005 Workgroup Edition
L’enregistrement des modifications n’est pas autorisé
dans SSMS
14/08/2021 • 4 minutes to read
Cet article vous aide à contourner le problème dans lequel vous recevez un message d’erreur lorsque vous
essayez d’enregistrer une table dans SQL Server Management Studio (SSMS).
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 956176
Symptômes
Lorsque vous essayez d’enregistrer une table après avoir apporté des modifications à la table à l’aide de
Designer dans SQL Server management Studio, vous pouvez recevoir le message d’erreur suivant :
L’enregistrement des modifications n’est pas autorisé. Les modifications que vous avez apportées
nécessitent l’abandon et la re-création des tableaux suivants. Vous avez apporté des modifications à une
table qui ne peut pas être re-créée ou activé l’option Empêcher l’enregistrement des modifications qui
nécessitent la re-création de la table.
Ce problème se produit lorsque vous a apporté une ou plusieurs des modifications suivantes au tableau :
Vous modifiez le paramètre Autoriser les valeurs Null pour une colonne.
Vous réordez les colonnes du tableau.
Vous modifiez le type de données de colonne.
Vous ajoutez une nouvelle colonne.
Vous modifiez filegroup la table ou ses text/image données.
Cause
Ce problème se produit car l’option Empêcher l’enregistrement des modifications qui nécessitent l’option de re-
création de table est activée par défaut dans SQL Server Management Studio.
Lorsque vous modifiez une table de sorte que vous modifiez la structure des métadonnées de la table, puis que
vous enregistrez la table, la table doit être re-créée en fonction de ces modifications. Cela peut entraîner la perte
de métadonnées et une perte directe de données lors de la re-création de la table. Si vous activez l’option
Empêcher l’enregistrement des modifications qui nécessitent l’option de re-création de tableau dans la section
Concepteur de la fenêtre Options de SQL Ser ver Management Studio (SSMS), vous recevez le message
d’erreur mentionné dans la section Symptômes.
Solution de contournement
Pour contourner ce problème, utilisez des instructions Transact-SQL pour apporter les modifications à la
structure des métadonnées ALTER TABLE d’une table.
Par exemple, pour modifier la colonne MyDate de type datetime dans la table appelée MyTable afin d’accepter
des valeurs NULL, vous pouvez utiliser :
alter table MyTable alter column MyDate7 datetime NULL
IMPORTANT
Nous vous recommandons vivement de ne pas contourner ce problème en 2013 en 2013, en 2013, en 2013. Pour plus
d’informations sur les risques de cette option, consultez la section « Plus d’informations ».
Plus d’informations
Pour modifier l’option Empêcher l’enregistrement des modifications qui nécessitent l’option de re-
création de tableau, suivez les étapes suivantes :
1. Ouvrez SQL Server Management Studio.
2. Dans le menu Outils , cliquez sur Options .
3. Dans le volet de navigation de la fenêtre Options, cliquez sur Concepteurs.
4. Sélectionnez ou clear the Prevent saving changes that require the table re-creation check box,
and then click OK .
NOTE
Si vous désactivez cette option, vous n’êtes pas averti lorsque vous enregistrez la table que les modifications que vous
avez apportées ont modifié la structure des métadonnées de la table. Dans ce cas, une perte de données peut se produire
lorsque vous enregistrez la table.
Risque de la mise hors option « Empêcher l’enregistrement des modifications qui nécessitent une nouvelle
création de tableau »
Bien que la non-création de cette option vous évite de créer une table, elle peut également entraîner la perte de
modifications. Par exemple, supposons que vous activez la fonctionnalité Suivi des modifications dans SQL
Server pour suivre les modifications apportées au tableau. Lorsque vous effectuez une opération qui entraîne la
re-création de la table, vous recevez le message d’erreur mentionné dans la section Symptômes. Toutefois, si
vous dés désactiver cette option, les informations de suivi des changements existantes sont supprimées lors de
la re-création de la table. Par conséquent, nous vous recommandons de ne pas contourner ce problème en 2013
en 2013.
Pour déterminer si la fonctionnalité Suivi des changements est activée pour un tableau, suivez les étapes
suivantes :
1. Dans SQL Server Management Studio, recherchez le tableau dans l’Explorateur d’objets.
2. Cliquez avec le bouton droit sur le tableau, puis cliquez sur Propriétés.
3. Dans la boîte de dialogue Propriétés du tableau, cliquez sur Suivi des changements. Si la valeur de l’élément
Suivi des changements est True, cette option est activée pour la table. Si la valeur est False, cette option est
désactivée.
Lorsque la fonctionnalité est activée, utilisez Change Tracking les instructions Transact-SQL pour modifier la
structure des métadonnées de la table.
Étapes pour reproduire le problème
1. Dans SQL Server Management Studio, créez une table qui contient une clé primaire dans l’outil Concepteur
de tableau.
2. Cliquez avec le bouton droit sur la base de données qui contient cette table, puis cliquez sur Propriétés.
3. Dans la boîte de dialogue Propriétés de la base de données, cliquez sur Suivi des changements.
4. Définissez la valeur de l’élément Suivi des changements sur True, puis cliquez sur OK.
5. Cliquez avec le bouton droit sur le tableau, puis cliquez sur Propriétés.
6. Dans la boîte de dialogue Propriétés du tableau, cliquez sur Suivi des changements.
7. Définissez la valeur de l’élément Suivi des changements sur True, puis cliquez sur OK.
8. Dans le menu Outils , cliquez sur Options .
9. Dans la boîte de dialogue Options, cliquez sur Concepteurs.
10. Cliquez pour cocher la case Empêcher l’enregistrement des modifications qui nécessitent la re-création
d’une table, puis cliquez sur OK.
11. Dans l’outil Concepteur de tableau, modifiez le paramètre Autoriser les valeurs Null sur une colonne
existante.
12. Essayez d’enregistrer la modification dans le tableau.
Erreur lorsque vous essayez de modifier un tableau
de grande taille à l’aide de SQL Server
Management Studio
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez de modifier une grande table à
l’aide du concepteur de tableaux SQL Server Management Studio.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 915849
Symptômes
Lorsque vous essayez de modifier un tableau de grande taille à l’aide du concepteur de table dans Microsoft
SQL Server Management Studio, vous pouvez recevoir un message d’erreur semblable au suivant :
Cause
Ce comportement se produit en raison du délai d’délai de transaction pour le concepteur de table et pour le
concepteur de base de données dans SQL Server Management Studio. Vous pouvez spécifier ce paramètre dans
le délai d’issue de la transaction. Par défaut, ce paramètre est de 30 secondes.
NOTE
Ce paramètre diffère du paramètre dans le délai d’SQL Server Management Studio. Par défaut, le paramètre dans le délai
d’exécution de l’Éditeur de requêtes SQL Server Management Studio est zéro . Par défaut, le paramètre dans la zone Délai
d’absence de requête (secondes) de l’Éditeur de requêtes dans SQL Server 2000 SQL Query Analyzer est également
zéro . Par conséquent, l’Éditeur de requêtes attend indéfiniment que la requête se termine et ne s’achève jamais.
Résolution
Pour résoudre ce problème, utilisez l’une des méthodes suivantes :
Cliquez pour effacer la case à cocher Remplacer le délai d’délai de chaîne de connexion pour les mises à
jour du concepteur de table pour le concepteur de table et pour le concepteur de base de données dans
SQL Server Management Studio.
Spécifiez un paramètre élevé dans le délai d’issue de transaction pour le concepteur de table et pour le
concepteur de base de données dans SQL Server Management Studio.
Modifiez la grande table à l’aide des instructions Transact-SQL dans l’Éditeur de requêtes dans SQL
Server Management Studio.
Pour plus d’informations sur ces paramètres, voir Options (Designers - Table and Database Designers Page).
Statut
Ce comportement est inhérent au produit.
Informations supplémentaires
La modification d’un tableau de grande taille peut prendre beaucoup de temps. Cela est dû au SQL Server
effectuer les actions suivantes lorsque vous essayez de modifier le schéma de la table :
1. Créez une table temporaire avec le même schéma de table.
2. Copiez toutes les données de la table réelle vers la table temporaire.
3. Déposez le tableau réel.
4. Renommons la table temporaire en nom de table réelle.
Désinstaller SQL Server Management Studio
13/08/2021 • 2 minutes to read
Cet article explique comment désinstaller les Microsoft SQL Server Management Studio incluses dans SQL
Server 2014 et les versions antérieures du produit.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 909953
Introduction
Cet article pas à pas décrit comment désinstaller le SQL Server Management Studio inclus dans SQL Server
2014 et les versions antérieures du produit. Vous de devez peut-être désinstaller ces outils si vous recevez le
message d’erreur suivant :
Le programme d’installation a détecté une version SQL Server Management Studio sur cet ordinateur. SQL
Server Management Studio et SQL Server Management Studio Express ne peuvent pas être installés sur le
même ordinateur. Pour installer SQL Server Management Studio Express, vous devez d’abord désinstaller
SQL Server Management Studio, puis réexécuter SQL Server Management Studio configuration d’Express
Edition. Pour plus d’informations, voir l’article 909953 la Base de connaissances Microsoft.
NOTE
À partir SQL Server 2016, SQL Server management studio est proposé en tant que téléchargement distinct et peut donc
être installé en tant qu’application autonome. En tant que tel, vous pouvez utiliser n’importe quel processus documenté
dans Désinstallerou supprimer des applications et des programmes dans Windows 10 . Les étapes ci-dessous s’appliquent
uniquement à SQL Server 2014 et aux versions antérieures, où SSMS a peut-être été installé en tant que fonctionnalité
partagée lors de l’installation.
Windows 10 / 2016 +
Pour désinstaller SQL Server Management Studio de Windows 10, Windows Server 2016, Windows Server
2019 et les autres, suivez les étapes suivantes :
1. Pour commencer le processus de suppression, accédez à Paramètres à partir du menu Démarrer, puis
choisissez Applications.
2. Recherchez sql dans la zone de recherche.
3. SQL Server (Version) (Bit). Par exemple, SQL Server 2012 (64 bits).
4. SélectionnezDésinstaller/Modifier.
5. SélectionnezSupprimer dans la fenêtre SQL Server boîte de dialogue pour lancer l’Assistant SQL
Server’installation.
6. Dans**** la page Sélectionner une instance, utilisez la zone de drop-down pour spécifier une instance de
SQL Server à supprimer, ou spécifiez l’option permettant de supprimer uniquement les fonctionnalités
partagées SQL Server et les outils de gestion. Pour continuer, sélectionnezSuivant.
7. Dans la pageSélectionner des fonctionnalités, spécifiez les fonctionnalités à supprimer pour
sélectionner Outils de gestion – De base à partir de l’instance spécifiée de SQL Server.
8. Dans la pagePrêt à supprimer, examinez la liste des composants et des fonctionnalités qui seront
désinstallés. Cliquezsur Supprimer pour commencer la désinstallation.
3. SélectionnezSupprimer dans la fenêtre SQL Server boîte de dialogue pour lancer l’Assistant SQL
Server’installation.
4. Dans la pageSélectionner une instance, utilisez la zone de drop-down pour spécifier une instance de [!
INCLUDEssNoVersion] à supprimer, ou spécifiez l’option de suppression uniquement du [!
IncluDEssNoVersion] fonctionnalités partagées et outils de gestion. Pour continuer, sélectionnezSuivant.
5. Dans la pageSélectionner des fonctionnalités, spécifiez les fonctionnalités à supprimer de l’instance
spécifiée de [! INCLUDEssNoVersion].
6. Dans la pagePrêt à supprimer, examinez la liste des composants et des fonctionnalités qui seront
désinstallés. Cliquezsur Supprimer pour commencer la désinstallation.
7. Actualisez la fenêtre Programmes et fonctionnalités pour vérifier que l’instance SQL Server a bien été
supprimée et déterminez les composants de SQL Server existants. Supprimez également ces
composants de cette fenêtre, si vous le souhaitez.
Références
Télécharger SQL Server Management Studio (SSMS)
Vous pouvez recevoir un message d’erreur lorsque
vous essayez d’utiliser SQL Server Management
Studio pour mettre à jour une ligne d’un tableau
dans SQL Server
13/08/2021 • 2 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque vous essayez de mettre à jour une table à
l’aide de SQL Server Management Studio dans SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 925719
Symptômes
Prenons le cas de figure suivant. Vous essayez d’utiliser SQL Server Management Studio pour mettre à jour un
tableau dans Microsoft SQL Server. Dans l’Explorateur d’objets, cliquez avec le bouton droit sur le nom de la
table, puis cliquez sur Ouvrir la table. Vous mettez à jour une ligne du tableau. Dans ce scénario, vous pouvez
recevoir l’un des messages d’erreur suivants de manière inattendue dans la boîte de Microsoft SQL Ser ver
Management Studio suivante :
Message d’erreur 1
Les données ont changé depuis la dernière récupération du volet Résultats. Voulez-vous enregistrer
vos modifications maintenant ?
(Erreur de contrôle d’curité optimiste)
Cliquez sur Oui pour valider vos modifications dans la base de données.
Cliquez sur Non pour ignorer votre modification et récupérer les données actuelles de cette ligne.
Cliquez sur Annuler pour continuer la modification.
NOTE
Si vous cliquez sur Oui dans cette boîte de dialogue de message d’erreur, la ligne est correctement mise à jour.
Message d’erreur 2
NOTE
This issue also occurs when you try to use Table Designer in Microsoft Visual Studio to update a table that is in a SQL
Server database.
Cause
Ce problème se produit car SQL Server Management Studio génère une instruction SQL incorrecte pour
l’opération de mise à jour. Lorsque le tableau ne contient pas de clé primaire, les valeurs de toutes les colonnes
sont utilisées pour identifier la ligne à mettre à jour. Lorsque SQL Server Management Studio cette instruction,
l’opérateur de comparaison incorrect (=) est utilisé pour comparer les colonnes des types de données texte,
ntext ou image.
Solution de contournement
Pour contourner ce problème, créez une fenêtre de requête dans SQL Server Management Studio. Ensuite,
exécutez une instruction SQL UPDATE pour mettre à jour la ligne dans le tableau.
NOTE
Si vous recevez le premier message d’erreur mentionné dans la section Symptômes, vous pouvez cliquer sur Oui pour
mettre à jour la ligne.
Références
UPDATE (Transact-SQL)
Message d’erreur lorsque vous ouvrez Gestionnaire
de configuration SQL Server dans SQL Server :
impossible de se connecter au fournisseur WMI.
Vous n’avez pas d’autorisation ou le serveur est
inaccessible
13/08/2021 • 2 minutes to read
Cet article vous aide à contourner le problème qui se produit lorsque vous ouvrez Gestionnaire de configuration
SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 956013
Symptômes
Vous pouvez recevoir l’un des messages d’erreur suivants lorsque vous ouvrez Gestionnaire de configuration
SQL Server :
Impossible de se connecter au fournisseur WMI. Vous n’avez pas d’autorisation ou le serveur est
inaccessible. Notez que vous ne pouvez gérer SQL Server serveurs 2005 et ultérieurs qu’avec Gestionnaire
de configuration SQL Server.
Espace de noms non valide [0x8004100e]
ou
Impossible de se connecter au fournisseur WMI. Vous n’avez pas d’autorisation ou le serveur est
inaccessible. Notez que vous pouvez uniquement gérer SQL Server serveurs 2005 et ultérieurs avec
Gestionnaire de configuration SQL Server.
Classe non valide [0x80041010]
Cause
Gestionnaire de configuration SQL Server utiliser Window Management Instrumentation (WMI) pour afficher et
modifier certains paramètres du serveur. Lors de la connexion aux serveurs, Gestionnaire de configuration SQL
Server utilise WMI pour obtenir l’état des services SQL Server (MSSQLSERVER) et SQL Server Agent. Ce
problème se produit car le fournisseur WMI est supprimé lorsque vous désinstallez une instance de SQL Server.
Ce fichier se trouve dans le %programfiles(x86)% dossier.
Solution de contournement
Vous pouvez utiliser l’une des options suivantes pour résoudre le problème.
Option 1 : Recompiler SQL fournisseur WMI à l’aide du compilateur MOF (Managed Object Format)
Pour cela, procédez comme suit :
1. Le fichier MOF (sqlmgmproviderxpsp2up.mof) de votre instance SQL se trouve dans le dossier «
%programfiles(x86)%\Microsoft SQL Server\nnn\Shared ». Déterminez l’emplacement du fichier
mofcomp pour votre version à l’aide du tableau suivant comme référence :
VERSIO N NN
2. Ouvrez une invite de commandes avec élévation de niveau élevé et modifiez le répertoire en
emplacement de dossier à l’étape 1.
3. Tapez ensuite la commande suivante, puis appuyez sur Entrée :
mofcomp "sqlmgmproviderxpsp2up.mof"
NOTE
Pour que cette commande réussisse, le fichier Sqlmgmproviderxpsp2up.mof doit être présent dans le
%programfiles(x86)%\Microsoft SQL Server\nnn\Shared dossier.
4. Après avoir exécuté l’outil mofcomp, redémarrez le service WMI pour que les modifications prennent
effet. Le nom du service est Windows Instrumentation de gestion.
Option 2 : réparer votre installation SQL Server’installation. Pour plus d’informations, examinez La réparation
d’une installation SQL Server échouée
NOTE
Cette option est requise uniquement si le sqlmgmproviderxpsp2up.mof est absent de l’emplacement.
%programfiles(x86)%\Microsoft SQL Server\nnn\Shared
Voir aussi
Gestionnaire de configuration SQL Server
Configurer WMI pour afficher l’état du serveur dans SQL Server outils
La base de données MSDB s’accroît SQL Server
avec des classements de caractères supplémentaires
13/08/2021 • 8 minutes to read
Symptôme
Prenons l’exemple du scénario suivant :
Vous avez installé une instance avec un classement à l’aide de caractères supplémentaires pour la base de
données système dans SQL Server.
Vous avez configuré Management Data Warehouse (MDW) et la collecte de données.
Dans ce scénario, lorsque les packages SQL Server Integration Services (SSIS) créés par la collecte de données
s’exécutent, vous constatez que la base de données MSDB augmente de manière inattendue.
NOTE
Ce type de nom de classement se termine par _SC, par exemple, Latin1_General_100_CI_AS_SC .
Toutes les 10 secondes, les 11 messages d’avertissement suivants sont insérés dans la msdb.dbo.sysssislog
table système :
Par conséquent, le msdb.dbo.sysssislog tableau s’agrandit d’une page (8 Ko) toutes les 10 secondes. L’impact
sur l’espace disque est :
2,8 Mo par heure (8 Ko x 6 x 60)
67,5 Mo par jour (8 Ko x 6 x 60 x 24)
1,97 Go par mois (8 Ko x 6 x 60 x 24 x 30)
Cause
Les classements utilisant des caractères supplémentaires modifient la taille de certaines colonnes du dynamic
management view (DMV). L’outil Collecteur de données capture le contenu de certains DMV, par exemple, et
ajoute les résultats dans la base de données MDW à l’aide de sys.dm_exec_requests packages SSIS. Dans ces
packages SSIS, les tailles de colonne sont prédéfinie en fonction de la taille des colonnes pour les classements
sans utiliser de caractères supplémentaires. Lorsque les packages s’exécutent, un message d’avertissement est
renvoyé pour chaque colonne dont la taille est plus grande que la taille prédéfinit et est ajouté au
msdb.dbo.sysssislog tableau.
NOTE
Ces messages d’avertissement n’affectent pas l’insertion des données réelles de la DMV dans la table de collecte de
données.
Plus d’informations
Le processus de collecte de données collecte les métadonnées du premier jeu de résultats lors de
sp_syscollector_snapshot_dm_exec_requests l’appel. Le script sql suivant est un exemple :
Cet appel renvoie des résultats différents selon le classement, à l’aide de caractères supplémentaires ou non :
Instance avec un classement qui n’utilise pas de caractères supplémentaires :
NOTE
Pour plus de clarté, seules les lignes et colonnes affectées sont affichées.
P EUT AVO IR N O M DU
O RDIN A L DE L A VA L EUR SY ST ÈM E SY ST ÈM E LO N GUEUR C L A SSEM EN
C O LO N N E NAME N UL L T Y P E_ID T Y P E_N A M E M A XIM A L E T
...
P EUT AVO IR N O M DU
O RDIN A L DE L A VA L EUR SY ST ÈM E SY ST ÈM E LO N GUEUR C L A SSEM EN
C O LO N N E NAME N UL L T Y P E_ID T Y P E_N A M E M A XIM A L E T
...
Les deux instances montrent la différence sur certaines colonnes. Par exemple, la colonne a un nom de type
système wait_type de nvarchar(45) avec une longueur maximale de 90 sur un classement standard.
Toutefois, les classements utilisant des caractères supplémentaires ont un nom de type système nvarchar(60)
d’une longueur maximale de 120. La différence de taille entraîne les messages d’avertissement enregistrés par
le package SSIS.
Solution de contournement
Vous pouvez utiliser l'une des solutions de contournement suivantes :
IMPORTANT
Si vous utilisez la solution de contournement 1 et la solution de contournement 2, les connexions, les travaux ou les
packages existants seront perdus. Ces solutions de contournement ne doivent être utilisées que dans un environnement
hors production.
Solution de contournement 1
Désinstallez et réinstallez l’instance SQL Server avec un classement sans utiliser de caractères supplémentaires.
Solution de contournement 2
Reconstruire l’instance des bases de données système avec un classement sans utiliser de caractères
supplémentaires.
Solution de contournement 3
Créez un travail pour supprimer les avertissements inutiles de la msdb.dbo.sysssislog table. Dans l’exemple
suivant, le travail est programmé pour s’exécuter toutes les heures. Vous pouvez définir une planification
différente selon vos besoins en modifiant la @freq_subday_interval valeur.
Par exemple, vous pouvez modifier la valeur @freq_subday_interval de 1 à 2 pour exécuter le travail toutes les
deux heures.
USE [msdb]
GO
/****** Object: Job [Data Collection Warnings Cleanup] Script Date: <Datetime> ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [[Uncategorized (Local)]] Script Date: <Datetime> ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND
category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
if upper(right(@system_collation,2)) = ''SC''
begin -- we have a supplementary characters collation we need to remove unnecessary warnings from
msdb.dbo.sysssislog table
delete
from msdb.dbo.sysssislog
where event = ''OnWarning''
and source like ''Set%Master_Package_Collection''
and message like ''Truncation may occur%''
delete
from msdb.dbo.sysssislog
where event = ''OnWarning''
and source like ''Set%Master_Package_Collection''
and message like ''The external columns for ODS - Get snapshot of%''
Set @CountWarn2 = @@ROWCOUNT
print @InfoMsg
end
',
@database_name=N'master',
@flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'Run every Hour',
@enabled=1,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=8,
@freq_subday_interval=1,
@freq_relative_interval=0,
@freq_recurrence_factor=0,
@active_start_date=20201224,
@active_end_date=99991231,
@active_start_time=0,
@active_end_time=235959,
@schedule_uid=N'684bccd2-7424-4011-85d6-1d81791c53fe'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback:
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:
GO
Un ensemble de collections de collecteurs de
données peut ne pas être chargé si un fichier cache
est endommagé
13/08/2021 • 3 minutes to read
Cet article indique qu’en cas de corruption d’un fichier cache, il se peut que le jeu de collections de collecteurs de
données ne soit pas chargé.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2019126
Symptômes
Vous configurez un ensemble Microsoft SQL Server collection de collecteurs de données. Ensuite, vous
remarquerez que les nouvelles données ne sont pas téléchargées vers la base de données d’entrepôt de
données de gestion. Lorsque vous affichez les journaux des ensembles decollections, vous recevez l’un des
messages d’erreur suivants :
Message d’erreur 1
Le fichier avait des informations de version et d’indicateurs mauvaises. Le fichier est endommagé ou
n’est pas un fichier de données brutes produit par SSIS.
le composant « Destination du fichier brut » (57) a échoué à la phase de pré-exécution et a renvoyé le
code d’erreur 0xC0202061
Message d’erreur 2
Métadonnées non appropriées rencontrées dans l’en-tête de fichier. Le fichier est endommagé ou
n’est pas un fichier de données brutes produit par SSIS.
le composant « Destination du fichier brut » (57) a échoué à la phase de pré-exécution et a renvoyé le
code d’erreur 0xC020205E
Message d’erreur 3
Fin de fichier inattendue rencontrée lors de la lecture d’octets X à partir du fichier « Y ». Le fichier a
pris fin prématurément en raison d’un format de fichier non valide.
le composant « Destination du fichier brut » (57) a échoué à la phase de pré-exécution et a renvoyé le
code d’erreur 0xC0202069
Message d’erreur 4
L’adaptateur a rencontré un type de données X non reconnu. Cela peut être dû à un fichier d’entrée
endommagé (source) ou à un type de tampon non valide (destination).
le composant « Destination du fichier brut » (57) a échoué à la phase de pré-exécution et a renvoyé le
code d’erreur 0xC020206B
Message d’erreur 5
Chaîne trop longue. L’adaptateur lit une chaîne qui a été X octets longs et attendu une chaîne ne plus
plus que les octets Y, au décalage Z. Cela peut indiquer un fichier d’entrée endommagé. Le fichier
affiche une longueur de chaîne trop grande pour la colonne de mémoire tampon.
le composant « Destination du fichier brut » (57) a échoué à la phase de pré-exécution et a renvoyé le
code d’erreur 0xC020206C
Cause
Ce problème se produit lorsqu’un ou plusieurs fichiers cache du collecteur de données sont endommagés.
L’altération peut être causée pour l’une des raisons suivantes :
Le collecteur de données a rencontré une exception.
Le disque est à court d’espace libre pendant que le collecteur de données écrit dans un fichier cache.
Un microprogramme ou un problème de pilote se produit.
Résolution
Recherchez le fichier cache endommagé et supprimez-le. Pour cela, procédez comme suit :
1. Démarrez SQL Server Management Studio, puis connectez-vous à l’instance de SQL Server où l’erreur se
produit.
2. Développez le dossier Gestion, cliquez avec le bouton droit sur Collecte de données, puis sélectionnez
Propriétés.
3. Si un répertoire est affiché pour le répertoire de cache, il s’agit de l’emplacement des fichiers de cache du
collecteur de données. Allez à l’étape 5.
4. Si un répertoire n’est pas affiché pour le répertoire de cache, le répertoire de cache par défaut est le
répertoire temporaire local du compte qui exécute le jeu de collections. Ce compte peut être le compte SQL
Server service agent de sécurité. Par exemple, sur Windows Server 2008, si le jeu de collections a été exécuté
par un compte nommé sqlacct, le répertoire temporaire de ce compte se trouve dans un chemin d’accès
semblable à ce qui suit : C:\Users\sqlacct\AppData\Local\Temp
5. Recherchez tous les fichiers qui ont un *. Cache file name extension, and move the files to a different
directory. Si l’ensemble de collections est celui de la collection Utility Information, n’essayez pas d’exécuter le
jeu de collections directement. Patientez 30 minutes pour voir si le problème est résolu. Si l’ensemble de
collections est un autre ensemble de collections, redémarrez le jeu de collections.
Plus d’informations
Collecte de données
Entrepôt de données de gestion
SQL Server Problème PowerShell lorsque
RemoteSigned n’est pas définie dans le contrôleur
de domaine pour SQL Server
12/08/2021 • 3 minutes to read
Cet article vous aide à résoudre le problème qui se produit lorsque la stratégie d’ordinateur du contrôleur de
domaine n’est pas définie sur RemoteSigned par GPO pour SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 2995870
Symptômes
Lorsque vous ouvrez SQL Server console PowerShell de Microsoft SQL Server 2012 ou Microsoft SQL Server
2014 et que la stratégie d’ordinateur du contrôleur de domaine n’est pas définie sur RemoteSigned by Group
Policy Object (GPO), vous pouvez recevoir le message d’erreur suivant :
set-executionpolicy : Windows PowerShell votre stratégie d’exécution a été correctement mise à jour, mais le
paramètre est retenté par une stratégie définie à une étendue plus spécifique. En raison du remplacement,
votre shell conservera sa stratégie d’exécution effective actuelle de Non restreint. Tapez Get-ExecutionPolicy -
List pour afficher vos paramètres de stratégie d’exécution.
Pour plus d'informations, consultez
« Get-Help Set-ExecutionPolicy ».
À line:1 char:1
+ set-executionpolicy RemoteSigned -scope process -Force
En outre, le travail échoue à la troisième étape si le contrôleur de domaine n’est pas définie sur RemoteSigned
par GPO et que vous pouvez recevoir le syspolicy_purge_history message d’erreur suivant :
Exécuté en tant qu’utilisateur : AJ\devARsqlagt. Une étape de travail a reçu une erreur à la ligne 1 dans un
script PowerShell. La ligne correspondante est « set-executionpolicy RemoteSigned -scope process -Force ».
Corrigez le script et reprogrammez le travail. Les informations d’erreur renvoyées par PowerShell sont : «
Erreur de sécurité. '. Code de sortie du processus -1. L’étape a échoué.
Cause
Ce problème se produit parce que la stratégie de l’ordinateur n’est pas définie sur RemoteSigned par GPO et
qu’elle est poussée vers les serveurs membres. Par exemple, si la stratégie d’exécution pour la configuration du
contrôleur de domaine est la suivante :
Scope - ExecutionPolicy
--------------------------------------------------------------
MachinePolicy - Unrestricted
UserPolicy - Undefined
Process - RemoteSigned
CurrentUser - Undefined
LocalMachine - RemoteSigned
Solution de contournement
Par mesure de sécurité, SQL Server 2012 démarre SQL PowerShell dans la stratégie RemoteSigned. Cela
entraîne l’échec du travail et le problème précédent se produit.
Unrestricted n’est absolument pas recommandé du point de vue de la sécurité, car cela signifie aucune
restriction. C’est la raison pour laquelle lorsque vous démarrez à partir SQL 2012, les scripts PowerShell
s’exécutent correctement lorsque MachinePolicy est définie comme RemoteSigned in Domain Controller.
Pour contourner ce problème, appliquez l'une des méthodes suivantes :
Ne définissez pas la stratégie ordinateur du contrôleur de domaine par GPO. Si elle n’est pas définie, cela
signifie que la stratégie de niveau suivant (par exemple, UserPolicy, puis Process, CurrentUser et enfin
LocalMachine) sera prioritaire.
Créez une unité d’organisation dans Utilisateurs et ordinateurs Active Directory et lier cette unité
d’organisation à votre stratégie de groupe. Activez-la ensuite pour la stratégie RemoteSigned. Pour cela,
procédez comme suit :
1. Go to Active Director y Users and Computers .
2. Cliquez avec le bouton droit sur votre nouvelle unité d’organisation de domaine pour créer une
unité -> -> d’organisation.
3. Tapez gpmc.msc dans Exécuter, puis cliquez avec le bouton droit sur Nouvel objet de stratégie de
groupe pour créer un objet de stratégie -> de groupe.
4. Cliquez avec le bouton droit sur la modification de l’GPO -> nouvellement créé. Elle ouvre une
nouvelle fenêtre.
5. Go to Computer Configuration -> Policies -> Administrative Templates -> Windows
components -> Windows PowerShell -> double-click Turn on Script Execution .
6. Définissez la stratégie d’exécution pour autoriser les scripts locaux et les scripts signés à distance.
7. Dans la zone Plan de numérotation (contexte téléphonique) , cliquez sur Parcourir pour
localiser le plan de numérotation de l’utilisateur.
8. Go to Active Director y Users and Computers, and then click Computers . Vous trouverez une
liste d’ordinateurs pour le domaine. Cliquez avec le bouton droit sur le ou les ordinateurs que vous
souhaitez déplacer dans l’unité d’organisation nouvellement créée. De cette manière, vous pouvez
déplacer un seul ordinateur ou un groupe d’ordinateurs vers une unité d’organisation.
9. Go to Group Policy Management , right-click newly created Organizational Unit , click Link an
Existing GPO , select the newly created GPO , and then click OK .
10. Mettez à jour la stratégie sur le contrôleur de domaine et sur l’ordinateur client en exécutant cette
commande dans PowerShell.
gpupdate /force
11. Vérifiez que la stratégie de l’ordinateur pour l’unité d’organisation et le composant client doit être
RemoteSigned.
Références
À propos des stratégies d’exécution
Description des utilitaires de langage de marques
de relecture pour SQL Server
13/08/2021 • 5 minutes to read
Cet article décrit un groupe d’utilitaires qui aide les professionnels à résoudre les SQL Server.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 944837
Introduction
L SQL Server de support technique utilise plusieurs utilitaires écrits en interne pour faciliter le travail lié à un cas
de support client classique. Cet article décrit une suite d’utilitaires appelée utilitaires RML (Replay Markup
Language) pour SQL Server. Les développeurs de bases de données et les administrateurs système peuvent
utiliser les utilitaires RML pour SQL Server.
Plus d’informations
Vous pouvez utiliser les utilitaires RML pour SQL Server pour effectuer les tâches suivantes :
Vous pouvez déterminer l’application, la base de données, SQL Server connexion ou la requête qui utilise le
plus de ressources.
Vous pouvez déterminer si le plan d’exécution d’un lot est modifié lorsque vous capturez le suivi du lot. En
outre, vous pouvez utiliser les utilitaires RML SQL Server pour déterminer comment SQL Server exécute
chacun de ces plans d’exécution.
Vous pouvez déterminer les requêtes qui s’exécutent plus lentement qu’auparavant.
Après avoir capturé un suivi pour une instance de SQL Server, vous pouvez utiliser les utilitaires RML pour SQL
Server pour relire le fichier de suivi par rapport à une autre instance de SQL Server. Si vous capturez également
le suivi pendant la relecture, vous pouvez utiliser les utilitaires RML pour SQL Server pour comparer le nouveau
fichier de suivi au fichier de suivi d’origine. Vous pouvez utiliser cette technique pour tester le comportement
SQL Server après avoir appliqué les modifications. Par exemple, vous pouvez utiliser cette technique pour tester
le comportement SQL Server après avoir procédé comme suit :
Vous installez un SQL Server Service Pack.
Vous installez un correctif SQL Server logiciel.
Vous mettez à jour une procédure stockée ou une fonction.
Vous mettez à jour un index ou créez un index.
8.10.0010 Version Web initiale qui prend en charge SQL Server 7.0 et
SQL Server 2000
Cette version actuelle des utilitaires RML pour SQL Server les versions antérieures. Vous devez désinstaller toute
version antérieure des utilitaires RML pour SQL Server avant d’installer la version actuelle. La version actuelle
des utilitaires RML pour SQL Server prise en charge de SQL Server 2000, SQL Server 2005, SQL Server 2008,
SQL Server 2008 R2, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016, SQL Server
2017, SQL Server 2019. En outre, la version actuelle des utilitaires RML pour SQL Server contient des mises à
jour logicielles importantes, des fonctionnalités améliorées (fichiers .trc et .xel de processus) et des rapports,
ainsi que des améliorations en matière de performances et d’évolutivité.
NOTE
Microsoft fournit les utilitaires RML pour SQL Server en l’temps. Les services de support technique Microsoft (CSS) ne
fournissent pas de support ni de mises à jour pour les utilitaires RML pour SQL Server. Si vous avez une suggestion ou si
vous souhaitez signaler un bogue, vous pouvez utiliser l’adresse de messagerie dans la rubrique Problèmes et assistance
du fichier d’aide (RML Help.pdf). Le fichier d’aide est inclus dans les utilitaires RML pour SQL Server.
Avantages des utilitaires RML pour SQL Server
Les utilitaires RML pour SQL Server sont utiles si vous souhaitez simuler le test d’application lorsqu’il est difficile
ou impossible de le tester à l’aide de l’application réelle. Par exemple, dans un environnement de test, il peut être
difficile de générer la même charge utilisateur que celle qui existe dans l’environnement de production. Vous
pouvez utiliser les utilitaires RML pour SQL Server pour relire une charge de travail de production dans un
environnement de test et évaluer l’impact sur les performances des modifications, telles qu’une mise à niveau
vers SQL Server 2008 ou l’application d’un Service Pack SQL Server. En outre, vous pouvez utiliser les utilitaires
RML pour SQL Server analyser et comparer différentes charges de travail de relecture. Ce type d’analyse de
régression serait sinon un processus difficile à effectuer manuellement.
Le fichier d’aide contient une rubrique de démarrage rapide. Cette rubrique inclut un bref exercice qui vous
familiarisera avec chaque utilitaire RML. Pour ouvrir le fichier d’aide, cliquez sur Démarrer, pointez sur Tous les
programmes, pointez sur Utilitaires RML pour SQL Server, pointez sur Aide, puis cliquez sur Aide RML .
Cet article vous aide à résoudre le problème qui se produit lorsque vous utilisez Gestionnaire de configuration
SQL Server pour redémarrer le service d’agent SQL Server après avoir changé le mot de passe du compte de
service.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 955494
Symptômes
Lorsque vous utilisez Gestionnaire de configuration SQL Server pour redémarrer le service SQL Server Agent
de Microsoft SQL Server, vous recevez le message d’erreur suivant :
La demande a échoué ou le service n’a pas répondu en temps voulu. Pour plus d’informations, consultez le
journal des événements ou d’autres journaux d’erreurs applicables.
Lorsque ce problème se produit, l’utilisation du processeur est élevée et vous ne pouvez pas ignorer le message
d’erreur en cliquant sur OK . Vous de devez peut-être utiliser le Gestionnaire des tâches pour mettre fin
Gestionnaire de configuration SQL Server processus.
NOTE
Vous pouvez également recevoir ce message d’erreur dans d’autres circonstances.
Solution de contournement
Pour contourner ce problème, démarrez le service SQL Server Agent à l’aide de la console de gestion des
services (Services.msc).
Cet article vous aide à résoudre le problème qui se produit lorsque vous exécutez l’utilitaire Sqlmaint après la
mise à niveau de SQL Server 2000 SP4 vers SQL Server 2008 ou une version ultérieure.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 955626
Symptômes
Vous avez réussi Microsoft SQL Server 2000 Service Pack 4 (SP4) vers SQL Server 2008 ou 2008 R2. Toutefois,
lorsque vous essayez d’exécuter l’utilitaire Sqlmaint (Sqlmaint.exe), vous recevez le message d’erreur suivant :
L’objet « Application » SQLDMO n’a pas réussi à s’initialiser (erreur spécifique : l’un des fichiers de
bibliothèque nécessaires pour exécuter cette application est inamorcable.)
NOTE
This issue also occurs in SQL Server 2012
Cause
Ce problème peut se produire si la version SQL Server Distributed Management Objects (SQL-DMO) installée
ne peut pas se connecter à une instance de SQL Server 2008 ou SQL Server 2008 R2.
Dans SQL Server 2012 ou une version ultérieure, SQL DMO est l’une des fonctionnalités abandonnées et les
clients sont invités à utiliser SQL Server Management Objects (SMO). Pour plus d’informations, voir
Discontinued Moteur de base de données Functionality in SQL Server 2012.
Programmabilité SQL Server Distributed Management SQL Server Objets de gestion (SMO)
Objects (SQL-DMO)
Résolution
Pour résoudre ce problème, utilisez l’une des méthodes suivantes.
NOTE
Si vous n’avez plus de plans de maintenance dans l’ancien format, cette méthode n’est pas requise.
Pour exécuter l’SQL Server d’installation de compatibilité ascendante, suivez les étapes suivantes :
1. Recherchez le dossier source d’installation suivant pour SQL Server 2008 : drive :\Servers\Setup .
NOTE
L’espace réservé au lecteur est la lettre du lecteur de DVD.
2. Double-cliquez sur le fichier SQLSer ver2005_BC.ms i pour exécuter l’Assistant Installation SQL
Server compatibilité ascendante, puis cliquez sur Suivant.
3. Cliquez sur Modifier, puis sur Suivant.
4. Assurez-vous que la fonctionnalité SQL Objets de gestion distribuée (SQL-DMO) est définie pour être
installée sur le disque dur local, puis cliquez sur Suivant.
5. Cliquez sur Installer .
Références
Utilitaire sqlmaint
SQL Server Compatibilité ascendante
SQL Server Compatibilité ascendante
S’applique à
SQL Server Développeur 2008
SQL Server 2008 Enterprise
SQL Server 2008 Express
SQL Server 2008 Express avec services avancés
SQL Server 2008 Standard
SQL Server Web 2008
SQL Server 2008 Workgroup
SQL Server 2008 R2 Datacenter
SQL Server 2008 R2 Developer
SQL Server 2008 R2 Enterprise
SQL Server 2008 R2 Express
SQL Server 2008 R2 Express avec services avancés
SQL Server 2008 R2 Standard
SQL Server 2008 R2 Édition Standard for Small Business
SQL Server 2008 R2 Web
SQL Server 2008 R2 Workgroup
Utilisez l’utilitaire Sqldumper.exe pour générer un
fichier de vidage dans SQL Server
12/08/2021 • 31 minutes to read
Cet article fournit des instructions générales pour Sqldumper.exe utilitaire inclus dans SQL Server. Vous pouvez
utiliser cet utilitaire pour générer différents types de fichiers de vidage.
Version du produit d’origine : SQL Server 2017, SQL Server 2016, SQL Server 2014, SQL Server 2012, SQL
Server 2008, SQL Server 2005
Numéro de la ko d’origine : 917825
Résumé
LSqldumper.exe'utilitaire est inclus dans Microsoft SQL Server. Cet article explique comment utiliser l’utilitaire
Sqldumper.exe pour générer un fichier de vidage pour le rapport d’erreurs Watson ou pour les tâches de
débogage.
NOTE
Outre l’utilitaire Sqldumper.exe, les méthodes suivantes sont également disponibles :
Vous pouvez utiliser la commande STACKDUMP DBCC pour générer un fichier de vidage dans SQL Server. Pour plus
d’informations, voir Comment utiliser DBCC STACKDUMP.
Vous pouvez également utiliser un script Powershell pour automatiser la ligne de commande SQLDumper.
WARNING
La génération de fichiers de vidage de processus peut affecter la disponibilité du service (ici SQL Server) et déclencher le
failover des ressources dans les contextes Always On (instance de cluster de failover et groupe de disponibilité). Les
options utilisées pour générer les fichiers de vidage feront une grande différence. Veillez à lire les sections Impact de la
génération des vidages et des types de vidage.
Lorsque vous capturez un fichier de vidage de processus SQL Server (en particulier un fichier de vidage filtré ou
un fichier de vidage complet) sur un SQL Server en cluster ou un SQL Server hébergeant une instance de
groupe de disponibilité AlwaysOn (AG), le SQL Server en cluster ou ag peut faire échouer vers un autre nœud si
le fichier de vidage prend trop de temps. Pour éviter un éventuel changement, vous pouvez utiliser les
paramètres suivants avant de capturer le fichier de vidage, et vous pouvez revenir à la modification après avoir
pris un fichier de vidage :
Pour les SQL Server cluster, cliquez avec le bouton droit sur SQL Server ressource dans l’administrateur de
cluster, sélectionnez « En cas d’échec de la ressource, ne pas redémarrer » sous l’onglet Stratégies.
Pour ag ag, appliquez tous les paramètres suivants :
Augmentez le délai d’ouverture de session, par exemple, 120 secondes pour tous les réplicas. Dans
SQL Server Management Studio, cliquez avec le bouton droit sur le réplica à configurer, puis
sélectionnez Propriétés. Modifiez Session-Timeout champ (secondes) à 120 secondes. Pour plus
d’informations, voir Modifier la Session-Timeout période de disponibilité d’un réplica de disponibilité
(SQL Server).
Modifiez le failover automatique de tous les réplicas en un failover manuel. Dans SQL Server
Management Studio, cliquez avec le bouton droit sur le réplica, sélectionnez Propriétés, puis modifiez
le « failover automatique » de tous les réplicas pour le faire manuellement sous l’onglet Propriétés.
Pour plus d’informations, voir Change the Failover Mode of an Availability Replica (SQL Server).
Augmentez la période jusqu’à LeaseTimeout 60 000 ms (60 secondes) et changez-la à
HealthCheckTimeout 90 000 ms (90 secondes). Dans l’Administrateur de cluster, cliquez avec le bouton
droit sur la ressource AG, sélectionnez Propriétés, puis basculez vers l’onglet Propriétés pour modifier
les deux paramètres. Pour plus d’informations, voir Configure HealthCheckTimeout Property
Paramètres.
NOTE
SQLServerInstallDrive est un espace réservé au lecteur sur lequel vous avez installé SQL Server 2005.
Pour générer un fichier de vidage à l’aide Sqldumper.exe'utilitaire, suivez les étapes suivantes :
1. Ouvrez le dossier suivant :
SQLServerInstallDrive:\Program Files\Microsoft SQL Server\number\Shared
NOTE
Dans ce chemin d’accès de dossier, le numéro est un espace réservé pour l’un des dossiers suivants :
140 pour SQL Server 2017
130 pour SQL Server 2016
120 pour SQL Server 2014
110 pour SQL Server 2012
100 pour SQL Server 2008
90 pour SQL Server 2005
NOTE
Dans ce chemin d’accès de dossier, le même espace réservé change avec la version SQL Server comme décrit
number précédemment.
5. Pour générer un type spécifique de fichier de vidage, tapez la commande correspondante à l’invite de
commandes, puis appuyez sur Entrée :
Fichier de vidage complet
Sqldumper.exe ProcessID 0 0x01100
Fichier de mini-vidage
NOTE
ProcessID est un espace réservé pour l’identificateur de processus de l’application Windows pour laquelle vous
souhaitez générer un fichier de vidage.
NOTE
MdumpPath est un espace réservé pour le répertoire dans lequel vous souhaitez que l’utilitaire Sqldumper.exe
écrive le fichier de vidage. Par défaut, le fichier est écrit dans le dossier actuel.
Si vous spécifiez un fichier de vidage complet ou un fichier de vidage filtré à générer, l’utilitaire Sqldumper.exe
peut prendre plusieurs minutes pour générer le fichier de vidage. L’heure dépend des variables suivantes :
Quantité de mémoire que l’utilitaire Sqldumper.exe utilise actuellement
Vitesse du lecteur sur lequel l’utilitaire écrit le fichier de vidage
Pendant ce temps, l’utilitaire Sqldumper.exe ne traitera pas les commandes. Vous remarquerez que le serveur a
cessé de répondre. En outre, un échec de cluster peut se produire.
Pour exécuter l’utilitaire Sqldumper.exe, vous devez vous connecter à Windows à l’aide de l’une des méthodes
suivantes :
Utilisez un compte membre du groupe de l’administrateur sur l’ordinateur.
Utilisez le même compte d’utilisateur sous lequel le service SQL Server’exécution.
Pour que l’utilitaire Sqldumper.exe fonctionne correctement via le Bureau à distance ou les services Terminal
Services, vous devez démarrer les services Bureau à distance ou Terminal Services en mode console. Par
exemple, pour démarrer Le Bureau à distance en mode console, sélectionnez Démarrer, Exécuter, tapez
mstsc /console, puis sélectionnez OK . Si le serveur cible s’Windows 2000, l’option /console est ignorée
silencieusement. Vous pouvez vous connecter au serveur via le Bureau à distance. Mais vous n’utiliserez pas la
session console.
Si vous remarquez qu’aucun fichier de vidage n’a été généré dans le dossier actuel après avoir exécuté l’utilitaire
Sqldumper.exe, examinez les informations générées par l’utilitaire sur la ligne de commande pour déterminer la
cause possible de l’échec. Ces informations sont également consignées dans le fichier Sqldumper_errorlog.log
dans le répertoire actuel. Voici deux messages d’erreur possibles et leurs causes :
Message 1
Valeur non valide pour l’ID de thread - <invalid parameter> Erreur de paramètre
Auparavant SQL Server imprimerait les informations de chaque session/thread lorsqu’un vidage manuel était
déclenché par l’utilisateur, par exemple.
Types de vidage
Les méthodes décrites peuvent générer trois types différents de vidages : les mini-vidages, les vidages complets
et les vidages filtrés.
Les mini-vidages avec mémoire référencé sont un instantané de tous les threads actifs du processus (« piles de
threads »), ainsi qu’un extrait limité de la mémoire référencé par les piles de threads et d’autres données de
processus/thread clés. Ils ont généralement une taille de quelques mégaoctets et sont rapides à générer (de
moins d’une seconde à quelques secondes). Les systèmes serveur encore plus volumineux (avec des centaines
de processeurs indirectement à l’avant-plan du nombre de threads dans le processus SQL Server) dépassent
rarement 20 à 30 Mo : la taille d’un mini-vidage n’augmente pas avec la taille du processus SQL Server. Ce type
de vidage est le type par défaut utilisé par les SQL Server lors de la génération automatique de vidages de
mémoire sur des exceptions, des problèmes de planification, des problèmes de verrou, etc.
NOTE
SQL Server, dans le cadre de son instrumentation intégrée, génère des « mini-vidages de diagnostic » automatisés dans
certaines situations spécifiques. Cette opération est donc considérée comme suffisamment sûre pour SQL Server peut la
déclencher automatiquement si nécessaire.
Les vidages complets sont une copie complète de l’espace de processus cible actif. Cela inclut donc tout l’état du
thread, tous les processus alloués à la mémoire et tous les modules chargés. Les vidages complets auront donc
une taille, qui est à peu près identique à SQL Server processus, qui à son tour peut être presque aussi grande
que la RAM système totale . Sur des serveurs de grande taille dédiés à SQL Server instance unique, cela peut
signifier un fichier, c’est-à-dire plusieurs centaines de gigaoctets ou plus. Inutile de le dire, un tel fichier prendra
beaucoup de temps à générer et provoquera donc un blocage prolongé. Les performances du disque pour la
cible de fichier du vidage seront un facteur majeur pour le temps de blocage. Ce type de vidage est rarement
utilisé pour SQL Server d’aujourd’hui**, comme la description du type suivant l’explique.
Vidages filtrés : à mesure que la taille de RAM des serveurs classiques exécutant SQL Server a augmenté de
façon constante, les vidages complets sont devenus de plus en plus difficile à gérer. Les vidages filtrés ont donc
été implémentés : il s’agit d’un sous-ensemble de vidages complets, où de grandes zones de structures de
mémoire se rapportant à SQL Server sont délibérément ignorées et non sérialisées sur disque, car elles
n’apportent aucune valeur ajoutée de dépannage (généralement, les pages de données/d’index, certains caches
internes tels que les pages de données Hekaton et la mémoire du pool de journaux). Cela entraîne un fichier, qui
est plus petit qu’un vidage complet tout en conservant presque toute son utilité, et cela a remplacé les vidages
complets comme option préférée dans une grande majorité de situations où les mini-vidages n’étaient pas
suffisants. La réduction de la taille par rapport au vidage complet peut varier considérablement, mais il s’agit
toujours d’un fichier assez grand, qui est souvent de 30 à 60 % de la taille de processus de SQL Server, il est
donc préférable de planifier une taille possible aussi grande qu’un vidage complet comme une pire option, ce
qui devrait laisser une bonne marge de sécurité. Un vidage filtré n’est peut-être pas nécessairement plus rapide
à générer qu’un vidage complet dans tous les cas : il s’agit de savoir si les gains liés au nombre d’E/S évités
dépassent le temps nécessaire à l’implémentation de la logique de filtre (donc la vitesse du disque et la vitesse
du processeur et de la RAM influenceront cette situation).
Vous pouvez utiliser l’utilitaire Sqldumper.exe pour générer un fichier de vidage à la demande pour n’importe
quelle application Microsoft Windows. Par exemple, vous pouvez générer un fichier de vidage pour le débogage
d’un problème d’application lorsqu’un ordinateur qui exécute Microsoft SQL Server ne répond pas aux
demandes des utilisateurs. Un fichier de vidage peut être un fichier de mini-vidage ou un fichier de vidage
complet. Un fichier de vidage filtré n’est applicable et significatif que dans le contexte SQL Server.
Le SQL Server appelle l’utilitaire Sqldumper.exe en interne pour générer un fichier de vidage lorsque le
processus subit des exceptions. SQL Server passe des indicateurs à l’utilitaire Sqldumper.exe'outil. Vous pouvez
utiliser des indicateurs de suivi pour modifier les indicateurs que SQL Server passe à l’utilitaire dans le contexte
d’une exception ou dans le contexte d’une assertion. Ces indicateurs de suivi sont dans la plage de 2540 à 2559.
Vous pouvez utiliser ces indicateurs de suivi pour générer certains types de fichiers de vidage. Par exemple :
Indicateur de suivi 2551 : produit un vidage de mémoire filtré.
Indicateur de suivi 2544 : produit un vidage mémoire complet.
Indicateur de suivi 8026 : SQL Server un déclencheur de vidage après avoir généré le vidage une seule fois.
Si au moins deux indicateurs de suivi sont actifs, l’option indiquant le vidage mémoire le plus important est
honorée. Par exemple, si les indicateurs de suivi 2551 et 2544 sont utilisés, SQL Server créera un vidage
mémoire complet.
Comment obtenir un identificateur de processus Windows’application Microsoft
Pour générer un fichier de vidage à l’aide de l’utilitaire Sqldumper.exe, vous devez avoir l’identificateur de
processus de l’application Windows pour laquelle vous souhaitez générer un fichier de vidage. Pour obtenir
l’identificateur de processus, suivez les étapes suivantes :
1. Appuyez sur Ctrl+ALT+DELETE, puis sélectionnez Gestionnaire des tâches.
2. Dans la boîte Windows de dialogue Gestionnaire des tâches, sélectionnez l’onglet Processus.
3. Dans le menu Affichage, sélectionnez Sélectionner des colonnes.
4. Dans la boîte de dialogue Sélectionner des colonnes, cochez la case PID (identificateur de processus),
puis sélectionnez OK.
5. Notez l’identificateur de processus Windows’application pour laquelle vous souhaitez générer un fichier de
vidage. Pour l’SQL Server application, notez l’identificateur de processus du Sqlservr.exe processus.
6. Fermez le Gestionnaire des tâches.
Vous pouvez également obtenir l’identificateur de processus de l’application SQL Server qui s’exécute sur votre
ordinateur à l’aide du SQL Server journal des erreurs. Par exemple, une partie du fichier journal SQL
Server’erreurs est semblable à ce qui suit :
Le nombre qui apparaît après l’ID de processus serveur est l’identificateur de processus pour Sqlservr.exe
processus.
Les failovers de cluster et l’utilitaire Sqldumper.exe de cluster
Dans les scénarios de SQL Server de cluster, la DLL de la ressource SQL Server peut désormais obtenir un fichier
de vidage avant que le failover ne se produise. Lorsque la DLL de ressource SQL Server détermine qu’une
ressource SQL Server a échoué, la DLL de ressource SQL Server utilise l’utilitaire Sqldumper.exe pour obtenir un
fichier de vidage du processus SQL Server. Pour vous assurer que l’utilitaire Sqldumper.exe génère correctement
le fichier de vidage, vous devez définir les trois propriétés suivantes comme conditions préalables :
SqlDumperDumpTimeOut A user-specified time-out. La DLL de ressource attend que le fichier de vidage soit
terminé avant que la DLL de ressource arrête SQL Server service.
SqlDumperDumpPath
Emplacement où l’utilitaire Sqldumper.exe génère le fichier de vidage.
SqlDumperDumpFlags
Indicateurs que l’utilitaire Sqldumper.exe utilise.
Si l’une des propriétés n’est pas définie, l’utilitaire Sqldumper.exe ne peut pas générer le fichier de vidage. Un
message d’avertissement est consigné à la fois dans le journal des événements et dans le journal du cluster
chaque fois que la ressource est mise en ligne.
Pour SQL Server 2012 et ultérieures
Vous pouvez utiliser la commande ALTER SERVER CONFIGURATION (T-SQL) pour modifier ces propriétés. Par
exemple :
Vous pouvez également utiliser des scripts PowerShell. Par exemple, pour une instance nommée SQL2017AG :
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpPath" -Value
"C:\temp"
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpFlags" -Value
296
Get-ClusterResource -Name "SQL Server (SQL2017AG)" | Set-ClusterParameter -Name "SqlDumperDumpTimeOut" -
Value 0
Pour valider que les paramètres ont été appliqués, vous pouvez exécuter cette commande PowerShell :
Instance nommée
Instance nommée
Instance nommée
La SqlDumperDumpPath propriété
cluster resource "SQL Server" /priv SqlDumperDumpPath= DirectoryPath
NOTE
DirectoryPath est un espace réservé pour le répertoire dans lequel le fichier de vidage sera généré et
doit être spécifié entre guillemets ( » « ).
Propriété SqlDumperDumpTimeOut
NOTE
Le délai est un espace réservé pour le délai d’délai en millisecondes (ms).
Le temps nécessaire à l’utilitaire pour générer un fichier de vidage d’un processus SQL Server de données
dépend de la configuration de l’ordinateur. Pour un ordinateur qui a beaucoup de mémoire, le temps peut être
important. Pour obtenir une estimation du temps nécessaire au processus, utilisez l’utilitaire Sqldumper.exe pour
générer manuellement un fichier de vidage. Les valeurs valides pour la propriété SqlDumperDumpTimeOut
sont de 10 000 ms à MAXDWORD. MAXDWORD représente la valeur la plus élevée dans la plage du type
de données DWORD (4294967295).
Pour vérifier que les paramètres ont été activés, vous pouvez exécuter la commande suivante :
Pour supprimer les propriétés Sqldumper.exe utilitaire de cluster pour le cluster, suivez les étapes suivantes :
1. Sélectionnez Démarrer, Sélectionnez Exécuter, tapez cmd, puis sélectionnez OK.
2. Pour une propriété spécifique, tapez la commande correspondante à l’invite de commandes, puis
appuyez sur Entrée :
La SqlDumperDumpFlags propriété
Instance par défaut
Instance nommée
La SqlDumperDumpPath propriété
Instance par défaut
Instance nommée
cluster resource "SQL Server (INSTANCE1)" /priv:SqlDumperDumpPath /usedefault
La SqlDumperDumpTimeOut propriété
Instance par défaut
Instance nommée
DBCC STACKDUMP
Pour obtenir des fonctionnalités étendues du DBCC STACKDUMP SQL Server 2019, consultez cette section.
Pour activer cette méthode afin de créer un vidage filtré, activez les indicateurs de suivi 2551 avec la commande
suivante :
NOTE
Une fois que vous avez le fichier de vidage, vous devez désactiver l’indicateur de suivi à l’aide de la commande suivante
pour éviter par inadvertance la mise à niveau de tous les minidumps auto-diagnostic SQL Server supplémentaires vers
des vidages plus volumineux :
Où TraceNumber se trouve l’indicateur de suivi que vous avez précédemment activé comme 2551 ou 2544.
Si vous ne savez pas quel indicateur de suivi reste actif, vous pouvez exécuter les opérations ci-après :
DBCC TRACESTATUS(-1)
Un jeu de résultats vide indique qu’aucun indicateur de suivi n’est actif. À l’inverse, si 2551 est toujours actif,
vous verrez :
T RA C EF L A G ÉTAT GLO B A L SESSIO N
2551 1 1 0
NOTE
Les traceflag éléments activés par DBCC TRACEON sont réinitialisés (supprimés) après un redémarrage du service.
Il TEXT_DUMP = LIMITED s’agit de l’option par défaut. Si vous souhaitez recevoir une sortie détaillée dans le fichier
SQLDump000X.txt que vous pouvez TEXT_DUMP = DETAILED utiliser.
Pour générer un vidage filtré avec une sortie limitée dans le fichier .txt, vous pouvez exécuter la commande
suivante :
Comment utiliser un script PowerShell pour générer un fichier de vidage avec SQLDumper
Enregistrez le code suivant en tant que fichier ps1, par exempleSQLDumpHelper.ps1:
Détails du code
$isInt = $false
$isIntValDcnt = $false
$isIntValDelay = $false
$SqlPidInt = 0
$NumFoler =""
$OneThruFour = ""
$SqlDumpTypeSelection = ""
$SSASDumpTypeSelection = ""
$SSISDumpTypeSelection = ""
$SQLNumfolder=0
$SQLDumperDir=""
$OutputFolder=""
$DumpType ="0x0120"
$ValidPid
$SharedFolderFound=$false
$YesNo =""
$ProductNumber=""
$ProductStr = ""
Write-Host ""
Write-Host "`**********************************************************************"
Write-Host "This script helps you generate one or more SQL Server memory dumps"
Write-Host "It presents you with choices on:`
-target SQL Server process (if more than one)
-type of memory dump
-count and time interval (if multiple memory dumps)
You can interrupt this script using CTRL+C"
Write-Host "***********************************************************************"
if (-not ([Security.Principal.WindowsPrincipal]
[Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]:
:Administrator))
{
Write-Warning "Administrator rights are required to generate a memory dump!`nPlease re-run this
script as an Administrator!"
#break
}
if (($ProductNumber -ne "1") -and ($ProductNumber -ne "2") -and ($ProductNumber -ne "3") -and
($ProductNumber -ne "4")-and ($ProductNumber -ne "5"))
{
Write-Host ""
Write-Host "Please enter a valid number from list above!"
Write-Host ""
Start-Sleep -Milliseconds 300
}
}
if ($SqlTaskList.Count -eq 0)
{
Write-Host "There are curerntly no running instances of $ProductStr. Exiting..." -ForegroundColor
Green
break
}
#if multiple SQL Server instances, get the user to input PID for desired SQL Server
if ($SqlTaskList.Count -gt 1)
{
Write-Host "More than one $ProductStr instance found."
try{
$SqlPidInt = [convert]::ToInt32($SqlPidStr)
$isInt = $true
}
catch [FormatException]
{
Write-Host "The value entered for PID '",$SqlPidStr,"' is not an integer"
}
Write-Host "Using PID=$SqlPidInt for generating a $ProductStr memory dump" -ForegroundColor Green
Write-Host ""
}
else #if only one SQL Server/SSAS on the box, go here
{
$SqlTaskList | Select-Object PID, "Image name", Services |Out-Host
$SqlPidInt = [convert]::ToInt32($SqlTaskList.PID)
Write-Host "Using PID=", $SqlPidInt, " for generating a $ProductStr memory dump" -ForegroundColor
Green
Write-Host ""
}
#dump type
Write-Host ""
switch ($SqlDumpTypeSelection)
{
"1" {$DumpType="0x0120";break}
"2" {$DumpType="0x0128";break}
"3" {$DumpType="0x8100";break}
"4" {$DumpType="0x01100";break}
default {"0x0120"; break}
}
elseif ($ProductNumber -eq "2") #SSAS dump
{
Write-Host ""
switch ($SSASDumpTypeSelection)
{
"1" {$DumpType="0x0";break}
"2" {$DumpType="0x34";break}
default {"0x0120"; break}
}
}
elseif ($ProductNumber -eq "3" -or $ProductNumber -eq "4" -or $ProductNumber -eq "5") #SSIS/SSRS/SQL
Agent dump
{
{
Write-Host ""
switch ($SSISDumpTypeSelection)
{
"1" {$DumpType="0x0";break}
"2" {$DumpType="0x34";break}
default {"0x0120"; break}
}
}
#strip the last character of the Output folder if it is a backslash "\". Else Sqldumper.exe will fail
if ($OutputFolder.Substring($OutputFolder.Length-1) -eq "\")
{
$OutputFolder = $OutputFolder.Substring(0, $OutputFolder.Length-1)
Write-Host "Stripped the last '\' from output folder name. Now folder name is $OutputFolder"
}
#do-we-want-multiple-dumps section
Write-Host ""
Write-Host "This utility can generate multiple memory dumps, at a certain interval"
Write-Host "Would you like to collect multiple memory dumps (2 or more)?" -ForegroundColor Yellow
try{
$DumpCountInt = [convert]::ToInt32($DumpCountStr)
catch [FormatException]
{
Write-Host "The value entered for dump count '",$DumpCountStr,"' is not an
integer" -ForegroundColor Red
}
}
[int]$DelayIntervalInt=0
while(0 -ge $DelayIntervalInt)
{
Write-Host "How frequently (in seconds) would you like to generate the memory dumps?" -
ForegroundColor Yellow
$DelayIntervalStr = Read-Host ">"
try{
try{
$DelayIntervalInt = [convert]::ToInt32($DelayIntervalStr)
catch [FormatException]
{
Write-Host "The value entered for frequency (in seconds) '",$DelayIntervalStr,"'
is not an integer" -ForegroundColor Red
}
}
Write-Host ""
Write-Host "Process complete"
}
Write-Host ""
Write-Host "Process complete"
}
Write-Host "For errors and completion status, review SQLDUMPER_ERRORLOG.log created by SQLDumper.exe
in the output folder '$OutputFolder'. `Or if SQLDumper.exe failed look in the folder from which you
are running this script"```
Run it from Command Prompt as **** Administrator by using the following command:
.\SQLDumpHelper.ps1
NOTE
Si vous n’avez jamais exécuté de scripts PowerShell sur votre système, vous pouvez recevoir le message d’erreur : les
...SQLDumpHelper.ps1 de fichiers ne peuvent pas être chargés car l’exécution de scripts est désactivée sur ce système.
Vous devez activer la possibilité de les exécuter en suivant les étapes suivantes :
1. Démarrez Windows PowerShell console avec l’option Exécuter en tant qu’administrateur. Seuls les
membres du groupe Administrateurs sur l’ordinateur peuvent modifier la stratégie d’exécution.
2. Activez l’exécution de scripts non signés par la commande suivante :
Set-ExecutionPolicy RemoteSigned
NOTE
Cela vous permettra d’exécuter des scripts non signés que vous créez sur votre ordinateur local et des scripts
signés à partir d’Internet.
Utiliser l’utilitaire SQLIOSim pour simuler SQL
Server activité sur un sous-système de disque
13/08/2021 • 21 minutes to read
Cet article explique comment utiliser l’utilitaire SQLIOSim pour effectuer des tests de contrainte sur des sous-
systèmes de disque afin de simuler SQL Server activité.
Version du produit d’origine : SQL Server
Numéro de la ko d’origine : 231619
Résumé
Pour Microsoft SQL Server 2005, SQLIOSim a été livré en tant que package de téléchargement distinct. À partir
SQL Server 2008, SQLIOSim est inclus dans l’installation SQL Server produit. Lorsque vous installez SQL Server,
vous trouvez l’outil SQLIOSim dans le dossier BINN de votre installation SQL Server’installation. Il est
recommandé d’utiliser ces versions mises à jour de l’outil pour simuler l’activité d’O/S sur le sous-système de
disque.
L’utilitaire SQLIOSim remplace l’utilitaire SQLIOStress. L’utilitaire SQLIOStress était anciennement appelé
utilitaire SQL70IOStress.
Cet article contient également des informations de téléchargement pour l’utilitaire SQLIOSim.
Introduction
Cet article décrit l’outil SQLIOSim. Vous pouvez utiliser cet outil pour effectuer des tests de fiabilité et d’intégrité
sur des sous-systèmes de disque. Ces tests simulent les activités de lecture, d’écriture, de point de contrôle, de
sauvegarde, de tri et de lecture avant pour Microsoft SQL Server. Toutefois, si vous devez effectuer des tests de
référence et déterminer la capacité d’I/S du système de stockage, vous devez utiliser l’outil Diskspd.
Présentation
L’utilitaire SQLIOSim a été mis à niveau à partir de l’utilitaire SQLIOStress. L’utilitaire SQLIOSim simule plus
précisément les modèles d’Microsoft SQL Server.
Pour plus d’informations SQL Server des modèles d’SQL Server,voir le chapitre 2.
NOTE
Pour vous aider à maintenir l’intégrité et la sécurité des données appropriées, nous vous recommandons d’effectuer des
tests de contrainte de votre sous-système d’I/S avant de déployer SQL Server sur un nouveau matériel. L’utilitaire
SQLIOSim simule les modèles de lecture, les modèles d’écriture et les techniques d’identification des SQL Server. Pour
effectuer ces tâches, l’utilitaire SQLIOSim simule l’activité utilisateur et l’activité système d’SQL Server système. L’utilitaire
SQLIOSim effectue cette simulation indépendamment SQL Server moteur.
L’utilitaire SQLIOSim ne garantit ni ne justifie la sécurité ou l’intégrité des données. L’utilitaire a été conçu pour
fournir des tests de référence d’un environnement système. L’utilitaire SQLIOSim peut exposer des problèmes
potentiels d’intégrité des données.
Pour plus d’informations sur la journalisation et le stockage des données, voir Description des algorithmesde
journalisation et de stockage de données qui étendent la fiabilité des données dans SQL Server .
Le package de téléchargement contient deux fichiers exécutables, SQLIOSim.com et SQLIOSim.exe. Les deux
fichiers exécutables fournissent des fonctionnalités de simulation identiques. SQLIOSim.com est un outil en
ligne de commande que vous pouvez configurer pour s’exécuter sans intervention de l’utilisateur. Pour ce faire,
vous pouvez utiliser des paramètres de ligne de commande, un fichier de configuration ou une combinaison de
ces deux méthodes. SQLIOSim.exe est une application graphique qui n’accepte aucun paramètre de ligne de
commande. Toutefois, SQLIOSim.exe charge les données de configuration par défaut à partir des fichiers de
configuration.
PA RA M ET ER C O M M EN TA IRE
NOTE
Si le nom du paramètre indique que le paramètre est un ratio ou un pourcentage, la valeur du paramètre est exprimée
en tant que pourcentage ou ratio, divisé par 0,01. Par exemple, la valeur du paramètre CacheHitRatio est 10 pour
cent . Cette valeur est exprimée sous la valeur 1 000, car 10, divisé par 0,01, est égal à 1 000. La valeur maximale d’un
paramètre de pourcentage est 10 000 .
Si le type de paramètre est numérique et que vous affectez une valeur non numérique au paramètre, l’utilitaire
SQLIOSim définit le paramètre sur 0 .
Si le type de paramètre est , les valeurs valides que vous pouvez affecter au paramètre Boolean sont true et false . En
outre, les valeurs sont sensibles à la cas. L’utilitaire SQLIOSim ignore les valeurs non valides.
Si une paire de paramètres indique une valeur minimale et une valeur maximale, la valeur minimale ne doit pas être
supérieure à la valeur maximale. Par exemple, la valeur du paramètre ne doit MinIOChainLength pas être supérieure à
la valeur du MaxIOChainLength paramètre.
Si le paramètre indique un certain nombre de pages, l’utilitaire SQLIOSim vérifie la valeur que vous affectez au
paramètre par rapport au fichier que l’utilitaire SQLIOSim traite. L’utilitaire SQLIOSim effectue cette vérification pour
s’assurer que le nombre de pages ne dépasse pas la taille du fichier.
Section CONFIG
L’utilitaire SQLIOSim prend les valeurs que vous spécifiez dans la section CONFIG du fichier de configuration
SQLIOSim pour établir un comportement de test global.
Section Filex
L’utilitaire SQLIOSim est conçu pour permettre plusieurs tests de fichiers. La section Fichier x est représentée
par [Fichier1], [Fichier2] pour chaque fichier du test.
REMARQUE Si vous
définissez Sparse = true
pour les paramètres de
fichier, ne spécifiez pas
NoBuffering = false dans la
section de configuration. Si
vous utilisez ces deux
combinaisons conflictuelles,
vous pouvez recevoir une
erreur semblable à celle-ci
de l’outil :
Error:-====Error:
0x80070467
Texte d’erreur : lors de
l’accès au disque dur, une
opération de disque a
échoué même après des
tentatives.
Description : échec de la
validation de la mémoire
tampon
C:\SQLIOSim.mdx Page:
28097
Section RandomUser
L’utilitaire SQLIOSim prend les valeurs que vous spécifiez dans la section RandomUser pour simuler un travail
SQL Server qui effectue des opérations de requête aléatoires, telles que les modèles d’E/S OLTP (Online
Transaction Processing).
PA RA M ÈT RE VA L EUR PA R DÉFA UT DESC RIP T IO N C O M M EN TA IRES
La min(CPUCount*2, 8)
valeur se traduit par la plus
petite des valeurs entre
CPUCount*2 et 8.
Section AuditUser
L’utilitaire SQLIOSim prend les valeurs que vous spécifiez dans la section AuditUser pour simuler l’activité DBCC
afin de lire et d’auditer les informations sur la page. La validation se produit même si la valeur du paramètre
UserCount est définie sur 0.
PA RA M ÈT RE VA L EUR PA R DÉFA UT DESC RIP T IO N C O M M EN TA IRES
La min(CPUCount*2, 8)
valeur se traduit par la plus
petite des valeurs entre
CPUCount*2 et 8.
BuffersValidated 64
Section ReadAheadUser
L’utilitaire SQLIOSim prend les valeurs spécifiées dans la section ReadAheadUser pour simuler SQL
Server’activité de lecture avant. SQL Server tirez parti de l’activité de lecture avant pour optimiser les
fonctionnalités asynchrones d’I/S et limiter les retards de requête.
PA RA M ÈT RE VA L EUR PA R DÉFA UT DESC RIP T IO N C O M M EN TA IRES
La min(CPUCount*2, 8)
valeur se traduit par la plus
petite des valeurs entre
CPUCount*2 et 8.
Section BulkUpdateUser
L’utilitaire SQLIOSim prend les valeurs que vous spécifiez dans la section BulkUpdateUser pour simuler des
opérations en bloc, telles que SELECT... Opérations INTO et OPÉRATIONS INSERT EN BLOC.
La min(CPUCount*2, 8)
valeur se traduit par la plus
petite des valeurs entre
CPUCount*2 et 8.
Section ShrinkUser
L’utilitaire SQLIOSim prend les valeurs que vous spécifiez dans la section ShrinkUser pour simuler les
opérations de réduction DBCC. L’utilitaire SQLIOSim peut également utiliser la section ShrinkUser pour agrandir
le fichier.
Création de fichiers
L’utilitaire SQLIOSim crée des fichiers de données et des fichiers journaux distincts pour simuler les modèles
d’SQL Server générés dans son fichier de données et dans son fichier journal. L’utilitaire SQLIOSim n’utilise pas
le moteur SQL Server pour effectuer l’activité de contrainte. Par conséquent, vous pouvez utiliser l’utilitaire
SQLIOSim pour tester un ordinateur avant d’installer SQL Server.
Lorsque vous exécutez l’utilitaire SQLIOSim, veillez à spécifier le même emplacement de fichier que celui que
vous utilisez pour SQL Server base de données. Dans ce cas, l’utilitaire simule le même chemin d’accès d’SQL
Server base de données.
Vous pouvez activer l’attribut compresser ou chiffrer les fichiers de test existants. Vous pouvez également activer
ces attributs pour le répertoire existant dans lequel les fichiers de test seront créés. Les options correspondantes
pour activer ces attributs se trouvent dans la boîte de dialogue Propriétés d’un fichier ou d’un répertoire.
Par défaut, l’utilitaire SQLIOSim crée des fichiers de test qui ont les extensions de nom de fichier .mdx et.ldx. Par
conséquent, ces fichiers ne sont pas en cours de réécriture des données et des fichiers journaux existants.
WARNING
Ne spécifiez pas les fichiers de base de données SQL Server à tester. L’utilitaire SQLIOSim va réécrire les données avec des
modèles de test aléatoires, et vos données SQL Server réelles seront perdues.
NOTE
Si vous découvrez une erreur dans l’utilitaire SQLIOSim, nous vous recommandons de demander à votre fabricant de
matériel de vous aider à déterminer la cause première du problème.
Copies multiples
L’utilitaire SQLIOSim permet de tester plusieurs niveaux de fichiers et de plusieurs utilisateurs. L’utilitaire
SQLIOSim ne nécessite pas plusieurs appels. Toutefois, l’utilitaire SQLIOStress nécessite plusieurs appels. Vous
pouvez exécuter plusieurs copies de l’utilitaire SQLIOSim si les conditions suivantes sont vraies :
Toutes les copies font référence à des fichiers de test uniques par instance de l’utilitaire.
Le paramètre de chaque instance fournit une région de mémoire qui ne se chevauche pas MaxMemoryMB et qui
est suffisante pour chaque instance.
La somme du paramètre pour chaque instance doit être inférieure ou égale à la MaxMemoryMB mémoire physique
totale. Certaines phases de test, telles que la simulation de point de contrôle, peuvent être très longues en
mémoire et créer des conditions de mémoire en dehors de la mémoire lorsque vous exécutez plusieurs copies.
Si vous faites l’expérience d’erreurs de mémoire, vous pouvez réduire le nombre de copies utilitaires en cours
d’exécution.
Les fichiers sont petits pour les Pour la section AuditUser, pour la
conserver entièrement en mémoire section ReadAheadUser et pour la
section RandomUser :
Les fichiers sont rendues non
shrinkables CacheHitRatio=10000
ForceReadAhead=FALSE
Aucune lecture séquentielle BuffersBUMin=600
BuffersBUMax=1000
Aucun accès aléatoire BUDelay=1
UserCount=0
Mise à jour en bloc en blocs
volumineux sans délai
[Fichier3]
FileName=sqliosim.mdx:replica
InitialSize=1000
MaxSize=1000
Increment=10
Shrinkable=FALSE
LogFile=FALSE
Sparse=TRUE
Références
Description de la mise en cache des contrôleurs de disque dans SQL Server
Informations sur l’utilisation de caches de disque avec des SQL Server que chaque administrateur de
base de données doit connaître
KB826433 : SQL Server diagnostics ajoutés pour détecter les problèmes d’I/S non signalés dus à des
lectures obsolètes ou à des écritures perdues
Visual Studio 2010 Shell est installé avec SQL Server
2014 et 2012
14/08/2021 • 2 minutes to read
Symptômes
Après avoir installé SQL Server 2014 ou SQL Server 2012 avec SQL Server Management Studio (SSMS) ou SQL
Server Data Tools (SSDT), les programmes suivants sont installés et répertoriés comme programmes installés :
Microsoft Visual Studio 2010 Shell (isolé)
Microsoft Visual Studio 2010 Shell (intégré)
Lors de l’analyse du serveur avec un logiciel de sécurité, Visual Studio 2010 Shell peut être marqué comme
logiciel de fin de prise en charge (EOS) ou obsolète.
Cause
Lors de l’installation de SQL Server 2014 ou SQL Server 2012, SSMS nécessite Visual Studio 2010 Shell (isolé)
et SSDT nécessite Visual Studio 2010 Shell (intégré).
Conformément à la politique de cycle de vie de Microsoft Visual Studio 2010, le support a pris fin le 14 juillet
2020. Toutefois, si Visual Studio 2010 Shell (isolé) ou Shell (intégré) est installé avec SQL Server 2014 ou SQL
Server 2012, Visual Studio 2010 Shell sera pris en charge jusqu’à la fin de la prise en charge de SQL Server
2014 (09/07/2024) ou de SQL Server 2012 (12/07/2022).
Solution de contournement
Voici comment résoudre ce problème :
1. Utilisez l SQL Server d’installation pour désinstaller la version installée de SSMS ou SSDT.
2. Téléchargez et installez la dernière version de SSMS ou SSDT.
NOTE
Si vous utilisez SSMS pour gérer les packages SSIS (SQL Server Integration Services), voir Supported SQL
offerings.
Si vous utilisez Business Intelligence Development Studio (BIDS) pour concevoir et gérer des packages SSIS, voir
Supported SQL versions.
3. Assurez-vous Visual Studio 2010 Shell (isolé) ou Shell (intégré) n’est pas utilisé par d’autres applications
ou services.
4. Désinstallez Visual Studio 2010 Shell (isolé) ou Shell (intégré) via Ajouter ou supprimer des
programmes.