Sql server 在附加数据库中创建成员资格表、存储过程和视图

Sql server 在附加数据库中创建成员资格表、存储过程和视图,sql-server,asp.net-membership,Sql Server,Asp.net Membership,我在VS2010项目中有AdventureWorks数据库mdf文件。我可以在AdventureWorks数据库中创建成员资格表吗。我知道我可以在SQL SERVER 2008中分离数据库连接。创建表,然后拆离。但我没有SQLServer2008,我想看看是否可以使用命令行工具来实现这一点 我试过了,但没有用: aspnet_regsql.exe -d AdventureWorks.mdf -A mr -E -S .\SQLEXPRESS 更新: 如果我右键单击并查看AdventureWork

我在VS2010项目中有AdventureWorks数据库mdf文件。我可以在AdventureWorks数据库中创建成员资格表吗。我知道我可以在SQL SERVER 2008中分离数据库连接。创建表,然后拆离。但我没有SQLServer2008,我想看看是否可以使用命令行工具来实现这一点

我试过了,但没有用:

aspnet_regsql.exe -d AdventureWorks.mdf -A mr -E -S .\SQLEXPRESS
更新:

如果我右键单击并查看AdventureWorks.mdf数据库的属性,那么它的名称显示为

“C4BE6C8DA139A060D14925377A7E63D0_64A_10\ADVENTUREWORKSWEBFORMS\ADVENTUREWORKSWEBFORMS\ADVENTUREWORKS\APP_DATA\ADVENTUREWORKS.MDF”


这很有趣

我认为问题在于您试图在分离的SQLExpress数据库上执行此操作。您可能有另一份AdventureWorks副本,它实际上是永久附加的,这就是为什么您没有看到任何错误

请尝试以下操作:

1) 如果您还没有SQL Server Management Studio[Express]的副本,那么使用它比使用Visual Studio更容易

2) 运行以下脚本:

USE AdventureWorks

SELECT name, physical_name
FROM sys.database_files
3) 如果您得到一个表示数据库不存在的错误,请跳到步骤5。如果在
app\u data
文件夹中看到与本地不匹配的
physical\u name
条目,请继续下一步。如果您看到同一
app\u data
文件夹中的条目,那么我就被难住了

4) 运行以下操作以分离现有数据库:

EXEC sp_detach_db 'AdventureWorks'
5) 运行以下操作以连接应用程序的SQL Express数据库:

EXEC sp_attach_db 'AdventureWorks',
    'C:\inetpub\wwwroot\MyApp\App_Data\ASPNETDB.MDF',
    'C:\inetpub\wwwroot\MyApp\App_Data\ASPNETDB_log.ldf'
6) 使用最初使用的相同选项再次运行aspnet_regsql工具,但数据库名称末尾不包含
.mdf

7) 在SSMS[E]中验证表是否已创建


8) 使用EXEC sp_Detach_db'AdventureWorks'再次分离数据库(如果应用程序在其连接字符串中依赖临时附件,则需要执行此操作,我打赌它会这样做)。

运行此命令。将C:\My Project\APP\u DATA\aspnetdb.mdf替换为mdf文件的路径:

aspnet_regsql -A all -C "Data Source=.\SQLEXPRESS;Integrated Security=True;User Instance=True" -d "C:\MyProject\APP_DATA\aspnetdb.mdf"

为什么没有用?当您尝试这样做时发生了什么?它运行并显示“Finished”,但当我检查数据库表时,没有创建任何内容。没有表、视图或存储过程。数据库是永久附加的,还是在连接字符串中附加的?另外,该“.mdf”看起来可疑,通常您不会将其包含在数据库名称中。我如何检查它是否永久附加?它似乎是附加的,我在web.config中也有一个connectionstring。我尝试不使用.mdf,但结果仍然相同。上面写着跑步。。。。并在3秒钟内完成。数据库中没有创建任何内容。好的。。。如何验证数据库中没有创建任何内容?您是否使用SSMS/SSMSE?我强烈怀疑
aspnet_regsql
正在完成它的工作,但您没有在正确的数据库中查找它的输出。我可以不使用SS 2008 Express,只使用aspnet_regsql的命令行选项来执行此操作吗?@azam:No,
aspnet\u regsql
工具通常不支持
AttachDbFileName
连接字符串关键字或特殊数据库,您将无法使用Visual Studio中的那些特定的
EXEC
命令。您不需要安装整个SS2008服务器,只需安装ManagementStudio(SSMSE)。如果您运行的是SQLServer2005Express,那么2005版本也可以。或者您可以使用任何其他SQL工具—旧的查询分析器、Toad等等—但据我所知,Visual Studio和
aspnet_regsql
工具无法解决问题。还有一个选择,就是只更改应用程序的连接字符串,改为使用永久连接的数据库。您遇到的问题是,您试图针对与应用程序正在使用的数据库不同的数据库运行
aspnet\u regsql
。如果您创建了一个普通的、附加的数据库(可以从VisualStudio中执行),那么您可以对其运行该工具。