2010-07-06 59 views
2

我將Tarantino數據庫管理引入到一個項目中,該項目有一個全新的數據庫模式。唯一的更改(位於0001_InitialSchema.sql)是創建ASP.NET Membership中使用的表。我使用aspnet_regsql.exe生成表格,然後將它們編寫爲CREATE TO腳本,然後將它們合併到我的單個Tarantino sql文件中。使用Tarantino數據庫管理創建ASP.NET成員表

運行我的NAnt構建腳本時,drop database命令在試圖從要刪除的數據庫中刪除所有連接時扼流圈。數據庫數據庫名

刪除連接[電話]執行Transact-SQL語句或批處理時出現異常。

[call]只有用戶進程可以被終止。

這導致以下create database步驟就是失敗的,因爲數據庫依然存在,並沒有新的更新將被應用:

ManageSqlDatabase:

使用從路徑\腳本到本地主機創建數據庫名\源\ SRC \數據庫

BUILD FAILED - 1非致命錯誤(S),0警告(S)

內部錯誤

Microsoft.SqlServer.Management.Common.ExecutionFailureException:執行Transact-SQL語句或批處理時發生異常。 ---> System.Data.SqlClient.SqlException:數據庫'DBName'已經存在。選擇不同的數據庫名稱。

在腳本運行後,一些系統進程始終保持與數據庫連接良好。我試着在不同的機器上運行它,並且存在相同的問題。我也嘗試過運行一個不同的Tarantino項目,並且每次都運行得非常完美。我甚至創建了一個虛擬更新文件(添加了表Foo,Bar等),這些文件也沒有問題。該問題似乎源於ASP.NET Membership表的CREATE TABLE腳本。

您可以找到SQL更新腳本運行at PasteBin(由於其長度而分開)的副本。

回答

2

這將是一個Tarantino aparently的錯誤。如果你看看DropConnections.sql,你會發現作者已經淪落爲一個古老的神話,任何高於50的會話都是用戶會話。識別用戶會話(以及KILL-capable會話)的正確方法是檢查sys.dm_exec_sessions中的is_user_process列。

+0

我將修改'DropConnections.sql'來僅殺死用戶進程並在完成時回到此問題。 – Scott 2010-07-07 10:56:50

+0

我修改了腳本以使用'is_user_process',並且確保我擁有最新的Tarantino版本。它現在似乎工作。 – Scott 2010-07-07 13:36:14