Vra

Ek moet die grootte gids kry en die inligting op 'n verslag (SSRS) vertoon. Ek nodig het om dit te doen vir 'n aantal Databasisse (lus!). Hierdie DB se back ends webtuistes. Het iemand dit gedoen voor? Kan jy asseblief wys my 'n paar monsters of regte rigting? Doen xp_filesize en dies meer die regte oplossing? Help!

Was dit nuttig?

Oplossing

As ons kyk na die vraag-en-antwoord Tomalak's, en ek neem aan die verslagdoening bediener in staat om die dopgehou wat in die DB bereik sal wees:

In die eerste plek die opstel van die navraag om jou terug te kry die resultaat stel van paaie - ek neem aan jy sal geen probleme met hierdie deel het. Volgende wat jy nodig het om 'n persoonlike kode funksie by te voeg aan jou verslag: http: / /msdn.microsoft.com/en-us/library/ms155798.aspx - Hierdie funksie sal die vouer pad as 'n parameter te neem, en slaag terug die grootte van die gids. Jy sal hê om te skryf in VB.Net as jy wil hê dat die kode in te sluit in die verslag, of jy kan die kode van 'n DLL en bring dit in.

'n Voorbeeld VB.Net kode blok (Onthou jy mag nodig wees om voorwerpe voorvoegsel met 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

Nou, in jou verslag, in jou tafel, jy wil hê vir die sel wat die gids grootte toon 'n uitdrukking iets soos:

=Code.GetFolderSize(Fields!FolderPath.Value)

Ek twyfel of hierdie benadering sal performante vir 'n hand-besigtig verslag, maar jy kan daarmee wegkom vir klein gevolg stelle, of 'n geskeduleerde verslag gelewer deur e-pos?

O ja, en hierdie stuk stel voor jy 'mag' loop in regte kwessies met behulp van System.IO vanuit RS: http://blogs.sqlxml.org/bryantlikes/pages/824.aspx

Ander wenke

Kan jy verduidelik wie wat moet doen in jou scenario? Wil jy SQL Server kry nie die inligting of wil jy Verslagdoening Server wat doen?

Wat presies bedoel jy met "gids grootte"? Is " 'n gids, som elke lêer" genoeg of is dit nodig rekursiewe te wees? In ieder geval, ek wil gaan vir 'n bietjie persoonlike NET funksie wat System.IO.Directory gebruik en dis familie.

Ek sal verdeel hierdie oorweeg in twee stukke, miskien 'n Windows Service aan die dopgehou die data te scan en versamel in 'n databasis, dan gebruik SSRS om verslag te doen oor die databasis as gewoonlik.

Die rede waarom ek raai dit is om master..xp_filesize gebruik en dit is familielede die rekening van die SQL Server diens begin met behoeftes toegang tot die paaie na geskandeer. Sodra dit verander in toegang tot paaie op ander masjiene sou ek minder gemaklik met die implikasies sekuriteit van daardie wees.

Hoop dit help

In SSRS wat jy kan om dit te doen met die hulp van uitbreiding persoonlike data. U moet gee die pad vir die data bron as jou gids naam en dit sal jou lêers en sy verwante inligting te agter haal en vertoon

Vir verdere verwysing en persoonlike DLL hierdie gebruik http://www.devx.com/dbzone/Article/31336/ 0 / page / 4

Ek het hierdie vroeëre gedoen.

Let wel: jy moet verwante veranderinge aan te bring om Designer en Rapport Bestuurder konfigurasielêers Rapporteer

.
Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top