Я знаю, что файл журнала транзакций / ldf заполняется и увеличивается, и что я вижу, насколько он заполнен, запустив:
DBCC SQLPERF(logspace)
Существует ли соответствующая команда для проверки состояния файла данных / mdf?
Почему я заинтересован:
Я устраняю неполадки в простом приложении .NET, которое использует SqlBulkCopy для импорта данных. Обычно это работает нормально, но иногда происходит сбой приложения из-за тайм-аута / SqlException (см. Ниже). Я увеличил свойство BulkCopyTimeout, и это не решило проблему.
Просматривая журналы SQL Server, я вижу такие записи:
Автоматический рост файла 'MyDatabase' в
база данных MyDatabase была отменена
пользователь или тайм-аут после 29812
миллисекунды. Используйте ALTER DATABASE для
установить меньшее значение FILEGROWTH для
этот файл или явно установить новый
размер файла.
Это заставляет меня поверить, что мой файл данных должен увеличиваться (10% -ный рост == несколько ГБ) и что моя массовая копия терпит неудачу, пока она ожидает увеличения файла MDF.
Исключение .NET:
Необработанное исключение:
System.Data.SqlClient.SqlException:
Тайм-аут истек. Т
период истек до завершения операции или
сервер не
отвечать на запросы.
Заявление было прекращено.
в System.Data.SqlClient.SqlConnection.OnError (SqlException
исключение, Boolea
n breakConnection)
в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning (TdsParserStateObj
ect stateObj)
в System.Data.SqlClient.TdsParser.Run (RunBehavior
runBehavior, SqlCommand см
dHandler, SqlDataReader dataStream, BulkCopySimpleResultSet
НаверхКопияHandler, Tds
ParserStateObject stateObj)
в System.Data.SqlClient.SqlBulkCopy.WriteToServerInternal ()
в System.Data.SqlClient.SqlBulkCopy.WriteRowSourceToServer (Int32
ColumnCount
)
в System.Data.SqlClient.SqlBulkCopy.WriteToServer (DataTable
таблица, DataRowSt
съел rowState)