2010-04-19 84 views
4

我的VS 2010项目中有AdventureWorks数据库mdf文件。无论如何,我可以在我的AdventureWorks数据库中创建Membership表。我知道我可以在SQL SERVER 2008中分离数据库连接。创建表并分离。但是我没有SQL SERVER 2008,我想查看是否可以使用命令行工具完成。在附加数据库中创建成员表,SPROC,视图

我试过,但没有用:

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

更新:

如果我点击右键,看到AdventureWorks.mdf数据库的属性,然后它显示的名称

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

这很有趣!

+0

为什么它没有用?当你尝试时发生了什么? – Aaronaught 2010-04-19 16:58:34

+0

它运行并说“完成”,但是当我检查数据库表时没有创建任何东西。没有表格,视图或存储过程。 – azamsharp 2010-04-19 17:09:21

+0

数据库是永久连接的,还是将它连接到连接字符串中?另外,这个“.mdf”看起来很可疑,通常你不会在数据库名称中包含它。 – Aaronaught 2010-04-19 17:26:48

回答

1

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

请尝试以下方法:

1)如果您还没有SQL Server Management Studio中[快递],get it的副本 - 这将是更容易使用这个比的Visual Studio。

2)运行以下脚本:

USE AdventureWorks 

SELECT name, physical_name 
FROM sys.database_files 

3)如果您收到指出数据库不存在,请跳到第5步。如果您看到physical_name项不匹配本地错误在您的app_data文件夹中,继续下一步。如果您在app_data文件夹中看到的条目,那么我很难过。

4)运行以下命令以脱离现有的DB:

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'再次分离数据库(如果应用程序依赖于其连接字符串中的临时附件,我打赌它会这样做)。

+0

我可以在不使用SS 2008 Express的情况下执行此操作,并且只能使用aspnet_regsql的命令行选项吗? – azamsharp 2010-04-22 00:35:02

+0

@azam:不,aspnet_regsql工具通常不支持'AttachDbFileName'连接字符串关键字或ad-hoc数据库,并且您将无法使用Visual Studio中特定的'EXEC'命令。您无需安装整个SS 2008 Server,只需安装Management Studio(SSMSE)。如果您运行SQL Server 2005 Express,2005版本也很好。或者,您可以使用任何其他SQL工具 - 旧查询分析器,蟾蜍,但Visual Studio和'aspnet_regsql'工具不会削减芥末,据我所知。 – Aaronaught 2010-04-22 03:07:09

+0

还有一个选项,它只是将应用程序的连接字符串改为使用永久连接的数据库。你遇到的问题是,你正在尝试针对与你的应用程序使用的数据库不同的数据库运行'aspnet_regsql'。如果您创建一个正常的,附加的数据库,您可以从Visual Studio中执行此操作,那么您可以针对该数据库运行该工具。 – Aaronaught 2010-04-22 03:09:25

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" 
+0

我第一次看到这个,工作完美。谢谢! – mCasamento 2012-07-02 14:28:11