SQL Server 收缩文件失败

SQL Server 收缩文件失败

我有一个 1.5 TB 的大型数据库,其中包含图像数据。已实施归档过程,删除了大部分数据。我想缩小数据文件的大小。

我正在使用Shrink FileSSMS 2008 用户界面中的对话框。我选择执行Release unused space,但操作在大约 30 秒后失败。我已确保没有与数据库的活动连接。错误虽然没有提供任何信息,但如下所示。

==================================

数据文件“DBNAME”收缩失败。(Microsoft.SqlServer.Smo)

------------------------------ 如需帮助,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.1600.22+((SQL_PreRelease).080709-1414+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Shrink+DataFile&LinkId=20476

------------------------------ 项目地点:

在 Microsoft.SqlServer.Management.Smo.DatabaseFile.Shrink(Int32 newSizeInMB,ShrinkMethod shrinkType)在 Microsoft.SqlServer.Management.SqlManagerUI.ShrinkDatabaseFiles.OnRunNow(对象发送者)

===================================

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)

------------------------------ 项目地点:

在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand,ExecutionTypes 执行类型)在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands,ExecutionTypes 执行类型)在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection 查询)在 Microsoft.SqlServer.Management.Smo.DatabaseFile.Shrink(Int32 newSizeInMB,ShrinkMethod shrinkType)

===================================

当前命令发生严重错误。结果(如果有)应被丢弃。(.Net SqlClient 数据提供程序)

------------------------------ 如需帮助,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.00.1600&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476

------------------------------ 服务器名称:SERVERNAME 错误编号:0 严重性:11 状态:0

------------------------------ 项目地点:

在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection)
在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException 异常,布尔 breakConnection)
在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream,BulkCopySimpleResultSet bulkCopyHandler,TdsParserStateObject stateObj)在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName,Boolean async)在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult 结果,String methodName,在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 处使用 Boolean sendToPipe 在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executiveType)

答案1

我已经放弃了心理治疗,并开始调查我的选择移动到新文件。这个问题的答案是,我在这里提出了一个建议,解决了我最初的问题。

使用Reorganize pages before releasing unused space小块就成功了。一旦我把它缩小一点,我就能够使用 100GB 以上的大块。

答案2

当您手动运行 DBCC SHRINKFILE 命令时您会得到什么输出?

答案3

您可能有不将表移动到新文件组的正当理由。

确保所有辅助进程(SQL 代理、日志传送、复制、DB 镜像、第三方应用程序等)也已禁用。

答案4

对我来说,重建碎片最大的表的索引后会缩小

我知道我从哪个表中删除了大部分数据,或者从统计数据中找到了它......

然后像这样打开该表

页面满载和碎片化[页面过满和碎片化]

重建它 重建聚集索引[重建聚集索引]

收缩数据文件:任务 | 收缩 | SQL Server Management Studio 中的文件,使用“在释放未使用的空间之前重新组织文件”

重建之后,收缩就可以起作用了。

相关内容