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