Je dois obtenir la taille du dossier et afficher les informations sur un rapport (SSRS). Je dois le faire pour un certain nombre de bases de données (boucle!). Ces DB sont les backends des sites Web. Est-ce que quelqu'un a déjà fait ça? Pouvez-vous s'il vous plaît me diriger vers quelques échantillons ou la bonne direction? Est-ce que xp_filesize et similaires sont la bonne solution? Aidez-moi!Aide SSRS 2005 - nécessité d'obtenir la taille du fichier depuis TSQL (chemin spécifié dans la colonne). N'importe qui?
Répondre
En regardant la question et la réponse de Tomalak, et je suppose que le serveur de rapports sera en mesure d'atteindre les dossiers détenus dans le DB:
Tout d'abord mis en place la requête pour vous remettre le jeu de résultats de chemins - je suppose que vous n'aurez aucun problème avec cette partie. Ensuite, vous devrez ajouter une fonction de code personnalisée à votre rapport: http://msdn.microsoft.com/en-us/library/ms155798.aspx - Cette fonction prendra le chemin du dossier en tant que paramètre et retransmettra la taille du dossier. Vous devrez écrire dans VB.Net si vous souhaitez incorporer le code dans le rapport, ou vous pouvez coder une DLL et l'introduire.
Un exemple de bloc de code VB.Net (N'oubliez pas que vous devrez peut-être . objets préfixe avec 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
maintenant, dans votre rapport, dans votre table, vous auriez pour la cellule qui montre la taille du dossier une expression quelque chose comme:
=Code.GetFolderSize(Fields!FolderPath.Value)
Je doute que cette approche soit performante pour un rapport visualisé manuellement, mais vous pourriez sortir avec lui pour les petits ensembles de résultats, ou un rapport prévu livré par e-mail?
Oh, et cette pièce vous propose « peut » rencontrer des problèmes d'autorisations à l'aide de System.IO à l'intérieur RS: http://blogs.sqlxml.org/bryantlikes/pages/824.aspx
Pourriez-vous préciser qui devrait faire quoi dans votre scénario? Voulez-vous que SQL Server obtienne les informations ou voulez-vous que Reporting Server fasse cela?
Que voulez-vous dire par "taille de dossier"? Est-ce que "un dossier, résume chaque fichier" suffit ou doit-il être récursif? De toute façon, j'irais pour une petite fonction .NET personnalisée qui utilise System.IO.Directory
et c'est de la famille.
Je considérerais cela en deux division pièces, peut-être un service Windows pour scanner les répertoires et agréger les données dans une base de données, puis utiliser SSRS pour signaler sur la base de données comme d'habitude.
La raison pour laquelle je suggère ceci est d'utiliser master..xp_filesize et c'est kin le compte avec lequel le service SQL Server démarre a besoin d'accéder aux chemins à analyser. Une fois que cela se traduira par l'accès aux chemins sur d'autres machines, je serais moins à l'aise avec les implications de sécurité de cela.
Hope this helps
En SSRS vous pouvez pour le faire avec l'aide de l'extension de données personnalisées. U besoin donner le chemin de la source de données comme le nom de votre dossier et il sera retrive vos fichiers et ses informations connexes et affichées
Pour d'autres références et la coutume dll utiliser ce http://www.devx.com/dbzone/Article/31336/0/page/4
Je l'ai fait plus tôt.
Remarque: vous devez apporter des modifications connexes aux fichiers de configuration Report Designer et Report Manager.
Tomalak, Je souhaite être en mesure d'afficher la taille du dossier dans le rapport SSRS. Le chemin du dossier est stocké dans SQL Server DB. Si "System.IO.Directory" est la bonne direction, quelqu'un peut-il me donner un exemple sur la façon de le coder dans SSRS. Merci. – MarlonRibunal