我的VS 2010项目中有AdventureWorks数据库mdf文件。无论如何我可以在AdventureWorks数据库中创建Membership表。我知道我可以在SQL SERVER 2008中分离数据库附件。创建表然后分离。但我没有SQL SERVER 2008,我想看看是否可以使用命令行工具完成。
我尝试了这个但没有用:
aspnet_regsql.exe -d AdventureWorks.mdf -A mr -E -S .\SQLEXPRESS
更新:
如果我右键单击并查看AdventureWorks.mdf数据库的属性,则显示名称为
“C4BE6C8DA139A060D14925377A7E63D0_64A_10 \ ADVENTUREWORKSWEBFORMS \ ADVENTUREWORKSWEBFORMS \ ADVENTUREWORKS \ APP_DATA \ ADVENTUREWORKS.MDF”
这很有意思!
答案 0 :(得分:1)
我认为问题在于您是在尝试在分离的SQLExpress数据库上执行此操作。您可能拥有另一个版本的AdventureWorks,它实际上是永久附加的,这就是您没有看到任何错误的原因。
请尝试以下方法:
1)如果您还没有SQL Server Management Studio [Express]的副本,get it - 它将比Visual Studio更容易使用。
2)运行以下脚本:
USE AdventureWorks
SELECT name, physical_name
FROM sys.database_files
3)如果出现错误,指出数据库不存在,请跳至步骤5.如果您看到physical_name
条目与app_data
文件夹中的本地不匹配,请继续下一步。如果您在同一个app_data
文件夹中看到 的条目,那么我很难过。
4)运行以下命令以分离现有数据库:
EXEC sp_detach_db 'AdventureWorks'
5)运行以下命令为您的应用附加SQL Express DB:
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'
分离数据库(如果应用程序依赖于其连接字符串中的ad-hoc附件,则需要执行此操作,我打赌它会这样做。)
答案 1 :(得分:1)
运行此命令。将C:\ My Project \ APP_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"