Supprimer une base de données SQL Express sans Management Studio

sql server express supprimer base sans management studio

Supprimer une base de données SQL Express sans Management Studio

Vous devez supprimer une base de données SQL Express, et vous n’avez pas Management Studio. No problemo!

Localiser l’utilitaire en ligne de commande “osql.exe” puis

osql -E -S SERVER\NamedInstance
1> ALTER DATABASE <DbName> SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
2> USE master;
3> DROP DATABASE <DbName>
4> GO
1> quit

Explications :

  • Le switch -E indique d’utiliser les crendentials en cours pour se connecter (pour éviter de devoir fournir un login/mdp)
  • Le switch -S permet de spécifier le serveur SQL sur lequel vous connecter.
    S’il s’agit d’une instance nommée, faire suivre le nom du serveur par “\nom_de_l_instance”
  • Les commandes SQL permettent de passer la base en mode “Single User” (commande 1), et de faire un DROP de la base (commande 3), puis un GO pour exécuter les commandes (commande 4)

Déplacer une base de données SQL Server avec osql.exe

Rien de pire que de devoir déplacer une base de données SQL Server sans les outils Visual Studio… Surtout quand on a une base de données MSDE !

Heureusement, grâce à osql.exe (disponible par défaut dans C:\Program Files (x86)\Microsoft SQL Server\80\Tools\Binn), on va pouvoir la déplacer assez facilement.

Tout d’abord, trouver le nom de toutes les bases à déplacer :

osql.exe -E -S SRV-SQL\INSTANCE
1> SELECT name FROM sysdatabases
2> GO

Ensuite, toujours dans la même session osql, lançons la sauvegarde des bases:

3> BACKUP DATABASE [STS_Config_32664] TO DISK = 'E:\Backup\STS_Config_32664.bak'
4> BACKUP DATABASE [STS_srv-sts_1_32684] TO DISK = 'E:\Backup\STS_srv-sts_1_32684.bak'
5> GO

Une fois la sauvegarde terminée, on va détacher les bases de données :

6> EXEC sp_detach_db 'STS_Config_32664'
7> EXEC sp_detach_db 'STS_srv-sts_1_32684'
8> GO

Maintenant, avec un explorateur Windows, il faut déplacer les bases de l’emplacement d’origine vers le nouvel emplacement (ici E:\NewDest).

Et enfin, attacher les bases à SQL Server :

9> EXEC sp_attach_db @dbname = N'STS_Config_32664', @filename1 = N'E:\NewDest\STS_Config_32664.mdf', @filename2 = N'E:\NewDest\STS_Config_32664_log.LDF'
10> EXEC sp_attach_db @dbname = N'STS_srv-sts_1_32684', @filename1 = N'E:\NewDest\STS_srv-sts_1_32684.mdf', @filename2 = N'E:\NewDest\STS_srv-sts_1_32684_log.LDF'
11> GO