我有 Windows 2008 Server 64 位,Sql Server Reporting Services 2008 R2。我使用 ReportService web 服务上传 RDLs 文件。我使用脚本 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 并且它正在运行
我在 powershell 中遇到几个错误,使用我的脚本 ps1 安装 - 在 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_ACCESSO_AIRNET04_R_12)。
webserver!ReportServer_0-107!7fc!08/09/2012-08:47:11:: i INFO: 报告 Web 服务器停止 appdomainmanager!DefaultDomain!14c!08/09/2012-08:47:16:: i INFO: Appdomain:152 ReportServer_REPORTING_0-107-129889682211300455 未注册。
我激活了 VERBOSE 日志,这条消息对我来说是关键:
- ReportServer_REPORTING_0-1-129889760220267707 即将卸载。
- ShutDownMessage:关键目录的更改通知。bin dir 更改或目录重命名
- HostingEnvironment 启动关闭
- 关键目录的更改通知。
- 信息:报告 Web 服务器已停止
- ReportServer_REPORTING_0-1-129889760220267707 未注册。
管道=0x0000000000F1FA30,id=13907115651467581232,connid=13907115650930710318 ...
runningrequests!ReportServer_0-1!123c!08/09/2012-11:06:57:: v VERBOSE: User map'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 VERBOSE: Appdomain:3 ReportServer_REPORTING_0-1-129889760220267707 即将卸载。
ShutDownMessage:关键目录的更改通知。
bin dir 更改或目录重命名
HostingEnvironment 启动关闭
关键目录的更改通知。
bin dir 更改或目录重命名
关键目录的更改通知。
bin dir 更改或目录重命名
关键目录的更改通知。
bin dir 更改或目录重命名
webserver!ReportServer_0-1!13e4!08/09/2012-11:07:03:: i INFO: 报告 Web 服务器已停止
appdomainmanager!DefaultDomain!b30!08/09/2012-11:07:08:: i INFO: Appdomain:3 ReportServer_REPORTING_0-1-129889760220267707 未注册。
rshost!rshost!b30!08/09/2012-11:07:08::i INFO:应用程序域类型 ReportServer 统计信息:创建:1,卸载:1,失败:
更新:问题是使用 PSRemoting 和 Get-Content 获取 RDL 文件的字节。没有 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 使用量达到 GB 上传 3MB 文件时,我发现替换:”
$content = gc -en byte $sourceFile
和:
$content = [System.IO.File]::ReadAllBytes($sourceFile)