2009-09-11 79 views
0

我正在爲我的Web應用程序使用SQL Server。我如何知道一個插入查詢失敗,因爲如果你想找到你的內存使用情況數據庫服務器磁盤內存已滿

exec sp_spaceused 

這會給你你有多少內存用於特定數據庫的數據庫服務器的內存磁盤已滿

+0

你打算如何知道磁盤已滿? – 2009-09-11 07:33:24

+0

有沒有一種方法可以模擬在Visual Studio中擁有完整硬盤的想法,而不必實際或物理地讓硬盤滿了? :)我正在做一個單元測試,然後我想在測試中包含該場景。 – cedric 2009-09-11 07:52:11

回答

2

您可以通過禁用數據庫上的自動增長功能(它是文件選項卡上的數據庫屬性中的複選框)並填充數據庫來模擬此功能。錯誤將是相同的。

ALTER DATABASE YourDatabase 
MODIFY FILE (name='YourFile' MAXSIZE=50MB); 
+0

thnks這....但有沒有辦法自動設置此屬性?通過代碼會好得多 – cedric 2009-09-14 03:10:18

+0

當然,我會把代碼放在我的答案中。您需要將maxsize值設置爲文件的當前大小,以使其不再增長。 – mrdenny 2009-09-14 05:22:28

+0

正是我所需要的......這解決了一切...... Thnx .. :) – cedric 2009-09-14 05:55:13

4

錯誤代碼,你會回來將指示磁盤已滿:1105(主文件組已滿)或9902(日誌文件已滿)

1

檢查從SQL Server返回錯誤代碼當您嘗試插入到數據庫中。

有了這個錯誤,你可以決定怎麼做。 (例如,嘗試再次插入, 嘗試釋放服務器上的某些內存)另外,如果您尚未安裝,請將Insert語句放入事務中,以便在出現錯誤時進行回滾。

+0

其實我正在找一種方法來模擬擁有一個完整磁盤的場景。當我找到一種方法,我希望我可以測試它通過它會拋出異常,如果有任何 – cedric 2009-09-11 07:54:03

1

我想你可以相信,如果磁盤已滿,SQL服務器將返回錯誤代碼:)。

您可以讓您的測試代碼認爲它正在與SQL服務器通信,但它會與您的一些假對象進行通話,這些對象將用您要測試的錯誤代碼進行響應。

有框架可以幫助你。其中之一是Rhino Mocks,你可以從http://ayende.com下載