Trouver le numéro d’une instance nommée de SQL Server

Vous aurez remarqué que pour une installation par défaut d’une instance nommée de SQL Server, celui-ci crée les fichiers de base de données dans le répertoire :

C:\Program Files\Microsoft SQL Server\MSSQL.n\MSSQL\Data

où n est un entier.

Dès lors, comment retrouver ce numéro ?

Lire la suite

Déplacer les bases de données système sous SQL Server 2005

Il est parfois nécessaire de déplacer des bases de données, soit après l’achat de disques supplémentaires, soit pour augmenter les performances en tirant profit de la parallélisation des écritures sur de multiples disques, comme par exemple pour la base de données TempDB.

Si le déplacement de bases de données utilisateur peut sembler simple, il en va tout autrement pour le déplacement des bases de données système que sont TempDB, Model, MSDB, et la moins « visible » d’entre-elles Resource qui est étroitement liée à la base de données Master.

Voyons comment déplacer ces bases de données …

Lire la suite

Comparaison des temps d’exécution entre un curseur et une requête SQL

Je vois souvent sur le forum SQL Server l’utilisation de curseurs alors qu’une vraie requête SQL pourrait le remplacer.
Outre le fait que les curseurs datent de COBOL (1956 …), et que leur spécification en COBOL et T-SQL est similaire à s’y méprendre, comparons donc les temps d’exécution entre un curseur et une requête sur un traitement très simple …

Lire la suite

Pourquoi utiliser les procédures stockées plutôt qu’une commande T-SQL ?

Lorsqu’une application doit exécuter une requête dans une base de données, il est préférable que celle-ci appelle une procédure stockée plutôt que d’envoyer une commande T-SQL construite dans le code de l’application.
Outre l’avantage de sécurité contre les attaques par injection et la maintenabilité du code, voici les autres avantages que cela procure :

Lire la suite

Aggréger des données non numériques d’une entité par une liste de valeurs

Il est souvent demandé sur le forum comment on peut créer une liste de valeurs stockées dans une colonne en une liste.
Cela est en effet souvent demandé par le client pour des rapports, mais il n’est pas évident de prime abord de fournir un tel résultat, puisqu’il est anti-relationnel !

Prenons pour exemple des adhérents à plusieurs clubs :

NomContact	NomClub
--------------- ------------
BipBip		SQLServer
BipBip		Oracle
BipBip		PostGreSQL
Coyotte		MySQL
Coyotte		FireBird
Titi		Sybase
Sylvestre	DB2
Sylvestre	SQLite
Bugs Bunny	SQLServer
Bugs Bunny	PostGreSQL
Daffy Duck	FireBird
Daffy Duck	DB2
Sam Le Pirate	SQLite

Le résultat recherché se présente sous la forme :

NomContact	ListeClub
--------------- -----------------------------
Titi		Sybase
Sam Le Pirate	SQLite
Daffy Duck	FireBird, DB2
Bugs Bunny	SQLServer, PostGreSQL
Sylvestre	DB2, SQLite
Coyotte		MySQL, FireBird
BipBip		SQLServer, Oracle, PostGreSQL

Lire la suite