SSRS 2005 ajudam - necessidade de obter o tamanho do arquivo de dentro TSQL (caminho especificado na coluna). Qualquer um?

StackOverflow https://stackoverflow.com/questions/164324

Pergunta

Eu preciso para obter o tamanho da pasta e exibir a informação em um relatório (SSRS). Eu preciso fazer isso para um número de bancos de dados (circular!). Estes da DB são backends sites. Alguém já fez isso antes? Você pode por favor me aponte para algumas amostras ou direção certa? Does xp_filesize e similares a solução certa? Ajuda!

Foi útil?

Solução

Olhando para a pergunta e resposta de Tomalak, e eu estou supondo que o servidor de relatórios será capaz de alcançar as pastas realizados no DB:

Em primeiro lugar configurar a consulta para obter de volta o resultado-conjunto de caminhos - Eu suponho que você não terá nenhum problema com esta parte. Em seguida, você precisa adicionar uma função de código personalizado para seu relatório: http: / /msdn.microsoft.com/en-us/library/ms155798.aspx - Esta função irá tomar o caminho da pasta como um parâmetro, e passar de volta o tamanho da pasta. Você vai ter que escrever em VB.Net se você deseja incorporar o código no relatório, ou você pode codificar uma DLL e trazer isso em.

Um bloco de código exemplo VB.Net (Lembre-se que você pode precisar de objetos de prefixo com 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

Agora, em seu relatório, em sua mesa, você teria para a célula que mostra o tamanho da pasta uma expressão algo como:

=Code.GetFolderSize(Fields!FolderPath.Value)

Eu duvido que essa abordagem será performance para um relatório manualmente-visto, mas você pode fugir com ele para pequenos conjuntos de resultados, ou um relatório programado entregue por e-mail?

Oh, e esta peça sugere que você 'pode' correr em questões permissões usando System.IO de dentro RS: http://blogs.sqlxml.org/bryantlikes/pages/824.aspx

Outras dicas

Você poderia esclarecer quem deve fazer o que no seu cenário? Você quer SQL Server fazer chegar a informação ou você quer Reporting Server fazer isso?

O que exatamente você quer dizer com "o tamanho da pasta"? É "uma pasta, soma-se cada arquivo" o suficiente ou será que precisa ser recursiva? De qualquer maneira, eu iria para um pouco de função personalizada .NET que usos System.IO.Directory e é parentes.

Eu consideraria dividindo este em duas partes, talvez um serviço do Windows para digitalizar os diretórios e agregar os dados em um banco de dados, então use SSRS para relatório sobre o banco de dados como de costume.

A razão eu sugiro que isso é usar master..xp_filesize e é parente da conta do serviço SQL Server está começando com acesso necessidades para os caminhos a serem verificados. Uma vez que isso se transforma em acesso a caminhos em outras máquinas que eu seria menos confortável com as implicações do que de segurança.

Espero que isso ajude

Em SSRS você pode fazer isso com a ajuda de extensão de dados personalizado. U precisa dar o caminho para a fonte de dados como o nome da pasta e vai retrive seus arquivos e suas informações relacionadas e exibido

Para mais referência e personalizada dll usar este http://www.devx.com/dbzone/Article/31336/ 0 / page / 4

Eu tenho feito isso antes.

Nota: você tem que fazer alterações relativas ao relatório arquivos de configuração Gerenciador de Relatórios Designer e

.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top