SSRS рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рддреИрдирд╛рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ

рдХрдИ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдкреИрдХреЗрдЬ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд╕рд░реНрд╡рд░ рдкрдХреНрд╖ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддреА рд╣реИред рд╡рд┐рдХрд╛рд╕ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рд╕реЗ рдЙрддреНрдкрд╛рджрди рд╕рд░реНрд╡рд░ рддрдХ рд╕реАрдзреЗ рдкрд╣реБрдВрдЪ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рд╣реИред
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рд╕рд░реНрд╡рд░ (рдЖрд░рдбреАрдкреА) рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд▓реЙрдЧрд┐рди рдХреЗ рдмрд┐рдирд╛ рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЙрдкрдпреБрдХреНрдд рд╣реИред рд╕рд╛рде рд╣реА, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдПрдХрд▓ рдмреВрдЯрд▓реЛрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдмрд╛рдХреА рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ, рд╣рдордиреЗ PsGet [1] рдЬреИрд╕рд╛ рдХреБрдЫ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛, рдХреЗрд╡рд▓ рдЖрдВрддрд░рд┐рдХ рдмрд┐рд▓реНрдб рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдПред
рдЖрд╡реЗрджрди рдмрдбрд╝рд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рдХрдИ рдШрдЯрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдПрд╕рдПрд╕рдЖрд░рдПрд╕ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рд░реНрдорд┐рдд рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рдореЙрдбреНрдпреВрд▓ рд╣реИред

рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХрд╛ рдкреНрд░рдмрдВрдзрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Microsoft рдиреЗ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ ReportingService2005.asmx рд╡реЗрдм рд╕реЗрд╡рд╛ [2] рдкреНрд░рджрд╛рди рдХреА ред

рдкреНрд░реАрд╕реЗрдЯ


рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рд╕рд░реНрд╡рд░ рдХреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдФрд░ рдЯреАрдореЛрдВ рджреНрд╡рд╛рд░рд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрдирдореЗрдВ рдЧреЛрдкрдиреАрдп рдЬрд╛рдирдХрд╛рд░реА (рдЬреИрд╕реЗ рдХрдиреЗрдХреНрд╢рди рдкрд╛рд╕рд╡рд░реНрдб) рд╣реЛ рд╕рдХрддреА рд╣реИред
рдирддреАрдЬрддрди, рдКрдкрд░ рдЙрд▓реНрд▓рд┐рдЦрд┐рдд рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рд╕рд╛рде рд╣реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ рдкрд╣реБрдВрдЪ рдХрд╛ рд╡рд┐рддрд░рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛ рд╣реБрдЖ рд╣реИред

рд╕реЗрд╡рд╛ рд╕реЗ рдХрдиреЗрдХреНрд╢рди


PowerShell 2.0, New-WebServiceProxy рдХрдорд╛рдВрдб [3] рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рд╡реЗрдм рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдмрдирд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдбрдмреНрд▓реВрдПрд╕рдбреАрдПрд▓ [рек] рдкрд░ рд╕реЗрд╡рд╛ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд░рд╛рд╕реНрддрд╛ рдмрддрд╛рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рд╣рдо Windows рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдХрдиреЗрдХреНрд╢рди рдореЗрдВ рд╣рдо рдкреНрд░рдореБрдЦ UseDefaultCredential рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВрдЧреЗред рд╕реНрд╡рдпрдВ рд╕реЗрд╡рд╛ рдкреНрд░реЙрдХреНрд╕реА рдореЗрдВ, рдЖрдкрдХреЛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд╡рд┐рдзрд┐ рднреА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреА рд╣реЛрдЧреАред
function Connect-ReportingService([string]$ssrsHost) { $reportingServiceUrl = $ssrsHost + "ReportService2005.asmx?wsdl" $reportingService= New-WebServiceProxy $reportingServiceUrl -UseDefaultCredential -namespace ReportingWebService $reportingService.UseDefaultCredentials = $true $reportingService } 

$ SsrsHost рдкреИрд░рд╛рдореАрдЯрд░ рдореЗрдВ рд╡рд╣ рдкреВрд░реНрдг рдкрде рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИ (рдЖрдорддреМрд░ рдкрд░ servername / ReportServer )ред

рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдЬреЛрдбрд╝рдирд╛


рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдиреЗ рдпрд╛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, CreateReport рдкрджреНрдзрддрд┐ рд╣реИ [5] ред
рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдпрд╣ рд░рд┐рдкреЛрд░реНрдЯ рдХрд╛ рдирд╛рдо рд▓реЗрддрд╛ рд╣реИ, рдореВрд▓ рдлрд╝реЛрд▓реНрдбрд░ рдХрд╛ рдирд╛рдо (рдлрд╝реЛрд▓реНрдбрд░ рдЖрдкрдХреЛ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рднрд┐рдиреНрди рд╕реБрд░рдХреНрд╖рд╛ рдиреАрддрд┐рдпрд╛рдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ), рдУрд╡рд░рд░рд╛рдЗрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдзреНрд╡рдЬ, рд░рд┐рдкреЛрд░реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╕рд╛рдордЧреНрд░реА рдФрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рдЧреБрдг (рдЖрдорддреМрд░ рдкрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, рдЖрдк $ null рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред
рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢реЛрдВ рдФрд░ рдЪреЗрддрд╛рд╡рдирд┐рдпреЛрдВ рдХрд╛ рд╕рдВрдЧреНрд░рд╣ рд▓реМрдЯрд╛рддреА рд╣реИред
рдЗрдирдореЗрдВ рд╕реЗ, рд╣рдо рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд░рд┐рдкреЛрд░реНрдЯреЛрдВ рдХреА рдЕрдирджреЗрдЦреА рдХрд░реЗрдВрдЧреЗред
рдХреЙрд▓ рдХреА рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
 (Connect-ReportingService $ssrsHost).CreateReport($report, $ssrsFolder, $true, $reportBits, $null) 

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд▓рдкреЗрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
 function Deploy-Report([string]$ssrsHost, [string]$reportDir, [string]$report, [string]$ssrsFolder) { <#    ,     (   ) #> $relativeReportLocation = "..\RS\$($report).rdl" #    if (-not (Test-Path $reportFile)) { $message = "Report file '{0}' was not found!" -f $reportFile Write-Warning $message return } #    [byte[]]$reportBits = [System.IO.File]::ReadAllBytes($reportFile) # ,      $warnings = (Connect-ReportingService $ssrsHost).CreateReport($report, $ssrsFolder, $true, $reportBits, $null) #    "" $cleanedWarnings = $warnings | ? { -not $_.Message.Contains("data source") } #     (    ) if(!$cleanedWarnings) { $result = "Report '{0}' published successfully with no warnings" -f $report Write-Host $result Write-Host "" } else { $warningHeader = "Report '{0}' published with warnings: " -f $report Write-Host $warningHeader $cleanedWarnings | % { Write-Warning $_.Message } Write-Host "" } } 


рдирд┐рд╖реНрдХрд░реНрд╖


рдкреНрд░рд╕реНрддреБрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдПрдХрд▓ рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдФрд░ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╕рдорд╛рди рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
  ls "..\RS\*.rdl") | % { $_.Name.Replace(".rdl", "") } | % { Deploy-Report $ssrsHost $reportDir $report $ssrsFolder } 

PowerShell рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реЗрдм рд╕реЗрд╡рд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИред
SSRS рдХреЗ рд▓рд┐рдП рд╡реЗрдм рд╕реЗрд╡рд╛ рд╕реНрд╡рдпрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, CreateDataSource рдкрджреНрдзрддрд┐ [6] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдЬреЛрдбрд╝рдирд╛ / рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдирд╛ред

рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ

рд╡рд░реНрддрдорд╛рди рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ, рд╣рдордиреЗ рдПрдХ рдмрдбрд╝рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдореЙрдбреНрдпреВрд▓ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рд╣реИред

рддреЛ, рдЖрдк рдЕрдВрддрд┐рдо рдлрд╝рд╛рдЗрд▓ рд╕рдВрд╢реЛрдзрди [7] рдХреЗ рд╕рдордп рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдерд┐рддрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд░рд┐рдкреЛрд░реНрдЯ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
  #     () $deployedReports = (Connect-ReportingService $config).ListChildren($ssrsFolder, 1) [hashtable]$deployedReportsMap = @{} $deployedReports | % { $deployedReportsMap[$_.Name + '.rdl'] = $_ } ls "..\RS\*.rdl") ` | ? { ( -not $deployedReportsMap.ContainsKey($_.Name)) -or $deployedReportsMap[$_.Name].ModifiedDate -lt $_.LastWriteTime } ` | % { $_.Name.Replace(".rdl", "") } ` | % { Deploy-Report $ssrsHost $reportDir $report $ssrsFolder } 

рдХрднреА-рдХрднреА рдХрд┐рд╕реА рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП SetItemDataSources рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЕрдХреНрд╕рд░, рдЖрдкрдХреЛ рд░рд┐рдкреЛрд░реНрдЯ (FlushCache рд╡рд┐рдзрд┐) рд╕реЗ рдХреИрд╢ рдХреЛ рдлреНрд▓рд╢ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рд╣реИред

  1. psget.net
  2. msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.aspx
  3. technet.microsoft.com/en-us/library/dd315258.aspx
  4. www.w3.org/TR/wsdl
  5. msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.createreport.aspx
  6. msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.createdatasource.aspx
  7. ListChildren рд╡рд┐рдзрд┐: msdn.microsoft.com/en-us/library/reportservice2005.reportingservice2005.listchildren.aspx

Source: https://habr.com/ru/post/In139036/


All Articles