SSRS 2005 Hilfe - müssen Dateigröße innerhalb TSQL (Pfad in dieser Spalte angegeben) zu erhalten. Jemand?

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

Frage

Ich brauche die Ordnergröße zu erhalten und in einem Bericht (SSRS), um die Informationen anzuzeigen. Ich brauche dies für eine Reihe von Datenbanken zu tun (Schleife!). Diese DB sind Websites' Backends. Hat jemand dies getan, bevor? Können Sie mir bitte zu einigen Proben oder richtige Richtung? Hat xp_filesize und dergleichen die richtige Lösung? Hilfe!

War es hilfreich?

Lösung

Mit Blick auf der Frage und Tomalak Antwort, und ich gehe davon aus dem Berichtsserver in der Lage sein wird, die Ordner in der DB gehalten zu erreichen:

Zum einen die Abfrage einrichten, um Sie wieder die Ergebnismenge von Pfaden zu bekommen - ich nehme an, Sie keine Probleme mit diesem Teil haben werden. Als nächstes müssen Sie eine benutzerdefinierte Code-Funktion zu Ihrem Bericht hinzuzufügen: http: / /msdn.microsoft.com/en-us/library/ms155798.aspx - Mit dieser Funktion wird der Ordnerpfad als Parameter, und die Größe des Ordners übergeben zurück. Sie werden in VB.Net schreiben, wenn Sie den Code in dem Bericht einbetten möchten, oder Sie können eine DLL-Code und bringen das in.

Ein Beispiel VB.Net Codeblock (Denken Sie daran, Sie müssen Objekte mit System.IO Präfix.) 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

Nun, in Ihrem Bericht, in der Tabelle, dann würden Sie für die Zelle, die die Ordnergröße einen Ausdruck so etwas wie zeigt:

=Code.GetFolderSize(Fields!FolderPath.Value)

Ich bezweifle, dieser Ansatz für einen manuell betrachtet Bericht performant sein wird, aber Sie könnten damit für kleine Ergebnismengen oder ein geplanter Bericht geliefert per E-Mail erhalten weg?

Oh, und dieses Stück schlägt vor, Sie in Probleme mit Berechtigungen laufen 'können' System.IO aus RS mit: http://blogs.sqlxml.org/bryantlikes/pages/824.aspx

Andere Tipps

Könnten Sie klären, wer was in Ihrem Szenario tun soll? Haben Sie SQL Server wollen bekommen die Informationen oder möchten Sie Reporting Server das tun?

Was genau meinen Sie mit „Ordnergröße“? Ist „einen Ordner, jede Datei zusammenzufassen“ genug oder es rekursiv sein muss? So oder so, würde ich für eine kleine benutzerdefinierte .NET-Funktion gehen die System.IO.Directory verwendet und es ist Verwandten.

würde ich Aufspaltung dieses in zwei Teile betrachten, vielleicht ein Windows-Dienst, die Verzeichnisse zu scannen und die Daten in einer Datenbank zusammenzufassen, dann SSRS verwenden, um auf die Datenbank wie gewohnt zu melden.

Der Grund, warum ich dies vorschlagen, ist master..xp_filesize zu verwenden und es ist kin das Konto des SQL Server-Dienst mit Bedürfnissen beginnend Zugriff auf die Pfade gescannt werden. Sobald diese in dreht Pfade auf anderen Rechnern den Zugriff auf I weniger bequem mit den Auswirkungen auf die Sicherheit davon sein würde.

Hope, das hilft

In SSRS können Sie dies mit Hilfe von benutzerdefinierter Datenerweiterung zu tun. U müssen den Pfad für die Datenquelle als Ordnernamen geben und es wird Ihre Dateien und die dazugehörigen Informationen retrive und angezeigt

Für weitere Referenz und benutzerdefinierte DLL diese verwenden http://www.devx.com/dbzone/Article/31336/ 0 / page / 4

Ich habe dies früher getan.

Hinweis: Sie müssen damit verbundenen Änderungen an Designer und Report Manager-Konfigurationsdateien melden

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top