使用 Tarantino 数据库管理创建 ASP.NET 成员资格表
我正在将 Tarantino 数据库管理引入到一个项目中,该项目具有全新的数据库架构。唯一的更改(位于 0001_InitialSchema.sql
中)是创建 ASP.NET 成员资格中使用的表。我使用 aspnet_regsql.exe
生成了这些表,然后将它们编写为 CREATE TO 脚本,然后将它们合并到我的单个 Tarantino sql 文件中。
运行我的 NAnt 构建脚本时,drop database
命令在尝试删除它要删除的数据库中的所有连接时会阻塞。
删除数据库 DBName 的连接
[调用]执行 Transact-SQL 语句或批处理时发生异常。
[调用]只能杀死用户进程。
这会导致以下创建数据库
步骤失败,因为数据库仍然存在,并且不会应用新的更新:
管理Sql数据库:
使用路径\to\source\src\Database 中的脚本在本地主机上创建 DBName
构建失败 - 1 个非致命错误,0 个警告
内部错误
Microsoft.SqlServer.Management.Common.ExecutionFailureException:执行 Transact-SQL 语句或批处理时发生异常。 ---> System.Data.SqlClient.SqlException:数据库“DBName”已存在。选择不同的数据库名称。
脚本运行后,某些系统进程始终保持附加到数据库。我尝试在不同的机器上运行它,并且存在同样的问题。我还尝试过运行不同的塔伦蒂诺项目,并且每次都运行得完美。我什至创建了一个虚拟更新文件(其中添加了表 Foo、Bar 等),该文件也运行没有问题。该问题似乎源于 ASP.NET 成员资格表的 CREATE TABLE 脚本。
您可以在 PasteBin 中找到运行的 SQL 更新脚本的副本(由于其长度而与帖子分开)。
I'm introducing Tarantino Database Management into a project, which has a brand new database schema. The only change (located in 0001_InitialSchema.sql
) is the creation of the tables used in ASP.NET Membership. I generated the tables using aspnet_regsql.exe
and then scripted them as CREATE TO scripts, then combined them into my single Tarantino sql file.
Upon running my NAnt build script, the drop database
command chokes when trying to drop all connections from the database it's trying to drop.
Dropping connections for database DBName
[call] An exception occurred while executing a Transact-SQL statement or batch.
[call] Only user processes can be killed.
This causes the following create database
step to fail since the database still exists, and no new updates will be applied:
ManageSqlDatabase:
Create DBName on localhost using scripts from path\to\source\src\Database
BUILD FAILED - 1 non-fatal error(s), 0 warning(s)
INTERNAL ERROR
Microsoft.SqlServer.Management.Common.ExecutionFailureException: An exception occurred while executing a Transact-SQL statement or batch. ---> System.Data.SqlClient.SqlException: Database 'DBName' already exists. Choose a different database name.
Some system process always remains attached to the database well after the script has run. I've tried running this on different machines and the same problem exists. I've also tried running a different Tarantino project, and it runs flawlessly every time. I even created a dummy update file (which added tables Foo, Bar, etc) which also ran without issues. The problem seems to stem from the CREATE TABLE scripts for the ASP.NET Membership tables.
You can find a copy of the SQL update script run at PasteBin (separated from post due to its length).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这显然是塔伦蒂诺的一个错误。如果您查看 DropConnections.sql< /a> 你会发现作者已经陷入了一个古老的神话,即任何超过 50 的会话都是用户会话。识别用户会话(以及可 KILL 会话)的正确方法是检查
sys.dm_exec_sessions
。That would be a bug in Tarantino aparently. If you look into DropConnections.sql you'll see that the author has fallen for the old myth that any session above 50 is an user session. The correct way to identify user sessions (and thus KILL-able sessions) is to check the
is_user_process
column insys.dm_exec_sessions
.