SQL Server Reporting Services yapılandırmaya yönelik el ile uygulanan adımlar
Önemli
bu Service Manager sürümü desteğin sonuna ulaştı. Service Manager 2022'ye yükseltmenizi öneririz.
Service Manager veri ambarı yönetim sunucusunun dağıtımı sırasında, Microsoft SQL Server Reporting Services (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 varsayılan örneğini kullandıysanız Windows Gezgini'ni kullanarak 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ükleyin. SSRS'yi barındıran bilgisayarda MSSQLSERVER\Reporting Services\ReportServer\Bin. varsayılan SQL Server ö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.
İkinci bir Windows Gezgini örneği başlatın, Service Manager yükleme medyasını içeren sürücüyü bulun ve ardından Prerequisites klasörünü açın.
Önkoşullar klasöründe Microsoft.EnterpriseManagement.Reporting.Code.dllöğesini 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 dosya rssrvpolicy.config 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ında ilerleyin ve
<CodeGroup>
kod kesimlerini bulun. Aşağıdaki kodda bir<CodeGroup>
kesimi örneği gösterilmektedir.<CodeGroup class="UnionCodeGroup" version="1" PermissionSetName="FullTrust"> <IMembershipCondition class="UrlMembershipCondition" version="1" Url="$CodeGen$/*" /> </CodeGroup>
Takip eden
<CodeGroup>
kesimini bir bütün halinde diğer<CodeGroup>
kesimleri ile aynı bölüme 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'yi barındıran bilgisayarda, \Program Files\Microsoft SQL Server\MSRS13 içinde dosya rsreportserver.config 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ı boyunca kaydırma yapın ve
<Data>
kod kesimini bulun. Bu dosyada yalnızca bir<Data>
kod kesimi var.Aşağıdaki
Extension
etiketini diğer tüm<Data>
etiketlerinin bulunduğuExtension
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 Data Warehouse (DW) sürüm 2016 ve sonraki sürümlerde aşağıdaki bilinen sorun gözlemlenmiştir:
Service Manager Data Warehouse (DW) içinde aşağıdaki bilinen sorun gözlemlenir:
SQL Server Reporting Services (SSRS) Data Warehouse Yönetim Sunucusu'nda yerel olarak çalışıyorsa ve SSRS 2017 veya üzeriyse, Data Warehouse 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 Data Warehouse 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 Data Warehouse yüklemeden sonra 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 Service Manager ile AlwaysOn kullanılabilirlik gruplarını kullanmak için, Yük devretmeyi desteklemek için AlwaysOn kullanılabilirlik gruplarını SQL Server kullanma'yı gözden geçirin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin