SSRS 2005 مساعدة - الحاجة للحصول على حجم ملف من داخل TSQL (المسار المحدد في العمود). أي واحد؟
-
03-07-2019 - |
سؤال
وأنا بحاجة للحصول على حجم مجلد وعرض المعلومات على التقرير (SSRS). ولست بحاجة للقيام بذلك لعدد من قواعد البيانات (حلقة!). هذه لDB هي الخلفيات المواقع. لقد فعلت كل هذا من قبل؟ يمكنك يرجى الإشارة لي أن بعض العينات أو الاتجاه الصحيح؟ هل xp_filesize وكأنه الحل الصحيح؟ مساعدة!
المحلول
وإذا نظرنا إلى المسألة والاستجابة Tomalak، ووأفترض أن خادم التقارير تكون قادرة على الوصول إلى المجلدات التي عقدت في DB:
ووضع أولا حتى الاستعلام لتحصل على العودة من مسارات مجموعة النتائج - وأفترض سيكون لديك أي مشكلة مع هذا الجزء. القادمة ستحتاج إلى إضافة وظيفة متاحة مخصص لتقريركم: HTTP: / /msdn.microsoft.com/en-us/library/ms155798.aspx - وهذه وظيفة تأخذ مسار المجلد كمعلمة، وتمرير ظهر حجم المجلد. سيكون لديك لكتابة في VB.Net إذا كنت ترغب في تضمين رمز في التقرير، أو هل يمكن أن رمز فوق DLL وتحقيق ذلك في.
ومثال كتلة VB.Net قانون (حفظ قد تحتاج إلى بادئة الكائنات مع System.IO.) <وأ href = "http://www.freevbcode.com/ShowCode.asp؟ID=4287" يختلط = " noreferrer نوفولو "> 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
والآن، في التقرير الخاص بك، في الجدول الخاص بك، وكنت قد لخلية التي تظهر حجم مجلد على شيء التعبير مثل:
=Code.GetFolderSize(Fields!FolderPath.Value)
وأشك في أن يكون هذا النهج performant للحصول على تقرير ينظر يدويا، ولكن قد تفلت من العقاب لمجموعات صغيرة نتيجة أو تقرير المقرر تسليمها عن طريق البريد الإلكتروني؟
وأوه، وهذه القطعة يوحي لك "قد" واجهت مشاكل الأذونات باستخدام System.IO من داخل RS: <لأ href = "http://blogs.sqlxml.org/bryantlikes/pages/824.aspx" يختلط = "noreferrer نوفولو"> http://blogs.sqlxml.org/bryantlikes/pages/824.aspx
نصائح أخرى
هل يمكنك توضيح الذين ينبغي أن نفعل ما في السيناريو الخاص بك؟ هل تريد SQL خادم لم الحصول على معلومات أو هل تريد الإبلاغ عن خادم تفعل ذلك؟
وماذا بالضبط هل تقصد ب "حجم المجلد"؟ هو "مجلد واحد، نلخص كل ملف" بما فيه الكفاية أو أنها لا تحتاج إلى أن تكون متكررة؟ وفي كلتا الحالتين، كنت اذهب لوظيفة. NET القليل مخصص يستخدم System.IO.Directory
وانها الأقارب.
وكنت تنظر تقسيم هذا إلى قطعتين، وربما خدمة ويندوز لفحص الأدلة وتجميع البيانات في قاعدة بيانات، ثم استخدم SSRS أن يقدم تقريرا عن قاعدة البيانات كالمعتاد.
والسبب أقترح هذا هو استخدام master..xp_filesize وانها ذوي القربى حساب خدمة SQL Server بدأت ذوي الاحتياجات الوصول إلى المسارات التي يتم مسحها ضوئيا. مرة واحدة هذا يتحول إلى الوصول إلى مسارات على الأجهزة الأخرى سأكون أقل راحة مع الآثار الأمنية المترتبة على ذلك.
ويساعد هذا الأمل
في SSRS يمكنك أن تفعل ذلك مع مساعدة من تمديد بيانات مخصصة. U بحاجة إعطاء مسار مصدر البيانات كاسم المجلد الخاص بك، وسوف retrive الملفات والمعلومات المتعلقة بها وعرضها
لمزيد من إشارة والعرف DLL استخدام هذا http://www.devx.com/dbzone/Article/31336/ 0 / صفحة / 4
ولقد فعلت هذا في وقت سابق.
ملحوظة: لديك لإجراء تغييرات ذات الصلة لعن ملفات التكوين مصمم ومدير تقرير
.