Ich führe Tarantino Database Management in ein Projekt ein, das ein brandneues Datenbankschema hat. Die einzige Änderung (befindet sich in 0001_InitialSchema.sql
) ist die Erstellung der Tabellen, die in ASP.NET Membership verwendet werden. Ich habe die Tabellen mit aspnet_regsql.exe
generiert und dann als CREATE TO-Skripte skriptiert, die ich dann in meine einzige Tarantino-SQL-Datei kombiniert habe.
Beim Ausführen meines NAnt-Build-Skripts scheitert der drop database
-Befehl, wenn versucht wird, alle Verbindungen von der Datenbank zu trennen, die er zu löschen versucht.
Verbindungen trennen für Datenbank DBName
[call] Ein Fehler ist aufgetreten beim Ausführen einer Transact-SQL-Anweisung oder -Batch.
[call] Nur Benutzerprozesse können beendet werden.
Dies führt dazu, dass der folgende create database
-Schritt fehlschlägt, da die Datenbank noch existiert und keine neuen Updates angewendet werden können:
ManageSqlDatabase:
Erstelle DBName auf localhost unter Verwendung von Skripten aus Pfad\zu\Quelle\src\Datenbank
BAUFEHLER - 1 nicht schwerwiegender Fehler, 0 Warnungen
INTERNER FEHLER
Microsoft.SqlServer.Management.Common.ExecutionFailureException: Ein Fehler ist aufgetreten beim Ausführen einer Transact-SQL-Anweisung oder -Batch. ---> System.Data.SqlClient.SqlException: Datenbank 'DBName' existiert bereits. Wählen Sie einen anderen Datenbanknamen.
Irgend ein Systemprozess bleibt immer mit der Datenbank verbunden, auch lange nachdem das Skript ausgeführt wurde. Ich habe versucht, dies auf verschiedenen Rechnern auszuführen und das gleiche Problem besteht. Ich habe auch versucht, ein anderes Tarantino-Projekt auszuführen, und es läuft jedes Mal einwandfrei. Ich habe sogar eine Dummy-Update-Datei erstellt (die Tabellen Foo, Bar usw. hinzufügte), die auch ohne Probleme ausgeführt wurde. Das Problem scheint von den CREATE TABLE-Skripten für die ASP.NET Membership-Tabellen zu kommen.
Sie können eine Kopie des SQL-Update-Skripts finden, das unter bei PasteBin ausgeführt wurde (aufgrund seiner Länge vom Beitrag getrennt).