SQL Server Reporting Services'ı yapılandırmaya yönelik el ile adımlar
Service Manager veri ambarı yönetim sunucusunun dağıtımı sırasında, Microsoft SQL Server Reporting Services'ın (SSRS) dağıtılacağı sunucuyu belirtebilirsiniz. Kurulum sırasında, veri ambarı yönetimi sunucusunu barındıran bilgisayar varsayılan olarak seçilir. SSRS'yi barındırmak için farklı bir bilgisayar belirtirseniz, sunucuyu hazırlamak için bu yordamı izlemeniz istenir. Uzak bilgisayarı SSRS'yi barındırması için hazırlamak bu bölümde ayrıntılı olarak ele alan şu adımları içerir:
Service Manager yükleme medyasındaki Microsoft.EnterpriseManagement.Reporting.Code.dll dosyasını SSRS'yi barındıran bilgisayara kopyalayın.
SSRS'yi barındıran bilgisayarda rssrvpolicy yapılandırma dosyasına bir kod kesimi ekleyin.
Aynı bilgisayardaki rsreportserver yapılandırma dosyasındaki mevcut Veri segmentine bir Uzantı etiketi ekleyin.
SQL Server'ın varsayılan örneğini kullandıysanız, Microsoft.EnterpriseManagement.Reporting.Code.dll (Service Manager yükleme medyanızdaki Önkoşullar klasöründe bulunur) \Program Files\Microsoft SQL Server\MSRS13 klasörüne sürüklemek için Windows Gezgini'ni kullanın. SSRS'yi barındıran bilgisayarda MSSQLSERVER\Reporting Services\ReportServer\Bin. SQL Server'ın varsayılan örneğini kullanmadıysanız, gerekli klasörün yolu \Program Files\Microsoft SQL Server\MSRS13'tür.<>INSTANCE_NAME\Reporting Services\ReportServer\Bin. Aşağıdaki yordamda varsayılan örnek adı kullanılır.
Microsoft.EnterpriseManagement.Reporting.Code.dll dosyasını kopyalama
Aşağıdaki adımları kullanın:
Uzak SSRS'yi barındıracak olan bilgisayarda bir Windows Gezgini örneği açın.
SQL Server 2016 için \Program Files\Microsoft SQL Server\MSRS13 klasörünü bulun. MSSQLSERVER\Reporting Services\ReportServer\Bin.
Windows Gezgini'nin ikinci bir örneğini başlatın, Service Manager yükleme medyasını içeren sürücüyü bulun ve Önkoşullar klasörünü açın.
Önkoşullar klasöründe Microsoft.EnterpriseManagement.Reporting.Code.dll'yi seçin ve 2. adımlardan herhangi birisinde bulunan klasöre sürükleyin.
rssrvpolicy.config dosyasına kod kesimi ekleme
Aşağıdaki adımları kullanın:
SSRS'yi barındıracak bilgisayarda, \Program Files\Microsoft SQL Server\MSRS13 içinde rssrvpolicy.config dosyasını bulun. SQL Server 2016 için MSSQLSERVER\Reporting Services\ReportServer klasörü.
Kendi seçtiğiniz bir XML editörünü kullanarak (Not Defteri gibi), rssrvpolicy.config dosyasını açın.
rssrvpolicy.config dosyasını kaydırın ve kod kesimlerini bulun
<CodeGroup>
. Aşağıdaki kodda bir<CodeGroup>
segment örneği gösterilmektedir.<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"> <IMembershipCondition class="UrlMembershipCondition" version="1" Url="$CodeGen$/*" /> </CodeGroup>
Aşağıdaki
<CodeGroup>
segmenti diğer<CodeGroup>
segmentlerle aynı bölüme tamamen ekleyin.<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust" Name="Microsoft System Center Service Manager Reporting Code Assembly" Description="Grants the SCSM Reporting Code assembly full trust permission."> <IMembershipCondition class="StrongNameMembershipCondition" version="1" PublicKeyBlob="0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9" /> </CodeGroup>
Değişiklikleri kaydedin ve XML editörünü kapatın.
rsreportserver.conf dosyasındaki Veri kesimine Uzantı etiketi ekleme
Aşağıdaki adımları kullanın:
SSRS barındıran bilgisayarda, \Program Files\Microsoft SQL Server\MSRS13 konumunda rsreportserver.config dosyasını bulun. SQL Server 2016 için MSSQLSERVER\Reporting Services\ReportServer klasörü.
Tercihinize göre bir XML düzenleyicisini kullanarak (Not Defteri gibi) rsreportserver.config dosyasını açın.
rsreportserver.config dosyasını kaydırın ve kod kesimini
<Data>
bulun. Bu dosyada yalnızca bir<Data>
kod kesimi var.Aşağıdaki
Extension
etiketi diğerExtension
tüm etiketlerin<Data>
bulunduğu kod kesimine ekleyin:<Extension Name="SCDWMultiMartDataProcessor" Type="Microsoft.EnterpriseManagement.Reporting.MultiMartConnection, Microsoft.EnterpriseManagement.Reporting.Code" />
Değişiklikleri kaydedin ve XML editörünü kapatın.
SSRS yüklemesini doğrulama
Service Manager Veri Ambarı (DW) sürüm 2016 ve sonraki sürümlerinde aşağıdaki bilinen sorun gözlenmiştir:
Service Manager Veri Ambarı'nda (DW) aşağıdaki bilinen sorun gözlenir:
SQL Server Reporting Services (SSRS) Veri Ambarı Yönetim Sunucusu'nda yerel olarak çalışıyorsa ve SSRS 2017 veya üzeriyse, Veri Ambarı Kurulumu başarıyla tamamlanır, ancak belirtilen yerel SSRS örneğini düzgün yapılandırmayabilir.
LOCAL SSRS yüklemesinin doğru yapılandırılıp yapılandırılmadığını ve Service Manager Veri Ambarı ile birlikte kullanılıp kullanılamadığını doğrulamak için aşağıdaki betiği kullanın.
Not
Bu PowerShell betiği bir Service Manager Veri Ambarı yüklemesi sonrasında yürütülebilir. Betik, yapılandırmada herhangi bir değişiklik yapmaz ancak bunu doğrular. Betiği gerektiği kadar çalıştırabilirsiniz.
#region function definitions
function SelfElevate() {
#got from http://www.expta.com/2017/03/how-to-self-elevate-powershell-script.html and changed a bit
if (-Not ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] 'Administrator')) {
if ([int](Get-WmiObject -Class Win32_OperatingSystem | Select-Object -ExpandProperty BuildNumber) -ge 6000) {
$CommandLine = "-File `"" + $Script:MyInvocation.MyCommand.Path + "`" " + $Script:MyInvocation.UnboundArguments
Start-Process -FilePath PowerShell.exe -Verb Runas -ArgumentList $CommandLine
Exit
}
}
}
function EndScriptExecution() {
Write-Host ""
Read-Host "Press ENTER to stop execution"
Exit
}
#endregion
#region Init
SelfElevate
#endregion
#region Select SSRS service
$ssrsServicesAvailable = gwmi win32_service | ?{ $_.DisplayName -like 'SQL Server Reporting Services*' }
if ($ssrsServicesAvailable -eq $null) {
Write-Host "No SSRS service(s) detected on this machine. " -NoNewline
Write-Host "Aborting ..." -ForegroundColor Yellow
EndScriptExecution
}
if ( ($ssrsServicesAvailable | Measure-Object).Count -eq 1) {
$ssrsServiceToVerify = ($ssrsServicesAvailable | Select-Object -Property DisplayName, State, PathName) | Select-Object -First 1
}
else {
$ssrsServiceToVerify = $ssrsServicesAvailable | Select-Object -Property DisplayName, State, PathName | Out-GridView -Title 'Select the SSRS service to verify and then click OK...' -OutputMode Single
if ($ssrsServiceToVerify -eq $null) {
Write-Host "No SSRS service selected to verify. " -NoNewline
Write-Host "Aborting ..." -ForegroundColor Yellow
EndScriptExecution
}
}
#endregion
#region Preparation
Write-Host "--------------------------------------------------------------------"
Write-Host "Verifiying selected SSRS service : " -NoNewline
Write-Host "'$($ssrsServiceToVerify.DisplayName)'" -ForegroundColor Cyan
Write-Host "--------------------------------------------------------------------"
Write-Host ""
$ssrsExePath = $ssrsServiceToVerify.PathName.Replace('"','')
$ssrsExeFileVersion = [System.Diagnostics.FileVersionInfo]::GetVersionInfo($ssrsExePath)
$ssrsMajorVersion = $ssrsExeFileVersion.ProductMajorPart
$ssrsVersionDisplayName = switch ($ssrsMajorVersion)
{
11 {"2012"}
12 {"2014"}
13 {"2016"}
14 {"2017"}
15 {"2019"}
default {""}
}
if ($ssrsVersionDisplayName -eq "") {
Write-Host "Unknown SSRS Version detected. " -NoNewline
Write-Host "Aborting ..." -ForegroundColor Yellow
EndScriptExecution
}
[System.IO.DirectoryInfo]$ssrsReportServerFolder = (Get-Item -Path $ssrsExePath).Directory.Parent
if ($ssrsMajorVersion -ge 14) {
$ssrsReportServerFolder = Join-Path $ssrsReportServerFolder.FullName "ReportServer"
}
[string]$ssrsReportServerFolder = $ssrsReportServerFolder.FullName
[string]$ssrsReportServerBinFolder = Join-Path $ssrsReportServerFolder "bin"
#endregion
#region Checking DLL
$scsmDllFileExists = $false
$scsmDllFileName = "Microsoft.EnterpriseManagement.Reporting.Code.dll"
$scsmDllFilePath = Join-Path $ssrsReportServerBinFolder $scsmDllFileName
$scsmDllFileExists = (Test-Path -Path $scsmDllFilePath)
if (-not $scsmDllFileExists) {
Write-Host "ERROR: " -ForegroundColor Yellow -NoNewline
Write-Host "The file '$scsmDllFileName' does *NOT* exist in '$ssrsReportServerBinFolder'"
}
else {
Write-Host " Pass: The file '$scsmDllFileName' does exist in '$ssrsReportServerBinFolder'"
}
Write-Host ""
#endregion
#region Checking rssrvpolicy.config
$rssrvpolicy_configIsCorrect = $false
$rssrvpolicy_configFileName = "rssrvpolicy.config"
$rssrvpolicy_configFilePath = Join-Path $ssrsReportServerFolder $rssrvpolicy_configFileName
$rssrvpolicy_configFileExists = (Test-Path -Path $rssrvpolicy_configFilePath)
if (-not $rssrvpolicy_configFileExists) {
Write-Host "$rssrvpolicy_configFileName does *NOT* exist in $ssrsReportServerFolder" -ForegroundColor Yellow
}
if ($rssrvpolicy_configFileExists) {
[xml]$xml = Get-Content $rssrvpolicy_configFilePath
$tagNameToFind = "CodeGroup"
$attributeNameToFind = "Name"
$attributeValueToFind = "Microsoft System Center Service Manager Reporting Code Assembly"
$nodeToFind = Select-Xml -XPath "//$tagNameToFind[@$attributeNameToFind='$attributeValueToFind']" -Xml $xml
if ($nodeToFind -eq $null) {
Write-Host "ERROR: " -ForegroundColor Yellow -NoNewline
Write-Host "The file '$rssrvpolicy_configFileName' in '$ssrsReportServerFolder' does *NOT* contain the correct <$tagNameToFind> node."
}
else {
$CodeGroup_NodeToVerify = [System.Xml.XmlNode]$nodeToFind.Node
$IMembershipCondition_NodeToVerify = [System.Xml.XmlNode]$CodeGroup_NodeToVerify.IMembershipCondition
$rssrvpolicy_configIsCorrect = ( $CodeGroup_NodeToVerify.class -eq "UnionCodeGroup" `
-and $CodeGroup_NodeToVerify.version -eq "1" `
-and $CodeGroup_NodeToVerify.PermissionSetName -eq "FullTrust" `
-and $IMembershipCondition_NodeToVerify.class -eq "StrongNameMembershipCondition" `
-and $IMembershipCondition_NodeToVerify.version -eq "1" `
-and $IMembershipCondition_NodeToVerify.PublicKeyBlob -eq "0024000004800000940000000602000000240000525341310004000001000100B5FC90E7027F67871E773A8FDE8938C81DD402BA65B9201D60593E96C492651E889CC13F1415EBB53FAC1131AE0BD333C5EE6021672D9718EA31A8AEBD0DA0072F25D87DBA6FC90FFD598ED4DA35E44C398C454307E8E33B8426143DAEC9F596836F97C8F74750E5975C64E2189F45DEF46B2A2B1247ADC3652BF5C308055DA9"
)
if (-not $rssrvpolicy_configIsCorrect) {
Write-Host "ERROR: " -ForegroundColor Yellow -NoNewline
Write-Host "The <$tagNameToFind> node in '$rssrvpolicy_configFileName' in '$ssrsReportServerFolder' does exists but its content is *NOT* correct."
}
else {
Write-Host " Pass: The content of '$rssrvpolicy_configFileName' in '$ssrsReportServerFolder' is correct."
}
}
}
Write-Host ""
#endregion
#region Checking rsreportserver.config
$rsreportserver_configIsCorrect = $false
$rsreportserver_configFileName = "rsreportserver.config"
$rsreportserver_configFilePath = Join-Path $ssrsReportServerFolder $rsreportserver_configFileName
$rsreportserver_configFileExists = (Test-Path -Path $rsreportserver_configFilePath)
if (-not $rsreportserver_configFileExists) {
Write-Host "$rsreportserver_configFileName does *NOT* exist in $ssrsReportServerFolder" -ForegroundColor Yellow
}
if ($rsreportserver_configFileExists) {
[xml]$xml = Get-Content $rsreportserver_configFilePath
$tagNameToFind = "Extension"
$attributeNameToFind = "Name"
$attributeValueToFind = "SCDWMultiMartDataProcessor"
$nodeToFind = Select-Xml -XPath "//$tagNameToFind[@$attributeNameToFind='$attributeValueToFind']" -Xml $xml
if ($nodeToFind -eq $null) {
Write-Host "ERROR: " -ForegroundColor Yellow -NoNewline
Write-Host "The file '$rsreportserver_configFileName' in '$ssrsReportServerFolder' does *NOT* contain the correct <$tagNameToFind> node."
}
else {
$Extension_NodeToVerify = [System.Xml.XmlNode]$nodeToFind.Node
$rsreportserver_configIsCorrect = ( $Extension_NodeToVerify.Type.Replace(" ","") -eq "Microsoft.EnterpriseManagement.Reporting.MultiMartConnection, Microsoft.EnterpriseManagement.Reporting.Code".Replace(" ","") )
if (-not $rsreportserver_configIsCorrect) {
Write-Host "ERROR: " -ForegroundColor Yellow -NoNewline
Write-Host "The <$tagNameToFind> node in '$rsreportserver_configFileName' in '$ssrsReportServerFolder' does exists but its content is *NOT* correct."
}
else {
Write-Host " Pass: The content of '$rsreportserver_configFileName' in '$ssrsReportServerFolder' is correct."
}
}
}
Write-Host ""
#endregion
#region Conclusion
""
Write-Host "Conclusion:" -ForegroundColor Cyan
Write-Host "==========="
if ($scsmDllFileExists -and $rsreportserver_configIsCorrect -and $rssrvpolicy_configIsCorrect) {
Write-Host "The selected SSRS instance is configured correctly."
}
else {
Write-Host "The selected SSRS instance is " -NoNewline
Write-Host "*NOT* configured correctly." -ForegroundColor Yellow
Write-Host "Please follow the steps at " -NoNewline
Write-Host "https://learn.microsoft.com/system-center/scsm/config-remote-ssrs" -ForegroundColor Yellow
}
EndScriptExecution
#endregion
Sonraki adımlar
- Yük devretme ortamını desteklemek üzere AlwaysOn kullanılabilirlik gruplarını Service Manager ile birlikte kullanmak için yük devretmeyi desteklemek için SQL Server AlwaysOn kullanılabilirlik gruplarını kullanma'yı gözden geçirin.