我正在将Tarantino数据库管理引入到一个项目中,该项目具有全新的数据库模式。唯一的更改(位于0001_InitialSchema.sql
)是创建ASP.NET成员资格中使用的表。我使用aspnet_regsql.exe
生成表,然后将它们编写为CREATE TO脚本,然后将它们组合到我的单个Tarantino sql文件中。
运行我的NAnt构建脚本时,drop database
命令在尝试从数据库中删除所有正在尝试删除的连接时会发生阻塞。
删除数据库DBName的连接
[call]执行Transact-SQL语句或批处理时发生异常。
[call]只能杀死用户进程。
这导致以下create database
步骤失败,因为数据库仍然存在,并且不会应用新的更新:
ManageSqlDatabase:
使用path \ to \ source \ src \ Database
中的脚本在localhost上创建DBName建筑失败 - 1次非致命错误,0次警告
内部错误
Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行Transact-SQL语句或批处理时发生异常。 ---> System.Data.SqlClient.SqlException:数据库'DBName'已存在。选择其他数据库名称。
脚本运行后,某些系统进程始终保持与数据库的连接。我试过在不同的机器上运行它并且存在同样的问题。我也尝试过运行一个不同的Tarantino项目,每次运行都完美无瑕。我甚至创建了一个虚拟更新文件(添加了表Foo,Bar等),它也运行没有问题。问题似乎源于ASP.NET Membership表的CREATE TABLE脚本。
您可以找到运行at PasteBin的SQL更新脚本的副本(由于其长度而与帖子分开)。
答案 0 :(得分:2)
这很可能是塔伦蒂诺的一个错误。如果你看一下DropConnections.sql,你会发现作者已经因为50岁以上的会话是用户会话的旧神话而堕落。识别用户会话(以及因此KILL-able会话)的正确方法是检查sys.dm_exec_sessions
中的is_user_process
列。