Как восстановить используемый размер базы данных? - PullRequest
1 голос
/ 28 октября 2011

Каков наилучший способ получить используемый размер базы данных (sql) в c #?У меня есть доступ к строке подключения базы данных, и я предполагаю, что у меня также есть доступ dbadmin к базе данных.

В этом месте предлагается использовать Microsoft.SqlServer.Smo.dll, однако яХотелось бы узнать, возможно ли это сделать с помощью пространств имен Sql * в самой System.Data?(например, SqlConnection, DbConnection и т. д.)

Ответы [ 4 ]

4 голосов
/ 28 октября 2011

Вы можете просто запросить SQL-сервер, чтобы получить эту информацию:

USE <databasename>;
GO

/* get the database size, including the log file */
exec sp_spaceused;

/* get the size of the table */
exec sp_spaceused <tablename>;

/* the actual database file sizes */
SELECT * FROM sys.database_files;
4 голосов
/ 28 октября 2011

Для прикрепленной базы данных вы можете получить имя файла из соединения.При этом вы можете также создать имя файла .ldf и использовать System.IO.File для получения размеров файлов.

Для «обычных» зарегистрированных на сервере БД я не знаю.

4 голосов
/ 28 октября 2011

sp_spaceused возвращает выделенное и неиспользуемое пространство. (http://msdn.microsoft.com/en-us/library/ms188776.aspx), вычтите последнее из первого, чтобы получить фактическое использованное пространство.

EXEC sp_spaceused

Для вариантов сервера sql.

Просто создайте DbConnection и выполните это sproc

как запросить размер базы данных сервера sql

2 голосов
/ 28 октября 2011

Я не думаю, что есть какие-либо прямые способы сделать это через пространства имен Sql. *, Но вы можете использовать инфраструктуру ADO.NET для запуска хранимой процедуры sp_spaceused (Transact-SQL) .

См. Этот вопрос SO: как запросить размер базы данных сервера sql

...