Reporting services 自动从SSRS服务器导出RDL格式的所有报告
SSRS使您能够将报告导出为原始RDL格式: 我想知道的是,是否有一种方法可以将所有报告(通过我可以编写的命令行界面)或某些工具导出为原始RDL格式,然后将其压缩,等等Reporting services 自动从SSRS服务器导出RDL格式的所有报告,reporting-services,ssrs-2008,ssrs-2008-r2,Reporting Services,Ssrs 2008,Ssrs 2008 R2,SSRS使您能够将报告导出为原始RDL格式: 我想知道的是,是否有一种方法可以将所有报告(通过我可以编写的命令行界面)或某些工具导出为原始RDL格式,然后将其压缩,等等 谢谢您的时间。我还没有测试过这个,但它似乎可以满足您的需要 我已经创建了一个powershell脚本来执行此操作。您必须连接到具有SSRS数据库的SQL server。它将所有文件压缩成一个zip文件 Add-Type -AssemblyName "System.IO.Compression.Filesystem&qu
谢谢您的时间。我还没有测试过这个,但它似乎可以满足您的需要
我已经创建了一个powershell脚本来执行此操作。您必须连接到具有SSRS数据库的SQL server。它将所有文件压缩成一个zip文件
Add-Type -AssemblyName "System.IO.Compression.Filesystem"
$dataSource = "SQLSERVER"
$user = "sa"
$pass = "sqlpassword"
$database = "ReportServer"
$connectionString = "Server=$dataSource;uid=$user; pwd=$pass;Database=$database;Integrated Security=False;"
$tempfolder = "$env:TEMP\Reports"
$zipfile = $PSScriptRoot + '\reports.zip'
$connection = New-Object System.Data.SqlClient.SqlConnection
$connection.ConnectionString = $connectionString
$connection.Open()
$allreports = $connection.CreateCommand()
$allreports.CommandText = "SELECT ItemID, Path, CASE WHEN Type = 2 THEN '.rdl' ELSE 'rds' END AS Ext FROM Catalog WHERE Type IN(2,5)"
$result = $allreports.ExecuteReader()
$reportable = new-object "System.Data.DataTable"
$reportable.Load($result)
[int]$objects = $reportable.Rows.Count
foreach ($report in $reportable) {
$cmd = $connection.CreateCommand()
$cmd.CommandText = "SELECT CAST(CAST(Content AS VARBINARY(MAX)) AS XML) FROM Catalog WHERE ItemID = '" + $report[0] + "'"
$xmldata = [string]$cmd.ExecuteScalar()
$filename = $tempfolder + $report["Path"].Replace('/', '\') + $report["Ext"]
New-Item $filename -Force | Out-Null
Set-Content -Path ($filename) -Value $xmldata -Force
Write-Host "$($objects.ToString()).$($report["Path"])"
$objects -= 1
}
Write-Host "Compressing to zip file..."
if (Test-Path $zipfile) {
Remove-Item $zipfile
}
[IO.Compression.Zipfile]::CreateFromDirectory($tempfolder, $zipfile)
Write-Host "Removing temporarly data"
Remove-Item -LiteralPath $tempfolder -Force -Recurse
Invoke-Item $zipfile