Lister les colonnes d’une ou des toutes les tables avec leurs types

Voici une requête simple pour obtenir tout cela :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
-------------------------------
-- Nicolas SOUQUET - 13/12/2010
-------------------------------
SELECT    S.name AS schema_name
    , T.name AS table_name
    , C.name AS column_name
    , C.column_id
    , TY.name AS data_type_name
    , CASE WHEN TY.name IN ('nchar', 'nvarchar') THEN C.max_length / 2 ELSE C.max_length END AS max_length
FROM    sys.schemas AS S
INNER JOIN  sys.tables AS T
      ON S.schema_id = T.schema_id
INNER JOIN  sys.columns AS C  
      ON C.object_id = T.object_id
INNER JOIN  sys.types AS TY
      ON TY.system_type_id = C.system_type_id
      AND TY.system_type_id = TY.user_type_id
WHERE    1 = 1
--AND    S.name = 'dbo'
--AND    T.name = 'maTable'
--AND    C.name = 'maColonne'
ORDER BY  T.name, C.column_id

ElSüket ;)

Quelles sont les requêtes et tâches en cours d’exécution dans une instance SQL Server ?

Voici une requête basée sur les vues et fonctions de gestion dynamiques, introduites avec SQL Server 2005.

Elle permet de lister l’ensemble des requêtes actuellement en cours d’exécution dans une instance SQL Server, avec quelques statistiques et caractéristiques :

– le n° de session (SPID),
– le nombre de threads mis en place pour résoudre la requête,
– le nom du serveur,
– le nom du login,
– le pourcentage d’avancement d’une instruction,
– le nom de la base de données,
– le statut de la session,
– le temps écoulé depuis le début de l’exécution,
– le temps CPU consommé,
– le nombre de lectures et d’écritures,
– le type d’instruction,
– le nombre de transactions ouvertes par la session,
– le nombre de resultsets,
– le type d’attente,
– le temps d’attente pour ce type,
– le type d’attente précédent,
– la ressource attendue,
– le nom du programme / job qui exécute la requête,
– l’instruction SQL en cours d’exécution dans le lot,
– le lot SQL complet,
– le plan de requête,
– les hashs de requête et de plan,
– le nombre d’exécutions du plan,
– la date de génération du plan,
– l’adresse IP de la machine exécutant la requête.

Toute suggestion est la bienvenue !

Lire la suite

Une macro Excel pour dépouiller les statistiques IO

L’option de session SET STATISTICS IO ON permet de révéler la quantité d’activité générée sur les disques par une requête.
Comme je dépouille assez souvent le résultat qui s’affiche dans la console de SQL Server Management Studio, j’en suis venu à écrire une macro qui fait ce travail pour moi en un clin d’œil ;)

Lire la suite

Trouver le premier et le dernier jour de la semaine, du mois, du trimestre, et autre calculs

Beaucoup de participants au forum SQL Server se compliquent la vie avec des calculs bizarres, à trouver le premier ou dernier jour d’un index temporel, comme celui d’une semaine, d’un mois, ou d’un trimestre.

Ces calculs se font souvent à base d’extractions de sous-chaînes après avoir converti une date en varchar(n), et on aboutit donc à des choses abominables.

Voici donc une série de calculs de valeurs, uniquement à base de fonctions de date …
Oui, les dates se manipulent avec des fonctions de date, et non pas avec des fonctions de chaîne !

J’en profite au passage pour rappeler mon billet sur le choix des types de données

Lire la suite

Générer le script de mise à jour des types de données de colonnes dont le type est déprécié

Voici plusieurs scripts qui permettent d’automatiser le changement de types de données dépréciés text, ntext et image depuis SQL Server 2005, qui les a respectivement remplacés par varchar(max), nvarchar(max), et varbinary(max), et a rendu les valeurs stockées sous de tels types bien plus malléables (utilisations de fonctions de chaîne notamment)
Lire la suite

Retrouver le dossier par défaut des sauvegardes des bases de données sous SQL Server 2005 et suivants

Voyons comment retrouver le dossier dans lequel sont stockés par défaut les sauvegardes de vos bases de données de deux façons :

– Avec SQL Server Management Studio
– Avec procédure stockée étendue non documentée xp_instance_regread
Lire la suite