2009-09-11 80 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下载