SSRS 2005 مساعدة - الحاجة للحصول على حجم ملف من داخل TSQL (المسار المحدد في العمود). أي واحد؟

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

سؤال

وأنا بحاجة للحصول على حجم مجلد وعرض المعلومات على التقرير (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

ولقد فعلت هذا في وقت سابق.

ملحوظة: لديك لإجراء تغييرات ذات الصلة لعن ملفات التكوين مصمم ومدير تقرير

.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top