Je fais du développement actif sur mon schéma dans SQL Server 2008 et je souhaite fréquemment réexécuter mon script de suppression / création de base de données. Quand je cours
USE [master]
GO
IF EXISTS (SELECT name FROM sys.databases WHERE name = N'MyDatabase')
DROP DATABASE [MyDatabase]
GO
J'ai souvent cette erreur
Msg 3702, Level 16, State 4, Line 3
Cannot drop database "MyDatabase" because it is currently in use.
Si vous cliquez avec le bouton droit de la souris sur la base de données dans le volet de l'explorateur d'objets et sélectionnez la tâche Supprimer dans le menu contextuel, il y a une case à cocher pour "fermer les connexions existantes"
Existe-t-il un moyen de spécifier cette option dans mon script?
sql
sql-server
pseudo
la source
la source
Accédez au studio de gestion et faites tout ce que vous décrivez, mais au lieu de cliquer sur OK, cliquez sur Script. Il montrera le code qu'il exécutera que vous pourrez ensuite incorporer dans vos scripts.
Dans ce cas, vous souhaitez:
la source
Selon la documentation ALTER DATABASE SET , il est toujours possible qu'après avoir défini une base de données en mode SINGLE_USER, vous ne puissiez pas accéder à cette base de données:
Ainsi, un script complet pour supprimer la base de données avec des connexions existantes peut ressembler à ceci:
la source
Je sais qu'il est trop tard mais peut-être que cela aide quelqu'un. en utilisant ceci, mettez votre base de données hors ligne
la source
J'ai essayé ce que dit hgmnz sur SQL Server 2012.
Gestion créée pour moi:
la source
ROLLBACK IMMEDIATE
faites pas, la déclaration sera incluse. Celasp_delete_database_backuphistory
vient de la vérification de "Supprimer la sauvegarde et restaurer les informations d'historique des bases de données".ALTER DATABASE SET SINGLE_USER ...
s'il n'y a pas de connexions actuelles à fermer.essayez ce code C # pour supprimer votre base de données
public static void DropDatabases (string dataBase) {
la source