2011-10-28 4 views
1

C#에서 (SQL) 데이터베이스의 사용 된 크기를 검색하는 가장 좋은 방법은 무엇입니까? 데이터베이스의 연결 문자열에 액세스 할 수 있으며 데이터베이스에 대한 dbadmin 액세스 권한이 있다고 가정합니다.데이터베이스의 사용 된 크기를 검색하는 방법은 무엇입니까?

This 장소에서 Microsoft.SqlServer.Smo.dll을 사용하는 것이 좋습니다. 그러나 System.Data 자체에서 Sql * 네임 스페이스를 사용하여이 작업을 수행 할 수 있는지 알고 싶습니다. (예 : SqlConnection, DbConnection 등)

+1

정확히 '데이터베이스의 크기는'무엇

이 SO 질문을 참조하십시오? 파일 크기는? –

+0

예, .mdf 및 .ldf 파일을 의미합니다. – Santhosh

+0

죄송합니다. Microsoft.SqlServer.Smo.dll을 사용하면 무엇이 문제입니까? 나는 Microsoft.SqlServer.Smo.dll의 팬이 그것을 사용하여 너무 많은 DB 도구를 개발했습니다. –

답변

4

sp_spaceused은 할당 된 공간과 사용되지 않은 공간을 반환합니다. (http://msdn.microsoft.com/en-us/library/ms188776.aspx), 후자를 전자에서 뺀 다음 실제 사용 된 공간을 가져옵니다.

EXEC sp_spaceused 

SQL Server 변형의 경우.

은 그냥 연결에서 파일 이름을 검색 할 수 있습니다 연결된 데이터베이스에 대해이 SPROC

how to query sql server database size

+0

이것은 처음에는 데이터베이스에 할당 된 총 크기만으로도 내 경우에는 3500MB입니다. 그러나 나는 단지 12 메가 바이트를 사용하고 나머지는 모두 무료입니다. 얼마나 많이 사용하고 얼마나 많은 돈을 가지고 있는지 정확히 알고 싶습니다. 이견있는 사람? SQL Server 관리 Studio에서 데이터베이스를 마우스 오른쪽 단추로 클릭하면이 여유 공간 정보를 볼 수 있습니다. – Santhosh

+0

sp_spaceused를 설명하도록 업데이트 됨 –

+0

ok; 알았다; 이제 작동합니다! reader [ "unallocated space"]는 할당되지 않은 공간을 얻습니다. – Santhosh

4

을 DbConnection을 생성하고 실행합니다. 이를 통해 .ldf 파일 이름을 구성하고 System.IO.File을 사용하여 파일 크기를 가져올 수 있습니다.

'정상적인'서버 등록 dbs에 대해서는 잘 모릅니다.

+0

일단 .mdf 파일 이름을 만들고 System.IO.File API를 사용하여 파일 크기를 가져 오면 초기 할당 크기가 사용되고 현재 사용되는 크기가 아닙니다. – Santhosh

4

당신은 단지 정보를 얻기 위해 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; 
+0

SQL Server 2005 이상에서는 대신 "SELECT * FROM sys.database_files"를 사용하는 것이 좋습니다. "오래된"sysobjects 및 sysfiles 카탈로그 뷰는 조만간 제거 될 것입니다 .... –

+1

@marc_s : thanks 귀하의 정보로 답변을 업데이트했습니다. (나는이 업데이트를 몇 시간 전에 실제 업데이트 후에 추가하고 싶었다. 그러나 우리 회사는 연결 문제로 고생했다. 그래서 여기에 우리가 간다.) –

관련 문제