2008-11-26 39 views
1

我有一個使用SQL Express 2005數據庫的簡單應用程序。當用戶關閉應用程序時,我想通過在另一個目錄中創建副本來選擇備份數據庫。但是,當我嘗試這樣做時,我得到「進程無法訪問文件'... \ Pricing.MDF',因爲它正在被另一個進程使用。」我關閉了連接,放置了連接,將其設置爲空,並且GC.Collect(),但它沒有區別。我的連接字符串是「Data Source =。\ SQLEXPRESS2005; AttachDbFilename = | DataDirectory | \ Pricing.mdf;集成安全性= True;用戶實例= True」,我只是始終使用相同的連接。我沒有看到我可以在哪裏分離數據庫來對付連接字符串中的附件。如何發佈sql express數據庫?

1 - 如何發佈此事? 2 - 有沒有比複製數據庫更好的方法?該應用僅適用於我的丈夫,所以如果他確實需要從備份恢復,我將能夠處理它。

謝謝!

回答

4

您不想直接複製mdf,因爲SQL保留了事務日誌中的大部分更改,查看運行某些查詢後的修改時間,它不直接寫入文件。我在設置rsync作業時注意到了這一點。

讓SQL生成備份更安全,更理想,單用戶或多用戶。你可以提供一個鏈接來調用T-SQL,你完全可以就自動爲源數據庫和目標文件夾的功能:

BACKUP DATABASE [mydatabasename] 
TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\Scheduled Task Backups\mydatabasename-backup' WITH NOFORMAT, NOINIT, NAME = N'mydatabasename-Full Data 

SQL 2005年引進了另一種T-SQL語法要做到這一點,對於生活我無法找到它。但是有辦法通過M $$ SQL來完成,而沒有完整的數據庫服務器。

0

this post中有一個示例,顯示瞭如何備份程序中的SQL Express數據庫。

0

如果這是一個單個用戶或應用程序或只讀數據庫,不要使用SQL Server Express。這是SQL Server Compact的用途。這將解決您的備份問題並簡化部署。

+0

這不會起作用,因爲我喜歡我的存儲過程。但這是一個非常有趣的選項 - 謝謝! – CindyH 2009-01-23 21:03:46

+0

然後使用另一個支持SP的進程內引擎。作爲服務運行的數據庫僅適用於本地桌面應用程序。 – 2009-01-25 20:47:57

相關問題