1

Windows 2008 Server 64 ビット、Sql Server Reporting Services 2008 R2 を使用しています。ReportService Web サービスを使用して RDL ファイルをアップロードします。次のようなレポートのアップロードにスクリプト ps1 Powershell を使用します。

http://randypaulo.wordpress.com/2012/02/21/how-to-install-deploy-ssrs-rdl-using-powershell/

レポートをアップロードするときにエラーが発生します。最初の 5 つの rdls は正しくアップロードされますが、次は間違っています。 REP_ACCESO_AIRNET04_R_09 、 REP_ACCESO_AIRNET04_R_10 、 REP_ACCESO_AIRNET04_R_11が正しくREP_ACCESO_AIRNET04_R_12アップロードされています。

REP_ACCESO_AIRNET04_R_13そうでない場合、エラーが発生します。

3 ~ 4 個のレポート rdl を使用する場合、問題ありません。しかし、より多くの rdls ファイルを使用すると、エラーが発生します。

SQL Server Reporting Services を確認すると、実行されています

スクリプト ps1 を使用してインストールする powershell でいくつかのエラーが発生します - SSRS でレポート rdls をアップロードします。

Exception of type 'System.OutOfMemoryException' was thrown.

Failed. The error was: 'Error al procesar los datos de un comando remoto. Mensa
je de error: <f:WSManFault xmlns:f="http://schemas.microsoft.com/wbem/wsman/1/w
smanfault" Code="3762507597" Machine="DESCASRPSW01"><f:Message><f:ProviderFault
 provider="microsoft.powershell" path="C:\Windows\system32\pwrshplugin.dll"></f
:ProviderFault></f:Message></f:WSManFault> Para obtener m s informaci¢n, consul
te el tema de la Ayuda about_Remote_Troubleshooting.'.


Failed. The error was: 'Error al procesar los datos de un comando remoto. Mensa
je de error: The WSMan provider host process did not return a proper response. 
 A provider in the host process may have behaved improperly. Para obtener m s i
nformaci¢n, consulte el tema de la Ayuda about_Remote_Troubleshooting.'.

c:\Program Files\Microsoft SQL Server\MSRS10_50.REPORTING\Reporting Services\LogFiles にログインします。

library!ReportServer_0-107!1118!08/09/2012-08:46:59:: SetItemDataSourcesAction(/Reale/REP_ACCESO_AIRNET04_R_12) を呼び出します。

webserver!ReportServer_0-107!7fc!08/09/2012-08:47:11:: i 情報: レポート Web サーバーが停止しました appdomainmanager!DefaultDomain!14c!08/09/2012-08:47:16:: i 情報: Appdomain:152 ReportServer_REPORTING_0-107-129889682211300455 が登録解除されました。

私は VERBOSE ログとこのメッセージ キーをアクティブにしました。

  • ReportServer_REPORTING_0-1-129889760220267707 をアンロードしようとしています。
  • ShutDownMessage: 重要なディレクトリの変更通知。bin ディレクトリの変更またはディレクトリの名前変更
  • HostingEnvironment によって開始されたシャットダウン
  • 重要なディレクトリの変更通知。
  • 情報: レポート Web サーバーが停止しました
  • ReportServer_REPORTING_0-1-129889760220267707 の登録が解除されました。

パイプライン = 0x0000000000F1FA30、id = 13907115651467581232、connid = 13907115650930710318 ...

runningrequests!ReportServer_0-1!123c!08/09/2012-11:06:57:: v 詳細: ユーザー マップ'DESCASRPSW01\instalador http://descasrpsw01/ReportServer_REPORTING/ReportService2005.asmx?WSDL 1'

rshost!rshost!123c!08/09/2012-11:06:57:: v 詳細: HttpPipelineCallback::EndOfRequest(): パイプライン = 0x0000000000F1FA30 を続行します。

rshost!rshost!e3c!08/09/2012-11:06:57:: v 詳細: HttpPipeline::DisconnectCallback: パイプライン = 0x0000000000F1FA30 を解放しています。

rshost!rshost!fbc!08/09/2012-11:06:57:: v 詳細: ThreadContinuePipeline: パイプラインで要求を処理中 = 0x0000000000F1FA30、状態 = 2、IOError = 0、ノード = 0。

rshost!rshost!fbc!08/09/2012-11:06:57:: v 詳細: ステート マシンが切断されましたパイプライン = 0x0000000000F1FA30、状態 = 4 ...

rshost!rshost!fbc!08/09/2012-11:06:57:: v 詳細: HttpPipeline::DoStateDisconnected: パイプライン = 0x0000000000F1FA30 を解放しています。

rshost!rshost!fbc!08/09/2012-11:06:57:: v 詳細: HttpPipeline::ReleaseOnce: パイプライン = 0x0000000000F1FA30 を解放しています。

rshost!rshost!fbc!08/09/2012-11:06:57:: v 詳細: パイプラインの破棄 = 0x0000000000F1FA30、コールバック = 0x0000000000F1C660 ...

appdomainmanager!ReportServer_0-1!13e4!08/09/2012-11:07:03:: v 詳細: Appdomain:3 ReportServer_REPORTING_0-1-129889760220267707 がアンロードされようとしています。

ShutDownMessage: 重要なディレクトリの変更通知。

bin ディレクトリの変更またはディレクトリの名前変更

HostingEnvironment によって開始されたシャットダウン

重要なディレクトリの変更通知。

bin ディレクトリの変更またはディレクトリの名前変更

重要なディレクトリの変更通知。

bin ディレクトリの変更またはディレクトリの名前変更

重要なディレクトリの変更通知。

bin ディレクトリの変更またはディレクトリの名前変更

webserver!ReportServer_0-1!13e4!08/09/2012-11:07:03:: i 情報: レポート Web サーバーが停止しました

appdomainmanager!DefaultDomain!b30!08/09/2012-11:07:08:: i 情報: Appdomain:3 ReportServer_REPORTING_0-1-129889760220267707 未登録。

rshost!rshost!b30!08/09/2012-11:07:08:: i 情報: アプリケーション ドメイン タイプ ReportServer 統計: 作成: 1、アンロード: 1、失敗:

更新: 問題の問題は、RDL ファイルのバイトを取得するために PSRemoting と Get-Content を使用することです。PSRemoting を使用しない同じスクリプト ps1 は正しいです。

一部の RDL ファイルで、psremoting を使用するとエラーが発生します。

#Load the RDL Binary 
[Byte[]]$rptContent = Get-Content $rptReference -Encoding byte

解決策: [System.IO.File]::ReadAllBytes($sourceFile)を使用します。

参考文献:

http://www.vistax64.com/powershell/203663-get-content-encoding-byte-problem-v1-v2-ctp3.html

Get-Content は、バイナリ ファイルを読み込むときにメモリを大量に消費し、非効率的です。すべてのバイトが PSObject にラップされます。.Net 関数を使用することをお勧めします (.Net v4 には File.ReadAllBytes メソッドがあります) – @user1578107

Powershell FTP 大きなファイルを送信 System.OutOfMemoryException

「RAM の使用量が 3 MB のファイルをアップロードする際に GB に達するという同様の問題に遭遇したことがありますが、次のように置き換えることがわかりました。」

 $content = gc -en byte $sourceFile

と:

 $content = [System.IO.File]::ReadAllBytes($sourceFile)
4

2 に答える 2

1

[System.IO.File]::ReadAllBytes($sourceFile)を使用

参考文献:

Get-Content は、バイナリ ファイルを読み込むときにメモリを大量に消費し、非効率的です。すべてのバイトが PSObject にラップされます。.Net 関数を使用することをお勧めします (.Net v4 には File.ReadAllBytes メソッドがあります) – @user1578107

http://www.vistax64.com/powershell/203663-get-content-encoding-byte-problem-v1-v2-ctp3.html

「RAM の使用量が 3 MB のファイルをアップロードする際に GB に達するという同様の問題に遭遇したことがありますが、次のように置き換えることがわかりました。」

 $content = gc -en byte $sourceFile

と:

 $content = [System.IO.File]::ReadAllBytes($sourceFile)
于 2012-08-13T07:10:15.853 に答える
1

これは、誰かがファイルまたはフォルダーの名前を変更したことが原因ではありません。

主な問題は、スクリプトが引き起こしていることですSystem.OutOfMemoryException

レポートを小さなバッチでアップロードするか、アップロードの試行の間に待機を挿入してみてください。

于 2012-08-10T00:58:44.837 に答える