我正在将Tarantino数据库管理介绍到一个具有全新数据库模式的项目中。惟一的更改(位于0001_InitialSchema.sql中)是创建ASP.NET成员资格中使用的表。我使用aspnet_regsql.exe生成了表,然后将它们作为CREATE脚本编写,然后将它们组合到我的单个Tarantino sql文件中。
在运行我的NAnt构建脚本时,当试图从它试图删除的数据库中删除所有连接时,drop database命令会阻塞。
删除数据库DBName的连接 调用在执行Transact-SQL语句或批处理时发生的异常。 只能调用用户进程。
这将导致以下create database步骤失败,因为数据库仍然存在,并且不会应用新的更新:
ManageSqlDatabase: 使用路径\to\source\src\数据库中的脚本在本地主机上创建DBName 生成失败-1次非致命错误,0次警告 内部误差 Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行Transact-SQL语句或批处理时发生异常.-> System.Data.SqlClient.SqlException:数据库'DBName‘已经存在。选择不同的数据库名称。
某些系统进程总是在脚本运行后很好地连接到数据库上。我试过在不同的机器上运行这个程序,同样的问题也存在。我也尝试过运行一个不同的Tarantino项目,每次都运行得完美无缺。我甚至创建了一个虚拟更新文件(它添加了表Foo、Bar等),该文件也没有问题地运行。问题似乎源于为ASP.NET成员资格表创建表脚本。
您可以找到运行在PasteBin的separated脚本的副本(由于它的长度而与post分离)。
发布于 2010-07-07 04:13:16
那将是塔伦蒂诺的一个错误。如果您查看DropConnections.sql,您会发现作者已经陷入了一个古老的神话,即任何高于50的会话都是用户会话。识别用户会话(因此是可杀死的会话)的正确方法是检查sys.dm_exec_sessions中的sys.dm_exec_sessions列。
https://stackoverflow.com/questions/3189830
复制相似问题