Voici une énumération des raisons qui font que jusque ici, je n’ai jamais donné mon aval à la création de plans de maintenance sur des instance SQL Server de production :
Archives mensuelles : juillet 2012
Rafraîchir les métadonnées des modules SQL
Après un certain temps de vie, ou après que la structure d’une base de données de développement ait été copiée depuis celle de production puis modifiée, il arrive que lorsqu’on recherche les dépendances d’un objet, dans les tables systèmes ou en choisissant l’option Dépendances du menu contextuel proposé par le clic-droit sur un module SQL (une procédure stockée, une fonction, un trigger, ou une vue définis par l’utilisateur), les données ou l’affichage soient incorrects, bien que l’on soit pourtant certain que l’objet que l’on vient de modifier dépend bien d’un autre.
Voici comment remédier à ce désagrément …
Lire la suite
Copier un DTS d’un serveur à un autre
Nous allons voir comment transférer un lot DTS d’un serveur vers un autre, ce qui peut être intéressant pour copier un DTS développé sur une machine de développement vers une machine de production …
Connaître la longueur maximale des lignes des tables, et calculs relatifs
Il est intéressant de connaître la longueur maximale qui peut être stockée par une table pour tenter de prévoir la taille d’une base de données lorsque le système sera arrivé à maturité.
Voici une petite requête pour nous y aider sous SQL Server 2005 et 2008…
Lire la suite
Une procédure stockée pour trouver sous quel compte de service s’exécute une instance SQL Server
Voici une petite procédure stockée qui affiche dans la console de SSMS le nom du compte de service sous lequel s’exécute une instance SQL Server :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | CREATE PROCEDURE spGetSQLServerServiceAccountName AS BEGIN DECLARE @nomInstance SYSNAME, @nomMachine SYSNAME SELECT @nomInstance = CAST(SERVERPROPERTY('InstanceName') AS SYSNAME), @nomMachine = @@SERVERNAME DECLARE @cle NVARCHAR(256), @compteDeService NVARCHAR(128) SELECT @cle = CASE WHEN @nomInstance IS NULL THEN N'SYSTEM\CurrentControlSet\Services\MSSQLServer' ELSE N'SYSTEM\CurrentControlSet\Services\MSSQL$' + @nomInstance END EXEC master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', @cle, N'ObjectName', @compteDeService OUTPUT, N'no_output' PRINT 'Le compte de service est ' + @compteDeService END |
ElSuket
Connaître les caractéristiques d’une trace SQL Profiler
Sur un serveur à la configuration sous-dimensionnée que je surveille de temps en temps, j’ai trouvé une trace SQL Profiler en cours d’exécution.
J’ai voulu en savoir plus sur les caractéristiques de cette trace.
Voici la requête :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | ------------------------------- -- Nicolas SOUQUET - 16/06/2010 ------------------------------- SELECT C.name , FI.value , T.start_time , T.last_event_time , T.event_count , S.login_name , S.session_id , 'EXEC sp_trace_setstatus ' + CAST(T.id AS varchar(10)) + ', 0' AS stop_trace_stmt FROM sys.traces AS T CROSS APPLY sys.fn_trace_getfilterinfo (T.id) AS FI INNER JOIN sys.trace_columns AS C ON FI.columnid = C.trace_column_id INNER JOIN sys.dm_exec_sessions AS S ON S.session_id = T.reader_spid |
On sait tout de suite quel filtres ont été utilisés à l’aide des deux premières colonnes.
La dernière colonne contient l’instruction qui permet d’arrêter la trace : le développeur a donc toujours ses résultats.
Pour savoir comment créer une trace côté serveur, c’est par ici
Bon traçage !
ElSüket
Puissance de la clause IN
La clause IN permet de filtrer une requête sur un ensemble de valeurs, soit en les listant « en dur », soit pas une sous-requête.
Si ce n’est pas un opérateur que j’affectionne particulièrement puisqu’il n’est pas SARGable, en voici une utilisation assez puissante :
Suivre le nombre de fichiers journaux virtuels du fichier du journal des transactions
Avant d’envisager une réduction du fichier du journal des transactions, il convient de connaître le nombre de fichiers virtuels que contient le fichier du journal des transactions.
On peut également envisager de le faire grossir de nouveau pour avoir moins de fichiers virtuels, et obtenir de meilleures performances pour les transactions manipulant un grand volume de données.
Voyons comment faire cela :
Comment convertir un fichier blg en csv pour l’intégrer en base rapidement ?
Voici comment transformer un fichier blg généré par PerfMon en CSV en vue de l’intégrer dans une table de base de données (et pourquoi pas faire un rapport à partir de là ? )
Lire la suite
Analyse de plans de requête : SQL Sentry Plan Explorer
Si les plans d’exécution graphiques sont un bon outil pour faciliter la lecture des plans, l’outil souffre de quelques lacunes que SQL Sentry Plan Explorer a su combler.
Depuis que je l’ai téléchargé pour la première fois, je ne peux plus m’en passer
Lire la suite