1

我有 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_11REP_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)
4

2 回答 2

1

这不是由某人重命名文件或文件夹引起的。

主要问题是您的脚本导致System.OutOfMemoryException

尝试分批上传报告或在尝试上传之间插入等待。

于 2012-08-10T00:58:44.837 回答
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 使用量达到 GB 上传 3MB 文件时,我发现替换:”

 $content = gc -en byte $sourceFile

和:

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