2008-10-02 1 views
1

폴더 크기를 가져와 보고서 (SSRS)에 정보를 표시해야합니다. 많은 데이터베이스 (루프!)에 대해이 작업을 수행해야합니다. 이 DB는 웹 사이트의 백엔드입니다. 누구든지 전에 이것을 했습니까? 샘플이나 올바른 방향을 가르쳐 주시겠습니까? xp_filesize와 같은 것이 올바른 해결책입니까? 도움!SSRS 2005 도움말 - TSQL 내에서 파일 크기를 가져와야합니다 (열에 지정된 경로). 누군가?

답변

1

는 질문 Tomalak의 반응을 보면, 내가보고 서버가 DB에서 개최 된 폴더에 도달 할 수 있으리라 믿고있어 : 첫째로 다시 당신을 얻을 수있는 쿼리를 설정

의 결과를-설정 경로 -이 부분에 아무 문제가 없다고 가정합니다. 다음은 보고서에 사용자 정의 코드 함수를 추가해야합니다. http://msdn.microsoft.com/en-us/library/ms155798.aspx -이 함수는 폴더 경로를 매개 변수로 사용하고 폴더 크기를 다시 전달합니다. 코드를 보고서에 임베드하려면 VB.Net에 작성해야합니다. 그렇지 않으면 DLL을 코딩하여 가져올 수 있습니다.

예제 VB.Net 코드 블록 (예 : .

=Code.GetFolderSize(Fields!FolderPath.Value) 

: System.IO와 접두사 객체) http://www.freevbcode.com/ShowCode.asp?ID=4287

Public Shared Function GetFolderSize(ByVal DirPath As String, _ 
    Optional IncludeSubFolders as Boolean = True) As Long 

    Dim lngDirSize As Long 
    Dim objFileInfo As FileInfo 
    Dim objDir As DirectoryInfo = New DirectoryInfo(DirPath) 
    Dim objSubFolder As DirectoryInfo 

Try 

'add length of each file 
    For Each objFileInfo In objDir.GetFiles() 
    lngDirSize += objFileInfo.Length 
    Next 

    'call recursively to get sub folders 
    'if you don't want this set optional 
    'parameter to false 
If IncludeSubFolders then 
    For Each objSubFolder In objDir.GetDirectories() 
    lngDirSize += GetFolderSize(objSubFolder.FullName) 
    Next 
End if 

Catch Ex As Exception 


End Try 

    Return lngDirSize 
End Function 

이제, 당신의 보고서에서 테이블에, 당신은 폴더 크기를 같은 표현 뭔가를 보여 셀 거라고 이 방법이 수동으로 열어 본 보고서의 경우 효과적 일지는 모르겠지만 작은 결과 집합이나 전자 메일로 전달되는 예약 보고서를 얻으려면 어떻게해야합니까?

오,이 조각을 시사은 RS 내에서 System.IO를 사용 권한 문제로 실행 '할 수있다'두 개의 조각으로 http://blogs.sqlxml.org/bryantlikes/pages/824.aspx

0

시나리오에서 누가해야하는지 명확히 할 수 있습니까? SQL Server에서 정보를 얻길 원합니까, 아니면보고 서버에서 원하는 정보를 원합니까?

"폴더 크기"란 정확히 무엇을 의미합니까? "하나의 폴더, 각 파일의 합계"가 충분합니까? 아니면 재귀 적이어야합니까? 어느 쪽이든, 난 작은 사용자 정의 .NET 기능에 대한 System.IO.Directory을 사용하고 그것의 친척에 갈거야.

+0

Tomalak, SSRS 보고서에서 폴더의 크기를 표시하고 싶습니다. 폴더의 경로는 SQL Server DB에 저장됩니다. "System.IO.Directory"가 올바른 방향이라면 누군가가 SSRS 내부에서 코드를 작성하는 방법에 대한 예제를 제공 할 수 있습니까? 감사. – MarlonRibunal

0

내가 생각 하는데요 분할이, 어쩌면 Windows 서비스가 디렉토리를 검색하고, 데이터를 데이터베이스에 집계 한 다음 SSRS를 사용하여 데이터베이스를 평소대로보고하십시오.

이 제안은 master..xp_filesize를 사용하는 것이므로 SQL Server 서비스가 시작되는 계정이 스캔 할 경로에 액세스해야합니다. 일단 다른 컴퓨터의 경로에 액세스하면 보안상의 영향을 덜 받게 될 것입니다.

희망이 SSRS에서

0

을하는 데 도움이 사용자 지정 데이터 확장의 도움으로이 작업을 수행 할 수 있습니다. U는 폴더 이름과 데이터 소스에 대한 경로를 줄 필요가 파일 및 관련 정보를 가져 오지 추가 참고

를 표시하고 사용자가 I이 이전을 완료 한이 http://www.devx.com/dbzone/Article/31336/0/page/4

사용 DLL 것입니다.

참고 : 보고서 디자이너 및 보고서 관리자 구성 파일을 관련 변경해야합니다.