找出需要创建多少空间索引的公式是什么?sql server 2005快速空间创建索引公式所需的空间
重要提示:我们使用sql server express 2005.所以4GB是限制。因此,这个问题。 不受限制自动增长日志文件不是一个选项。下面的t-sql伪代码将进一步解释。
int spaceNeeded =
FN_COMPUTE_SPACE_NEEDED_TO_CREATE_UNCLUSTERED_INDEX(MyTableName, MyColumnName)
这是一个功能上面,我停留在编写代码时这个存储过程 我想我可以与信息处理所有的下面在MSDN上提供等。在此感谢
While(GetDBSpaceAvailable() < spaceNeeded)
{
purge some data (go thru all tables and delete data logically)
}
create the index we need
CREATE NONCLUSTERED INDEX [IX_NonClustered_MyTable] ON [dbo].[MyTable]
( [MyColumn] ASC
)
任何指针问候。希望这是一个重复,但在我搜索时找不到任何东西。 谢谢
UPDATE:解决方案,为我工作使用亚伦的建议。 (超过指数占据的空间现在再增加1.2倍)。因此,我基本上清除了最旧的数据,直到空间可用空间大于当前索引大小的1.2到1.5倍(由sp_spaceused表名称报告)。然后创建索引。
你说“不受限制的日志文件autogrow不是一个选项。”我不是一个大的Express用户,但是您确定日志文件大小是计算的一部分吗? (我没有运行任何测试,但我确信它不是。)你确定这与你的问题无关吗?运行此操作时是否看到大量的日志使用情况,数据文件扩展或两者? –
感谢Aaron和JNK。我将检查当我尝试在完整或几乎完整的express数据库上创建索引时收到的错误消息。稍后会在这里发布错误。我们在生产中使用Express db来降低成本。逻辑清除旧数据时,它最大。我们有一种情况,我们需要升级我们的快速数据库的某个报告应用程序的索引,那就是背景。 – Gullu
这里是微软用户友好的错误消息:)当我尝试创建索引消息1105,级别17,状态2,行1 无法为数据库'MyDB'中的对象'dbo.SORT临时运行存储:422212493901824'分配空间因为'PRIMARY'文件组已满。 通过删除不需要的文件,删除文件组中的对象,向文件组添加其他文件或为文件组中的现有文件设置自动增长来创建磁盘空间。 – Gullu