我正在将 Tarantino 数据库管理引入一个具有全新数据库模式的项目中。唯一的变化(位于 中0001_InitialSchema.sql
)是 ASP.NET Membership 中使用的表的创建。我使用生成表aspnet_regsql.exe
,然后将它们编写为 CREATE TO 脚本,然后将它们组合到我的单个 Tarantino sql 文件中。
在运行我的 NAnt 构建脚本时,该drop database
命令在尝试从它试图删除的数据库中删除所有连接时阻塞。
删除数据库 DBName 的连接
[调用] 执行 Transact-SQL 语句或批处理时发生异常。
[调用] 只有用户进程可以被杀死。
这会导致以下create database
步骤失败,因为数据库仍然存在,并且不会应用新的更新:
管理Sql数据库:
使用 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 脚本。
您可以在 PasteBin中找到运行的 SQL 更新脚本的副本(由于其长度而与帖子分开)。