SSRS 2005ヘルプ-TSQL内からファイルサイズを取得する必要があります(列で指定されたパス)。誰でも?
-
03-07-2019 - |
質問
フォルダサイズを取得し、レポート(SSRS)に情報を表示する必要があります。多くのデータベースでこれを行う必要があります(ループ!)。これらのDBはWebサイトのバックエンドです。誰もこれをやったことがありますか?サンプルや正しい方向を教えていただけますか? xp_filesizeなどは適切なソリューションですか?ヘルプ!
解決
質問とTomalakの応答を見ると、レポートサーバーがDBに保持されているフォルダーに到達できると想定しています:
最初にクエリを設定して、パスの結果セットを取得します-この部分に問題はないと思います。次に、レポートにカスタムコード関数を追加する必要があります。 http:/ /msdn.microsoft.com/en-us/library/ms155798.aspx -この関数は、フォルダーパスをパラメーターとして取得し、フォルダーのサイズを返します。レポートにコードを埋め込む場合は、VB.Netで記述する必要があります。または、DLLをコーディングして取り込むことができます。
VB.Netコードブロックの例(オブジェクトに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
これで、レポートのテーブルに、フォルダーサイズを示すセルに次のような式が表示されます。
=Code.GetFolderSize(Fields!FolderPath.Value)
このアプローチは、手動で表示されるレポートのパフォーマンスに優れているとは思いませんが、小さな結果セットやスケジュールされたレポートを電子メールで配信する場合は、これで十分でしょうか?
ああ、この記事では、RS内からSystem.IOを使用してアクセス許可の問題に遭遇する可能性があることを示唆しています。 http://blogs.sqlxml.org/bryantlikes/pages/824.aspx
他のヒント
シナリオで誰が何をすべきかを明確にできますか? SQL Serverに情報を取得させますか、それともReporting Serverに情報を取得させますか?
「フォルダサイズ」とはどういう意味ですか? 「1つのフォルダー、各ファイルを合計する」」十分ですか、それとも再帰的である必要がありますか?いずれにせよ、私は System.IO.Directory
とその親類を使用する小さなカスタム.NET関数を探します。
これを2つの部分に分割することを検討します。Windowsサービスでディレクトリをスキャンし、データをデータベースに集約してから、SSRSを使用して通常どおりデータベースに関するレポートを作成します。
これがmaster..xp_filesizeを使用することをお勧めする理由は、SQL Serverサービスが開始するアカウントがスキャン対象のパスにアクセスする必要があることと同じです。これが他のマシン上のパスにアクセスするようになったら、そのセキュリティへの影響にあまり慣れていません。
これが役立つことを願って
SSRSでは、カスタムデータ拡張を使用してこれを行うことができます。フォルダー名としてデータソースのパスを指定する必要があります。ファイルとその関連情報を取得して表示します
詳細な参照およびカスタムdllについては、これを使用してください http://www.devx.com/dbzone/Article/31336/ 0 /ページ/ 4
以前にこれを実行しました。
注:レポートデザイナーとレポートマネージャーの構成ファイルに関連する変更を行う必要があります。