<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>SQL | AlexIn Tech</title><link>https://alexin.tech/fr/tag/sql/</link><atom:link href="https://alexin.tech/fr/tag/sql/index.xml" rel="self" type="application/rss+xml"/><description>SQL</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>fr</language><lastBuildDate>Wed, 31 Jan 2024 00:00:00 +0000</lastBuildDate><image><url>https://alexin.tech/media/icon_hu_69c804372a707b16.png</url><title>SQL</title><link>https://alexin.tech/fr/tag/sql/</link></image><item><title>Comment fermer les connexions à une base de données MS SQL</title><link>https://alexin.tech/fr/2024/01/31/comment-fermer-les-connexions-a-une-base-de-donnees-ms-sql/</link><pubDate>Wed, 31 Jan 2024 00:00:00 +0000</pubDate><guid>https://alexin.tech/fr/2024/01/31/comment-fermer-les-connexions-a-une-base-de-donnees-ms-sql/</guid><description>&lt;div class="article-story">
&lt;h1 id="comment-fermer-les-connexions-à-une-base-de-données-ms-sql">Comment fermer les connexions à une base de données MS SQL&lt;/h1>
&lt;p>Lorsque vous essayez de mettre hors ligne une base de données dans Microsoft SQL Server et que cela ne fonctionne pas, cela signifie généralement qu&amp;rsquo;il y a des connexions actives ou des transactions qui empêchent l&amp;rsquo;opération de se terminer. Voici comment fermer les connexions à une base de données MS SQL et résoudre ce problème.&lt;/p>
&lt;p>&lt;strong>Identifier les connexions actives :&lt;/strong> Tout d&amp;rsquo;abord, vous devez déterminer s&amp;rsquo;il y a des connexions actives à votre base de données. Vous pouvez utiliser la requête SQL suivante pour cela :&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="n">USE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">master&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">GO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">spid&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">status&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">loginame&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">hostname&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">blocked&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">db_name&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">dbid&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">dbname&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">cmd&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sysprocesses&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">WHERE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">dbid&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DB_ID&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;YourDatabaseName&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Remplacez &lt;strong>&amp;lsquo;YourDatabaseName&amp;rsquo;&lt;/strong> par le nom de votre base de données. Cette requête listera tous les processus connectés à votre base de données.&lt;/p>
&lt;p>&lt;strong>Tuer les connexions actives :&lt;/strong> S&amp;rsquo;il y a des connexions actives, vous pouvez les terminer. Utilisez la commande &lt;strong>KILL&lt;/strong> suivie de l&amp;rsquo;ID de session (spid) pour chaque connexion :&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="n">KILL&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="p">];&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Remplacez &lt;strong>[session_id]&lt;/strong> par le spid du processus que vous souhaitez terminer. Soyez prudent avec cette commande, car elle mettra fin immédiatement à la session sélectionnée et peut entraîner la perte de travaux non sauvegardés.&lt;/p>
&lt;p>Enjoy 😎&lt;/p>
&lt;p>AlexIn Tech&lt;/p>
&lt;/div></description></item><item><title>Comment détecter des Orphaned Users sur MS SQL Server</title><link>https://alexin.tech/fr/2024/01/30/comment-detecter-des-orphaned-users-sur-ms-sql-server/</link><pubDate>Tue, 30 Jan 2024 00:00:00 +0000</pubDate><guid>https://alexin.tech/fr/2024/01/30/comment-detecter-des-orphaned-users-sur-ms-sql-server/</guid><description>&lt;div class="article-story">
&lt;h1 id="comment-détecter-des-orphaned-users-sur-ms-sql-server">Comment détecter des Orphaned Users sur MS SQL Server&lt;/h1>
&lt;p>Bonjour à tous, c&amp;rsquo;est AlexIn Tech! Aujourd&amp;rsquo;hui, je vais partager avec vous une astuce technique que j&amp;rsquo;ai récemment utilisée lors de la migration d&amp;rsquo;un cluster SQL. J&amp;rsquo;avais besoin de vérifier l&amp;rsquo;existence d&amp;rsquo;&amp;ldquo;orphaned users&amp;rdquo; après avoir restauré ma base de données sur un nouveau cluster. Pour cela j&amp;rsquo;ai écrit un petit script TSQL et je vais vous l&amp;rsquo;expliquer en détail.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="./featured.png" alt="MS SQL Server" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;em>MS SQL Server&lt;/em>&lt;/p>
&lt;h3 id="quest-ce-quun-orphaned-user-dans-sql-server">Qu&amp;rsquo;est-ce qu&amp;rsquo;un &amp;ldquo;Orphaned User&amp;rdquo; dans SQL Server?&lt;/h3>
&lt;p>Dans SQL Server, un &amp;ldquo;orphaned user&amp;rdquo; est un utilisateur de base de données qui n&amp;rsquo;est plus associé à une connexion valide au niveau de l&amp;rsquo;instance. Cela arrive souvent après la restauration d&amp;rsquo;une base de données dans un nouvel environnement.&lt;/p>
&lt;h3 id="le-script-pour-détecter-les-orphaned-users">Le Script pour Détecter les &amp;ldquo;Orphaned Users&amp;rdquo;&lt;/h3>
&lt;p>Voici mon petit script, il marche super.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">-- Use your database
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="n">USE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">YourDatabaseName&lt;/span>&lt;span class="p">];&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">GO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- Create a temporary table to store user information
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">CREATE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">#&lt;/span>&lt;span class="n">DBUsers&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">DBUserName&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">NVARCHAR&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">128&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">DBUserSID&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">VARBINARY&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">85&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- Insert database user information into the temp table
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">INSERT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">INTO&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">#&lt;/span>&lt;span class="n">DBUsers&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">DBUserName&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DBUserSID&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sid&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">database_principals&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">WHERE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">type_desc&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IN&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;SQL_USER&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;WINDOWS_USER&amp;#39;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;WINDOWS_GROUP&amp;#39;&lt;/span>&lt;span class="p">);&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- Select and compare with instance logins
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">u&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">DBUserName&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">AS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DatabaseUser&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">u&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">DBUserSID&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">AS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DatabaseUserSID&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">AS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">InstanceLogin&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sid&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">AS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">InstanceLoginSID&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">CASE&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">WHEN&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sid&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">IS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">NULL&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">THEN&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;Orphaned User&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">ELSE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;Matched&amp;#39;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">END&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">AS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Status&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="o">#&lt;/span>&lt;span class="n">DBUsers&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">u&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">LEFT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">JOIN&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">server_principals&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">u&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">DBUserSID&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">p&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sid&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- Drop the temporary table
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">DROP&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">TABLE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">#&lt;/span>&lt;span class="n">DBUsers&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="explication-du-script">Explication du Script&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Sélection de la Base de Données :&lt;/strong> Remplacez &lt;strong>[YourDatabaseName]&lt;/strong> par le nom de votre base de données pour cibler celle-ci.&lt;/li>
&lt;li>&lt;strong>Création d&amp;rsquo;une Table Temporaire :&lt;/strong> Le script commence par créer une table temporaire &lt;strong>#DBUsers&lt;/strong>. En TSQL, le préfixe &lt;strong>#&lt;/strong> indique une table temporaire qui existe uniquement pendant la durée de la session et est stockée dans &lt;strong>tempdb&lt;/strong>.**(lire la nota bene en bas d&amp;rsquo;articles pour plus d&amp;rsquo;infos)*&lt;/li>
&lt;li>&lt;strong>Insertion des Utilisateurs :&lt;/strong> Ensuite, il insère les noms et SID (Security Identifier) des utilisateurs de la base de données dans cette table temporaire.&lt;/li>
&lt;li>&lt;strong>Comparaison avec les Connexions de l&amp;rsquo;Instance :&lt;/strong> La requête principale compare les SID des utilisateurs de la base de données avec ceux des connexions de l&amp;rsquo;instance pour identifier les &amp;ldquo;orphaned users&amp;rdquo;.&lt;/li>
&lt;li>&lt;strong>Nettoyage :&lt;/strong> Enfin, la table temporaire est supprimée.&lt;/li>
&lt;/ol>
&lt;h3 id="comment-utiliser-le-script">Comment Utiliser le Script?&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Remplacez le Nom de la Base de Données :&lt;/strong> Commencez par remplacer &lt;strong>[YourDatabaseName]&lt;/strong> par le nom de votre base de données.&lt;/li>
&lt;li>&lt;strong>Exécutez le Script :&lt;/strong> Lancez le script dans votre environnement SQL Server Management Studio (SSMS).&lt;/li>
&lt;li>&lt;strong>Analysez les Résultats :&lt;/strong> Les utilisateurs marqués &amp;lsquo;Orphaned User&amp;rsquo; sont ceux que vous devez examiner.&lt;/li>
&lt;li>&lt;strong>Actions :&lt;/strong> Vous pouvez alors choisir de les supprimer ou de les relier à de nouvelles connexions.&lt;/li>
&lt;/ol>
&lt;h3 id="comprendre-les-faux-positifs-parmi-les-orphaned-users">Comprendre les Faux-Positifs parmi les &amp;ldquo;Orphaned Users&amp;rdquo;&lt;/h3>
&lt;p>Après avoir parcouru comment utiliser le script pour détecter les &amp;ldquo;orphaned users&amp;rdquo;, il est important de comprendre que, parfois, identifier un &amp;ldquo;orphaned user&amp;rdquo; ne signale pas forcément un problème. Dans certains cas, ces utilisateurs orphelins peuvent être des faux-positifs. Voici pourquoi :&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Utilisateurs Supprimés de l&amp;rsquo;Active Directory (AD) :&lt;/strong> Il est courant après un restore de DB de trouver des utilisateurs qui existaient dans l&amp;rsquo;AD lors de la création de la base de données mais qui ont depuis été supprimés de l&amp;rsquo;AD. Ces comptes, bien que toujours présents dans la base de données comme utilisateurs, ne sont plus dans les logins de l&amp;rsquo;instance car lorsque les logins de l&amp;rsquo;instance ont été restaurés ils n&amp;rsquo;existaient plus dans l&amp;rsquo;AD. Cela génère donc des &amp;ldquo;orphaned users&amp;rdquo; car ils sont des les users de la DB mais pas dans les logins de l&amp;rsquo;instance. Assez souvent des vieilleries qui n&amp;rsquo;avaient pas été supprimées.&lt;/li>
&lt;li>&lt;strong>Utilisateurs Spécifiques à la Base de Données :&lt;/strong> Certaines bases de données ont des utilisateurs créés spécifiquement pour elles, sans correspondance au niveau de l&amp;rsquo;instance. Ces utilisateurs sont souvent conçus pour des rôles ou des fonctions spécifiques à la base de données et n&amp;rsquo;ont pas besoin de connexion au niveau de l&amp;rsquo;instance.&lt;/li>
&lt;/ol>
&lt;p>J&amp;rsquo;espère que ce guide vous aidera à gérer efficacement les utilisateurs dans vos bases de données SQL Server. Les &amp;ldquo;orphaned users&amp;rdquo; peuvent être un casse-tête, mais avec le bon outil, ils sont faciles à repérer et à gérer.&lt;/p>
&lt;p>Enjoy 😎&lt;/p>
&lt;p>AlexIn Tech&lt;/p>
&lt;p>*&lt;strong>Nota Bene : Pourquoi supprimer explicitement une table temporaire ?&lt;/strong>&lt;/p>
&lt;p>Raisons de Supprimer Explicitement une Table Temporaire&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Clarté et Bonnes Pratiques :&lt;/strong> L&amp;rsquo;inclusion d&amp;rsquo;une commande &lt;strong>DROP TABLE&lt;/strong> pour les tables temporaires est souvent une question de clarté et de bonnes pratiques de développement. Elle indique clairement aux personnes qui lisent le script que la table n&amp;rsquo;est plus nécessaire et que son cycle de vie est géré de manière proactive.&lt;/li>
&lt;li>&lt;strong>Gestion des Ressources :&lt;/strong> Bien que SQL Server gère automatiquement la suppression des tables temporaires, le fait de les supprimer explicitement dès qu&amp;rsquo;elles ne sont plus nécessaires peut aider à libérer des ressources, comme la mémoire et l&amp;rsquo;espace disque dans &lt;strong>tempdb&lt;/strong>, plus rapidement, surtout dans de longues sessions ou transactions.&lt;/li>
&lt;li>&lt;strong>Prévention des Conflits dans de Longues Sessions :&lt;/strong> Dans des sessions particulièrement longues ou complexes, où plusieurs opérations sont effectuées, supprimer explicitement une table temporaire dès qu&amp;rsquo;elle n&amp;rsquo;est plus utile peut aider à prévenir des conflits ou des confusions avec d&amp;rsquo;autres parties du script qui pourraient utiliser des tables temporaires avec des noms similaires.&lt;/li>
&lt;li>&lt;strong>Habitude et Portabilité :&lt;/strong> Pour les développeurs qui travaillent avec différents systèmes de gestion de base de données (SGBD), l&amp;rsquo;habitude de supprimer explicitement toutes les tables, y compris les temporaires, peut être une pratique courante. Cela assure une certaine uniformité dans la gestion des ressources, indépendamment des spécificités de chaque SGBD.&lt;/li>
&lt;/ol>
&lt;/div></description></item><item><title>MSSQL - tempdb prend trop de place - disque FULL</title><link>https://alexin.tech/fr/2023/03/13/mssql-tempdb-prend-trop-de-place-disque-full/</link><pubDate>Mon, 13 Mar 2023 00:00:00 +0000</pubDate><guid>https://alexin.tech/fr/2023/03/13/mssql-tempdb-prend-trop-de-place-disque-full/</guid><description>&lt;div class="article-story">
&lt;h1 id="mssql---tempdb-prend-trop-de-place---disque-full">MSSQL - tempdb prend trop de place - disque FULL&lt;/h1>
&lt;p>Salut à tous !&lt;/p>
&lt;p>Aujourd&amp;rsquo;hui, on va parler de &amp;ldquo;tempdb&amp;rdquo;, une base de données système dans Microsoft SQL Server qui stocke des données temporaires telles que des tables temporaires et des variables de table, des plans d&amp;rsquo;exécution de requêtes et des résultats de requêtes intermédiaires. Cette base de données est essentielle au bon fonctionnement de SQL Server, et il est important de contrôler sa taille. (&lt;em>ça fait chelou avec les mots en français plutôt qu&amp;rsquo;en anglais mais vous comprenez, &amp;ldquo;temporary tables, table variable, query execution plan, query intermediary results, etc etc&amp;rdquo;&lt;/em>)&lt;/p>
&lt;p>Le problème que l&amp;rsquo;on va traiter concerne la croissance excessive de la base de données &amp;ldquo;tempdb&amp;rdquo;.&lt;/p>
&lt;p>Pour déterminer la cause de ce problème, la première étape consiste à lancer SQL Server Management Studio et à accéder à la base de données &amp;ldquo;tempdb&amp;rdquo;.&lt;/p>
&lt;p>On fait un clic droit sur la &amp;ldquo;tempdb&amp;rdquo; et ensuite =&amp;gt; Tasks =&amp;gt; Shrink =&amp;gt; Files =&amp;gt; Ne réduisez rien, regardez simplement l&amp;rsquo;espace disponible. Si l&amp;rsquo;espace disponible est élevé, cela indique qu&amp;rsquo;une requête mal optimisée est en cours d&amp;rsquo;exécution et que &amp;ldquo;tempdb&amp;rdquo; ne libère pas l&amp;rsquo;espace disponible.&lt;/p>
&lt;p>Si l&amp;rsquo;espace disponible est faible, accédez à la base de données &amp;ldquo;tempdb&amp;rdquo; et exécutez un rapport standard, &amp;ldquo;Top Transactions by Age&amp;rdquo;, pour identifier si de nombreuses transactions sont ouvertes, ce qui pourrait provoquer la croissance de la base de données et la non-libération de l&amp;rsquo;espace.&lt;/p>
&lt;p>
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="./featured.png.png" alt="MSSQL" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Si cela ne renvoie rien, vous pouvez exécuter un script qui affiche tous les processus en cours d&amp;rsquo;exécution et la quantité d&amp;rsquo;espace qu&amp;rsquo;ils utilisent dans &amp;ldquo;tempdb&amp;rdquo;.&lt;/p>
&lt;p>Le script suivant devrait fonctionner :&lt;/p>
&lt;p>&lt;a href="https://littlekendra.com/2009/08/27/whos-using-all-that-space-in-tempdb-and-whats-their-plan/" target="_blank" rel="noopener">Who&amp;rsquo;s Using All that Space in tempdb, and What&amp;rsquo;s their Plan? - littlekendra.com&lt;/a>&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">select&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">request_id&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">task_alloc_GB&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">cast&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">task_alloc_pages&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">8&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">1024&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">1024&lt;/span>&lt;span class="p">.)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">numeric&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">))&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">task_dealloc_GB&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">cast&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">task_dealloc_pages&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">8&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">1024&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">1024&lt;/span>&lt;span class="p">.)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="nb">numeric&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">10&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">))&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">host&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">case&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">when&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;lt;=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">then&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;SYS&amp;#39;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">else&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">s1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">host_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">end&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">s1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">login_name&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">s1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">status&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">s1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">last_request_start_time&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">s1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">last_request_end_time&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">s1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">row_count&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">s1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">transaction_isolation_level&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">query_text&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">coalesce&lt;/span>&lt;span class="p">((&lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">SUBSTRING&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">text&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t2&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">statement_start_offset&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">CASE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">WHEN&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">statement_end_offset&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="mi">1&lt;/span>&lt;span class="k">THEN&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">LEN&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">CONVERT&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">nvarchar&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">max&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="nb">text&lt;/span>&lt;span class="p">))&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="k">ELSE&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">statement_end_offset&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">END&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t2&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">statement_start_offset&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="o">/&lt;/span>&lt;span class="mi">2&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">dm_exec_sql_text&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">t2&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sql_handle&lt;/span>&lt;span class="p">))&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;Not currently executing&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">query_plan&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">query_plan&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">from&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">dm_exec_query_plan&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">t2&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">plan_handle&lt;/span>&lt;span class="p">))&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">from&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">Select&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">request_id&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">task_alloc_pages&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">sum&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">internal_objects_alloc_page_count&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user_objects_alloc_page_count&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">task_dealloc_pages&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">sum&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">internal_objects_dealloc_page_count&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">+&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user_objects_dealloc_page_count&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">from&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">dm_db_task_space_usage&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">group&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">request_id&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">left&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">join&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">dm_exec_requests&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t2&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">on&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t2&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">and&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">request_id&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t2&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">request_id&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">left&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">join&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">dm_exec_sessions&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">s1&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">on&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">s1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">where&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">50&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c1">-- ignore system unless you suspect there&amp;#39;s a problem there
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">and&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">session_id&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">&amp;lt;&amp;gt;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">@@&lt;/span>&lt;span class="n">SPID&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="c1">-- ignore this request itself
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="k">order&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">by&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">t1&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">task_alloc_pages&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">DESC&lt;/span>&lt;span class="p">;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">GO&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Une fois que vous avez toutes ces informations, vous pouvez commencer à trouver la cause de ce problème de taille excessive et savoir exactement &amp;ldquo;qui&amp;rdquo; ou &amp;ldquo;quoi&amp;rdquo; utilise l&amp;rsquo;espace.&lt;/p>
&lt;p>Pour corriger ce problème de manière temporaire, redémarrez simplement SQL Server, ce qui effacera le fichier journal de la &amp;ldquo;tempdb&amp;rdquo;. Ensuite vous pouvez modifier les paramètres de l&amp;rsquo;auto-growth et afin de mettre une taille fixe ou désactiver ce settings. Logiquement la query qui pose problème n&amp;rsquo;arrivera plus à s&amp;rsquo;exécuter et on devrait trouver le coupable.&lt;/p>
&lt;p>En suivant ces étapes, vous pouvez facilement identifier la cause de la croissance excessive de &amp;ldquo;tempdb&amp;rdquo; et résoudre le problème.&lt;/p>
&lt;p>J&amp;rsquo;espère que cet article vous a été utile. À bientôt !&lt;/p>
&lt;/div></description></item><item><title>Obtenir le port d'une instance SQL en Powershell</title><link>https://alexin.tech/fr/2021/08/12/obtenir-le-port-dune-instance-sql-en-powershell/</link><pubDate>Thu, 12 Aug 2021 00:00:00 +0000</pubDate><guid>https://alexin.tech/fr/2021/08/12/obtenir-le-port-dune-instance-sql-en-powershell/</guid><description>&lt;div class="article-story">
&lt;h1 id="obtenir-le-port-dune-instance-sql-en-powershell">Obtenir le port d&amp;rsquo;une instance SQL en Powershell&lt;/h1>
&lt;p>Le port par défaut d&amp;rsquo;un serveur MS SQL est le 1433 mais vous trouverez souvent que, par mesure de sécurité, le port a été modifié.&lt;/p>
&lt;p>Voici un petit script PowerShell permettant de retourner les instances ainsi que les ports utilisés d&amp;rsquo;un serveur MS SQL.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-powershell" data-lang="powershell">&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$server&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">Read-Host&lt;/span> &lt;span class="n">-Prompt&lt;/span> &lt;span class="s1">&amp;#39;Input your servername&amp;#39;&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nv">$namespace&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="nb">gwmi &lt;/span>&lt;span class="n">-computername&lt;/span> &lt;span class="nv">$server&lt;/span> &lt;span class="n">-Namespace&lt;/span> &lt;span class="s2">&amp;#34;root\microsoft\sqlserver&amp;#34;&lt;/span> &lt;span class="n">-Class&lt;/span> &lt;span class="s2">&amp;#34;__Namespace&amp;#34;&lt;/span> &lt;span class="n">-Filter&lt;/span> &lt;span class="s2">&amp;#34;name like &amp;#39;ComputerManagement%&amp;#39;&amp;#34;&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">sort &lt;/span>&lt;span class="n">desc&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">select &lt;/span>&lt;span class="n">-ExpandProperty&lt;/span> &lt;span class="n">name&lt;/span> &lt;span class="n">-First&lt;/span> &lt;span class="mf">1&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="nb">Get-WmiObject&lt;/span> &lt;span class="n">-computername&lt;/span> &lt;span class="nv">$server&lt;/span> &lt;span class="n">-Namespace&lt;/span> &lt;span class="s2">&amp;#34;root\microsoft\SqlServer\&lt;/span>&lt;span class="nv">$namespace&lt;/span>&lt;span class="s2">&amp;#34;&lt;/span> &lt;span class="n">-Class&lt;/span> &lt;span class="n">ServerNetworkProtocolProperty&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">select &lt;/span>&lt;span class="n">instancename&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">propertystrval&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">PropertyName&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">IPAddressName&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="n">ProtocolName&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="n">where&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nv">$_&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">IPAddressName&lt;/span> &lt;span class="o">-eq&lt;/span> &lt;span class="s1">&amp;#39;IPAll&amp;#39;&lt;/span> &lt;span class="o">-and&lt;/span> &lt;span class="nv">$_&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="py">propertystrval&lt;/span> &lt;span class="o">-ne&lt;/span> &lt;span class="s1">&amp;#39;&amp;#39;&lt;/span>&lt;span class="p">}&lt;/span> &lt;span class="p">|&lt;/span> &lt;span class="nb">ft &lt;/span>&lt;span class="n">-autosize&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Lorsque vous exécuterez ce script, il vous demandera de rentrer le serveur pour lequel vous souhaitez trouver les instances et ports et vous obtiendrez le résultat suivant :
&lt;figure >
&lt;div class="flex justify-center ">
&lt;div class="w-100" >&lt;img src="./featured.png" alt="Capture d&amp;rsquo;écran PoSh" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/p>
&lt;p>Enjoy ! 😉&lt;/p>
&lt;/div></description></item><item><title>Retourner la date des derniers backups pour toutes les DBs d'une instance MS SQL</title><link>https://alexin.tech/fr/2021/03/30/retourner-la-date-des-derniers-backups-pour-toutes-les-dbs-dune-instance-ms-sql/</link><pubDate>Tue, 30 Mar 2021 00:00:00 +0000</pubDate><guid>https://alexin.tech/fr/2021/03/30/retourner-la-date-des-derniers-backups-pour-toutes-les-dbs-dune-instance-ms-sql/</guid><description>&lt;div class="article-story">
&lt;h1 id="retourner-la-date-des-derniers-backups-pour-toutes-les-dbs-dune-instance-ms-sql">Retourner la date des derniers backups pour toutes les DBs d&amp;rsquo;une instance MS SQL&lt;/h1>
&lt;p>Voici un petit script SQL bien pratique pour savoir quand vos bases ont été backupées pour la dernière fois sur une instance MS SQL.&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sdb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">AS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">DatabaseName&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="n">COALESCE&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="k">CONVERT&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="nb">VARCHAR&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="mi">12&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">MAX&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">bus&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">backup_finish_date&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="mi">101&lt;/span>&lt;span class="p">),&lt;/span>&lt;span class="s1">&amp;#39;-&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">AS&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">LastBackUpTime&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sys&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">sysdatabases&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sdb&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">LEFT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">OUTER&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">JOIN&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">msdb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">dbo&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">backupset&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">bus&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ON&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">bus&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">database_name&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sdb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">name&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="k">GROUP&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">BY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">sdb&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">Name&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Enjoy ! ;-)&lt;/p>
&lt;/div></description></item></channel></rss>