2012-04-15 66 views
0

我想開發一個簡單的使用數據庫的C#應用​​程序。我目前使用MS Server 2008,但我發現了一個可移植性問題,因爲在不同計算機上運行應用程序需要安裝MS Server。另外,我的數據庫使用存儲過程。使用存儲過程的本地數據庫的C#應用​​程序

我可以使用哪些其他數據庫類型來克服此問題(它必須使用存儲過程)?

如果我要使用MS Server 2008,假設它安裝在每臺PC上,我如何複製我的.mdf文件才能訪問? (?即在應用負載安裝)

UPDATE

this website,我發現下面的連接字符串:

裝上連接一個數據庫文件到本地SQL Server Express實例...

Server=.\SQLExpress;AttachDbFilename=c:\asd\qwe\mydbfile.mdf;Database=dbname; Trusted_Connection=Yes; 

我推測這會從我的文件夾複製.mdf文件。 因此,我使用了下面的連接字符串,但沒有成功......

Server=.\SQLExpress;AttachDbFilename=...... database path.... ;Database=TrieDB.mdf; Trusted_Connection=Yes; 

Directory lookup for the file "... database path... " failed with the operating system error 5(Access is denied.). 
Cannot attach the file '... database path...' as database 'TrieDB.mdf' 
+0

爲什麼你沒有你的應用程序連接到一個集中的sql服務器,而不是在每個工作站上安裝sql服務器? – 2012-04-15 14:29:09

+0

爲什麼你需要本地數據庫的存儲過程?只是好奇 - 這聽起來不像一個有利的設計。 – tsells 2012-04-15 15:06:59

+0

另外,多麼關鍵 - 如何*真正*關鍵 - 是使用存儲過程的應用程序 - 我明白你現在擁有它們。此外,此多用戶軟件或每個應用程序實例的單個用戶? – Murph 2012-04-15 15:18:03

回答

0

您可以分離數據庫,拷貝過來附加到目標數據庫的MDF文件。

+0

感謝您的答覆隊友..和想法如何我可以實現這一點?與連接字符串有關嗎? – user1317277 2012-04-15 15:27:58

1

大多數「認證」數據庫引擎要求您實際安裝引擎。
大多數「認證」數據庫引擎都可以使用存儲過程。

爲了在更多機器上擁有.mdf文件,您可以簡單地複製它,然後使用sql管理工作室將文件附加到引擎上,但如果您計劃將應用程序分發到該引擎,那麼這不是理想的解決方案很多地方,理想的解決方案是創建一個安裝包並修復它在安裝時自動完成並在卸載時自動撤消。

恕我直言:你堅持了去centeralized解決存儲過程 - 這樣做的通知,這是一個相當罕見的戰術 - 它有一個錯誤的道路的味道.. 但我不能肯定,除非你提供一些更多的信息。

+0

該應用程序的目標是作爲後綴特里結構,其中文檔在數據庫中編入索引並在需要時進行搜索。爲了提高性能並避免爲每個待索引(或搜索)的信件創建無數連接,我選擇使用存儲過程並減少連接數(即提高性能)。 – user1317277 2012-04-15 15:26:58

+0

好吧,我分享你的悲傷:) 我可以理解爲什麼你需要很多數據庫,但不知道爲什麼你需要存儲過程。如果你打開一個調用STP的連接或者執行一個動態創建的sql腳本來完成任務,我認爲這不重要。在這兩種情況下,您都使用相同數量的連接。不使用STP的好處可能很明顯,所以我會跳過它,實體框架可以通過將您的sql需求的權力直接帶到代碼中,讓您的生活更輕鬆。 – 2012-04-15 16:12:50

1

真的有兩種通用設計可以完成您所描述的內容。要麼有一個集中的數據庫,可以訪問應用程序(和/或多個應用程序)的所有副本,也可以創建一個完整的數據庫安裝包(通常只能由單個應用程序訪問)。個人而言,如果您不想或不可以使用集中式數據庫解決方案,我會建議您改變有關存儲過程的理念並查看SQL Server Compact。我發現this article討論了SQL Server Compact沒有sprocs的原因,我認爲這對你是有用的,即使你決定真的需要它們。這就是說,如果你需要在你的應用程序中安裝數據庫,你可以在Visual Studio中創建一個setup package,你也可以使用WiX來查看。

+0

感謝您的回覆和建議..最初我使用MS SQL CE,但正如你所說,他們不使用sprocs ..由於所需的最大速度,然後我選擇MS SQL Server與sprocs,並獲得的速度是大幅度地:/如果沒有找到解決方案,我會保留安裝包方法作爲替代方案。非常感謝您的建議。 – user1317277 2012-04-15 15:40:50

+0

@ user1317277,我猜你看到從完全安裝的rdbms比從sprocs看到更多的性能收益...但是無論哪種方式,從用戶的角度來看,獲取所需的所有設置的最簡單方法是使用某種形式安裝包。我認爲你不會擺脫這種情況。 – chezy525 2012-04-15 16:07:25

相關問題