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

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

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 :

Lire la suite