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)