it-swarm.com.de

Die Datenbank kann nicht gelöscht werden, da sie derzeit in MVC verwendet wird

Ich bin ganz neu im Umgang mit MVC und versuche, einen Initialisierer zu verwenden, um Daten in meiner Datenbank zu initialisieren, wenn die Anwendung zum ersten Mal gestartet wird. Folgendes habe ich in Global.asax.cs:

 System.Data.Entity.Database.SetInitializer(new MyAppInitializer());
 MyAppContext db = new MyAppContext();
 db.Database.Initialize(true);

In Web.config ist hier meine Verbindungszeichenfolge:

<connectionStrings>
  <add name="MyAppContext"
  connectionString="data source= MyServer; Integrated Security=True; database=MyDatabase"
  providerName="System.Data.SqlClient"/>

Dies verwendet MS SQL 2008 R2. Mein Initializer sieht so aus:

public class MyAppInitializer : DropCreateDatabaseAlways<MyAppContext>
{
    protected override void Seed(MyAppContext context)
    {
        var organizations = new List<Organizations>
        {
            new Organizations { OrgName = "AT", OrgPhone = 5093333433, OrgOfficeLocation = "ITB", OrgPointOfContact = "Tony", OrgIsActive = 1 },
            new Organizations { OrgName = "Libraries", OrgPhone = 5093331122, OrgOfficeLocation = "Holland-Terrell", OrgPointOfContact = "Herald", OrgIsActive = 1 }
        };
        organizations.ForEach(s => context.Organizations.Add(s));
        context.SaveChanges();

Ich habe sichergestellt, dass ich meine Verbindung zum Server und zur Datenbank in SQL Server Management Studio geschlossen habe, aber mehrere Personen haben Zugriff auf diese Datenbank, obwohl sie momentan nicht verwendet werden sollte. Wie kann ich es erhalten, damit ich diese Daten in meiner Datenbank initialisieren kann? Vielen Dank!

Bearbeiten: Ich habe die Datenbank bereits auf dem Server erstellt, ist aber vollständig leer (keine Tabellen, Prozeduren usw.). Würde dies ein Problem verursachen?

18
SantasNotReal

In SSMS so etwas ausführen ...

USE master -- be sure that you're not on MYDB
ALTER DATABASE MYDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE MYDB;
24
Sam

Bei der Verwendung von MVC-Codefirst war ich heute mit einem ähnlichen Problem konfrontiert. Nachdem ich 20 Minuten lang verschiedene Sachen ausprobiert hatte, fiel mir auf, dass auf der Registerkarte "Server Explorer" in Visual Studio eine Verbindung zu meiner Datenbank bestand. Nachdem ich die Verbindung im Server-Explorer von Visual Studio "geschlossen" hatte, konnte der Code ausgeführt und die Datenbank automatisch neu erstellt werden.

45
TwoPea

VS2015 close DB connection Wie von Vardhini beschrieben ... Schließen Sie die DB-Verbindung im Server-Explorer.

7
Bob Mack

Vergewissern Sie sich, dass im SSMS-Fenster "Löschen" die Option "Vorhandene Verbindungen schließen" aktiviert ist.

3
Brice

Meine Beobachtungen sind:

  1. Kann nicht bei der Anwendung angemeldet sein
  2. Kann nicht mit Server Explorer mit DB verbunden werden
  3. Kann nicht mit SSMS verbunden werden

Dann baut die Anwendung die Datenbank erneut auf, auch wenn sich Database.SetInitializer<DbContext>(new DbInitializer()); in public DbContext(); befindet - NICHT wie andere Antworten, um sie in Application_Start(); einzufügen.

Das Schließen aller vorhandenen Verbindungen der Datenbank in Visual Studio Server Explorer und SQLManagement Studio löste das Problem für mich.

0
Vardhini