background preloader

SQLServer

Facebook Twitter

Ménage de printemps. Il y a quelques tâches ménagères d'administration qui sont trop souvent oubliées : le nettoyage des journaux et des historiques !

Ménage de printemps

Si ce n'est pas fait, on finira par se retrouver avec : Une base de données msdb géante Des problèmes de temps de réponse dès qu'il faut supprimer une base de données (avec son historique de backup géant...) De mauvaises performances pour interroger l'historique des travaux ou des sauvegardes Des milliers de fichiers dans le répertoire "log" de SQL Server ... Voici quelques requêtes, nous en profitons pour explorer quelques nouvelles DMV et procédures stockées étendues... Quels sont les historiques à gérer ? Dans les plans de maintenance de Management Studio, des tâches de nettoyage existent (historique des backups, travaux, plans de maintenance, rapports texte) mais je constate qu'elles sont trop souvent négligées. En tout cas, voilà quelques requêtes à mettre en place pour purger les historiques de msdb (avec une rétention de 30 jours dans cet exemple) :

Deadlock – Trouver les enregistrements impliquées. Si vous administrez un tant soit peu un serveur SQL, il vous est probablement arrivé de devoir traiter d’une problématique de DeadLock. pour mémoire, le DeadLock est le stade utile d’un situation de verrouillage où il n’existe pas de solution car chacun des processus impliqués attend que l’autre se termine afin de pouvoir continuer son traitement.

Deadlock – Trouver les enregistrements impliquées

L’histoire du serpent qui se mort la queue pour faire simple. Dans des version « préhistoriques » de SQL Server, on faisait appel à des Trace Flags afin d’enregistrer els informations dans le fichier errorlog, afin de pouvoir comprendre et dépanner ces sutuations. Avec l’arrivée des xEvents, et principalement de la sessionSystem_health, nul besoin des TF 3605, 1204 et 1205. Par défaut tout est enregistré …. Voici le bout de code que je vais utiliser afin de provoquer le dead lock sur la base AdventureWorks Tout se complique lorsque la session 2 veut accéder à la ressource qui est déjà verrouillée par la session 1, l’enregistrement 722.

SQL Server – Durabilité retardée. Plus tôt dans la journée j’au publiée une petite vidéo au sujet de cette fonction méconnue de SQL Server : la durabilité retardée, ou Delayed Durability.

SQL Server – Durabilité retardée

Lors des audits de performance que je mène chez mes clients, l’attente de type WRITELOG est une des attentes les plus fréquemment rencontrée. Cette attente est liée à la difficulté que rencontre SQL Server pour écrire les transactions dans le fichier LDF, le fameux journal des transactions. Lorsque je suis d’humeur joueuse, je propose alors à mon client de tirer au sort els transactions qui seront autorisées à écrire dans le journal de transaction, et donc à satisfaire au « D » de « ACID » (Atomicité, Consistance, Isolation et Durabilité). Car en effet, le sous-système disque, principalement le volume qui héberge le journal de transactions doit avoir la capacité de supporter les IOs demandés par SQL Server, sous peine de provoquer de sérieux ralentissements. Ci-dessous el bout de code m’ayant servi lors de démos :

Tools

Nouvelle vidéo : Data Masking avec SQL Server - Datafly.pro. Haute disponibilité … de vos sauvegardes. Il est amusant de constater à quel point les mots clé employés dans le titre d’un post conditionnent le nombre de vues.

Haute disponibilité … de vos sauvegardes

Je ne cours pas après les followers, vous avez pu constater que je ne suis pas vraiment un grand adepte des réseaux sociaux, mais je regarde quand même les chiffres pour comprendre quelles sont vos préoccupations. Et donc proposer des articles en lien avec vos centres d’intérêt, plutôt que de disserter sur les méthodes d’irrigation du riz en Chine pendant la dynastie Ming (1368-1644 pour les curieux), ou bien sur les premières traces de sa domestication en -9000.

Merci Wikipédia ! Bref. Je souhaitais revenir aujourd’hui sur un problème rencontré il y a quelques mois par une société qui a, par la suite, souhaité être conseillé de manière régulière. Alors, pas pitié, ne stockez JAMAIS, JAMAIS, JAMAIS vos sauvegardes de bases de données sur la même baie de disque que vos données. Des exemples, j’en ai … trop malheureusement. Oui, tous ces points sont importants. La vidéo du Power Saturday 2020 - Datafly.pro. La video de ma présentation au Power Saturday 2020 est maintenant disponible : SQL Server 2019, de l'intelligence sous le capot.

La vidéo du Power Saturday 2020 - Datafly.pro

Le Power Saturday s'est tenu le 6 juin dernier, entièrement en virtuel cette année (Covid oblige). Lors de cette session assez avancée, co-présentée par mon collègue Frédéric Brouard et moi-même, nous avons voulu montrer les améliorations de l'optimiseur de SQL Server dans ses versions 2017 et 2019. Et on y voit qu'il y gagne de l'intelligence, de quoi vous donner à réfléchir pour upgrader vers les dernières versions si ce n'est pas déjà fait.

SSMS Custom Report : job history planning - Datafly.pro. Un nouvel ajout à ma collection de custom reports pour SSMS : l'historique des jobs de l'agent SQL sous forme de planning sur 24 heures, disponible ici.

SSMS Custom Report : job history planning - Datafly.pro

Il est bien utile d'avoir un outil visuel pour identifier rapidement quels sont les jobs particulièrement fréquents ou particulièrement longs, ou encore de savoir quels sont les jobs planifiés aux mêmes horaires. SSMS ne nous offre nativement rien de tel... Pour utiliser le rapport dans SSMS, faire un clic droit sur l'instance SQL dans l'explorateur d'objets, menu contextuel "Rapports", puis "Rapports personnalisés", ici ouvrir le fichier .RDL. Le rapport interroge la table msdb..sysjobhistory : n'oubliez pas que cette table doit être purgée régulièrement sinon elle risque d'enfler indéfiniment (et les performances du rapport s'en ressentir). La procédure stockée sp_purge_jobhistory permet d'effectuer cette opération, généralement une rétention de 30 jours est suffisante dans la plupart des cas.

Bonne exploration des custom reports...! Isolation snapshot et version tag - Datafly.pro. Une question que posent souvent les développeurs : comment éviter les verrous bloquants à la lecture des données ?

Isolation snapshot et version tag - Datafly.pro

Une des (mauvaises) solutions est d'utiliser la directive NOLOCK (ou isolation READ UNCOMMITTED) : c'est un faux ami car cela ne garantit pas la cohérence transactionnelle des données que l'on lit. L'autre solution est d'utiliser un niveau d'isolation "optimiste", par versionning : SNAPSHOT ou READ COMMITTED SNAPSHOT (RCSI). Le principe de l'isolation par versionning est le suivant : plutôt que de poser un verrou partagé pour lire les données (ce qui empêchera de lire des données en cours de modification), SQL Server va renvoyer la dernière version validée des données : il utilise pour cela le "Version Store", qui stocke de manière transparente cette version des données dans Tempdb.

Scripts

SSMSInfoReports, version à publier sur SSRS - Datafly.pro. Nouveau SSMS custom report : Always On - Datafly.pro. SSMS : copier sa liste de serveurs inscrits sur un autre ordinateur - Datafly.pro. Par Arian Papillon le jeudi 26 mars 2020, 15:22 - Lien permanent Dans SQL Server Management Studio, la liste des serveurs inscrits est une fonctionnalité bien pratique.

SSMS : copier sa liste de serveurs inscrits sur un autre ordinateur - Datafly.pro

Ma propre liste comprend 260 serveurs : les miens et ceux de certains de mes clients. Maintenant que le travail à distance est une réalité quotidienne, j'ai besoin de transférer tout cela de mon ordinateur portable à mon ordinateur de bureau. Il existe bien une fonction d'exportation et d'importation dans SSMS, le seul inconvénient est qu'il n'est pas possible de transférer les mots de passe (ceux pour les connexions SQL) : ils sont chiffrés avec la clé de l'utilisateur. En changeant d'ordinateur, l'importation d'un fichier embarquant les mots de passe chiffrés se passe mal (et d'importer un tel fichier peut même faire planter SSMS !). Je n'ai pas vraiment envie de resaisir 200 mots de passe, et heureusement il existe une solution ! Il n'y a plus qu'à utiliser la fonction d'importation de SSMS... Geographie française en données spatiales - Datafly.pro. Par ces longues soirées (de confinement), c'est le moment de réviser sa géographie avec des requêtes SQL...

Geographie française en données spatiales - Datafly.pro

Cette base de données recence les 36000 communes françaises, les départements et les régions. Je l'ai mise à jour à partir des données (publiques) de la poste et j'y ai ajouté les départements et les régions. Petit jeu géographique : Combien de communes s'appellent Pommiers en France, et combien y en a-t'il en Normandie ? Analyser les "wait statistics" - Datafly.pro. Cet article décrit ce que sont les "wait statistics", comment ces informations peuvent vous aider à diagnostiquer des problèmes de performances, et pourquoi vous trouvez certaines requêtes avec un statut "SUSPENDED".

Analyser les "wait statistics" - Datafly.pro

L'analyse des "wait statistics" est une des approches de diagnostic d'une instance SQL Server. Cela consiste à identifier quelles sont les attentes principales des threads de travail de SQL Server. Webcast : le déploiement d'un cluster Big Data SQL Server 2019 - Datafly.pro. Une nouvelle vidéo sur la chaîne youtube Datafly : c'est un petit retour d'expérience sur le déploiement de mon cluster big data SQL Server 2019. S'appuyant sur Linux (ubuntu) et Kubernetes, on parcourt les principales étapes du déploiement de ma plate-forme de test et quelques commandes de troubleshooting. Pour plus d'informations sur l'architecture des clusters big data de SQL Server 2019, vous pouvez regarder une vidéo précédente de cette même chaîne : L'installation d'une plate-forme de ce type n'est pas une mince affaire, surtout on premise : importantes ressources matérielles (4 VM largement dotées en mémoire (56 Go), en CPU (8 cores) et en disque (200 Go)), installation de linux, installation de l'orchestrateur Kubernetes, personnalisation puis déploiement du cluster SQL Server 2019.

Et du temps : d'abord pour tout installer et configurer, avec les problèmes inhérents aux configurations sous linux, il faut quelques jours. Restaurer sans le filestream - Datafly.pro. Une question qui m'a été posée : comment restaurer une base sans son filestream ? Pour rappel, SQL Server sous Linux n'implémente pas le filestream ni le filetable. Que faire lorsque je dois y restaurer une base qui possède du stockage filestream ?

Créons donc une petite base de données et sauvegardons là pour examiner les solutions : CREATE DATABASE [filestr] ON PRIMARY ( NAME = N'filestr', FILENAME = N'E:\Temp\filestr.mdf' , SIZE = 3072KB , FILEGROWTH = 1024KB ), FILEGROUP FilestrGR CONTAINS FILESTREAM (NAME= 'FilestrBlob', Filename = 'E:\Temp\FILESTRBLOB') LOG ON ( NAME = N'filestr_log', FILENAME = N'E:\Temp\filestr_log.ldf' , SIZE = 1024KB , FILEGROWTH = 10%) GO USE filestr CREATE TABLE mytablewithfilestream (ID int, Theblob varbinary(max) FILESTREAM, GUID_ID UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE) INSERT INTO mytablewithfilestream VALUES (1,CAST('Here are datas' AS varbinary(max)), NEWID()) GO USE master BACKUP DATABASE filestr TO DISK = 'E:\Temp\filestr.bak' WITH INIT.

Avez-vous des deadlocks ? - Datafly.pro. Savez-vous que SQL Server capture en permanence les évènements deadlocks qui surviennent, grâce à sa session d'évènements étendus toujours active ? Découvrez comment exploiter ce journal et afficher les derniers deadlocks en format graphique... Qu'est-ce qu'un deadlock ? Pour ceux qui ont besoin d'un petit rafraichissement, un deadlock est un "interblocage" de verrous : j'aime bien l'appeler une "étreinte fatale"... Un deadlock typique survient lorsque cette séquence d'opérations survient : Autour des conteneurs : Qu'est-ce qu'un conteneur ? - Publicis Sapient Engineering - Engineering Done Right. Pour débuter la thématique Autour des conteneurs, il nous paraît évident de commencer par la question suivante : Qu’est-ce qu’un conteneur Dans sa définition la plus simple on pourrait dire qu’un conteneur est un processus.

C’est une définition certes un peu simpliste mais tout de même vraie. Nous pouvons même le vérifier rapidement en exécutant les commandes suivantes docker run -d alpine sleep 60 ps aux | grep sleep Pour être plus précis, il s’agit également d’une instance d’une image de conteneur. Planification Azure SQL Databases–Azure Elastic Jobs. Azure Managed instances–Tarification pour des instances de dev/test – Christophe LAPORTE – Consultant SQL Server.

Test d’IOPS dans une VM EC2 (Amazon AWS) – Christophe LAPORTE – Consultant SQL Server. Configurer votre instance SQL Server pour utiliser un port spécifique. Par défaut, lorsque vous déployez une nouvelle instance SQL Server, elle utilisera des ports dynamiques. Ce mode de fonctionnement n’est pas supporté pour bon nombre d’outils et de systèmes qui nécessitent un port fixe spécifique. Heureusement, cette modification est très simple à réaliser. SQLSaturday #758–Montréal 2018-Les bases du dépannage SQL server–Les slides – Christophe LAPORTE – Consultant SQL Server. Avoiding Common SQL Server Performance Problems - SolarWinds. Changer la Collation de votre SQL Server (après installation) Surveiller l’utilisation de la mémoire. SQL Server 2016 SP2 – Christophe LAPORTE – Consultant SQL Server. Autant la sortie du Service Pack 1 de SQL Server 2016 avait constitué une petite “révolution”, grâce notamment à l’uniformisation de la surface de programmation dans SQL Server.

Cela permet en effet de bénéficier dans toutes les éditions de fonctionnalités comme les tables partitionnées, le columnstore index, le moteur InMemory Hekaton, la compression des données, le Database Snapshot (qui permet au passage en édition standard d’avoir un accès en lecture seule à une base en Database Mirroring / Groupe de disponibilité basique) , le Dynamic Data Masking et el Row Level Security, mais encore Polybase et bien d’autres … Finalement, la différence entre les éditions, à peu de choses près, réside dans l’accès aux ressources mémoire et CPU et dans les fonctionnalités liées à la haute disponibilité. The DBA’s Guide to SQL Server Cross-Platform Tools - SolarWinds. Choosing Between Rowstore Indexes and Columnstore Indexes - SolarWinds.

Since the columnstore index was first introduced back with SQL Server® 2012, there have been a lot of questions about when you should use a columnstore and when you should use a traditional rowstore index. This is especially true following Microsoft’s latest enhancements to the columnstore. Script PowerShell-Inventaire des instances SQL Server – Christophe LAPORTE – Consultant SQL Server. [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null. SQL Server Internals: Peeking Inside the Transaction Log Structure - SolarWinds.

SQL Server® has been around for over 30 years, and I’ve been working with it for almost as long. I’ve seen a lot of changes over the years (and decades!) SQL Server Internals: Peeking Inside the Transaction Log Structure, Part 2 - SolarWinds. In part one of this topic, “Peeking Inside the Transaction Log Structure,” I told you about the organization of a SQL Server® database’s transaction log.

Understanding this structure will help you keep your log from growing unmanageably large, and help you shrink it if the need arises. Ideally, you’ll find a good size for your log that allows you to perform your normal activities without needing to allocate more log space. (Determining the perfect size for the log is another whole topic, for another time.) In part two, I’m going to tell you what happens if your log ends up growing unexpectedly large, and you need to shrink it.

Erreurs 41017, 41160 et 41152 lors de la création d’un groupe de disponibilité. Erreurs 41017, 41160 et 41152 lors de la création d’un groupe de disponibilité Il y a quelques semaines, je travaillais sur des groupes de disponibilités SQL Server, comme souvent me direz vous. Malgré un grand nombre d’install chez divers clients, et encore plus de démos, j’ai eu affaire à une erreur jamais vue auparavant : Pour résumer, impossible de créer l’AG.

SQL Server sur Linux, alors ? - Les carnets d'ORSYS. Avoiding Common SQL Server Performance Problems - SolarWinds. A lot of different factors go into SQL Server® performance, which can make troubleshooting performance problems difficult. In-Memory Tables: Formula 1 - Performance Unleashed? Part 2 - SolarWinds. In-Memory Tables: Formula 1 - Performance Unleashed? Part 1 - SolarWinds. First Look at SQL Operations Studio - SolarWinds. Get-ChildItem ‘SQLSERVER:\SQLRegistration’ -Recurse. Graph Database in SQL Server 2017, Part I. Christophe LAPORTE – Consultant SQL Server. SQL Server 2017 on Linux- Processes. SQL Server 2017 disponible au téléchargement. Christophe LAPORTE – Consultant SQL Server. SQL Server on Linux - Jump Start 5: SSIS on Linux - SolarWinds.

SQL Saturday 658 – Les bases du dépannage–les slides – Christophe LAPORTE – Consultant SQL Server. [Webinar] A Case Study on Improving SQL Server Performance 20x with Hyperconverged. Merits of a SQL Server Performance Analyzer vs. Performance Monitor(s) - SolarWinds. SQL Server 2017 CTP 2.0 disponible – Premier rang au TPC-H. Christophe LAPORTE – Consultant SQL Server. How to Prioritize Help Desk Tickets When Everything is a Top Priority.

SQL Server 2016 SP1 – l’édition standard bénéficie des fonctionnalités de l’édition entreprise ! Christophe LAPORTE – Consultant SQL Server. SQL Server 2016 Express SP1 – Compression de données.