У меня большая база данных 1,5 ТБ, в которой содержатся данные изображений. Был реализован процесс архивирования, в результате которого была удалена большая часть данных. Я хочу уменьшить размер файла данных.
Я использую Shrink File
диалоговое окно из пользовательского интерфейса SSMS 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&Evt+ 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 ExecutionType) в Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery (StringCollectionServerConnection.ExecuteNonQuery (StringCollectionSqlCommandager.ExecuteNonQuery) в Microsoft sqlCommandager.ExceptionMecutionType (Запросы 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, логическое sendToPipe) в System.Data.SqlClient.SqlCommand.ExecagementNonQuery () в Microsoft.SqanlverConlver (). ExecuteNonQuery (String sqlCommand, ExecutionTypes executionType)
Какой результат вы получите, запустив команду DBCC SHRINKFILE вручную?
Я отказался от усадки и начал исследовать мои варианты при переходе к новому файлу. На этот вопрос был дан ответ с предложением, которое решило мою исходную проблему здесь.
Используя Reorganize pages before releasing unused space
небольшими кусками сделали свое дело. Как только я немного разобрался, я смог использовать большие куски по 100 ГБ +.
Вероятно, у вас есть веская причина не перемещать таблицу в новую файловую группу.
Убедитесь, что все вспомогательные процессы (агент SQL, доставка журналов, репликация, зеркалирование БД, сторонние приложения и т. Д.) Также отключены.