2010-04-19 36 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