Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: SQL Server 2016 (13.x) Reporting Services i nowsze wersje
programu SharePoint
Począwszy od programu SQL Server 2008 R2 (10.50.x) Reporting Services, można programowo przenieść własność subskrypcji usług Reporting Services od jednego użytkownika do innego. Ten artykuł zawiera kilka skryptów programu Windows PowerShell, których można użyć do zmiany lub po prostu wyświetlenia listy własności subskrypcji. Każdy przykład zawiera przykładową składnię dla trybu natywnego i trybu programu SharePoint. Po zmianie właściciela subskrypcji subskrypcja zostanie wykonana w kontekście zabezpieczeń nowego właściciela, a pole User!UserID w raporcie wyświetli wartość nowego właściciela. Aby uzyskać więcej informacji na temat modelu obiektów, który wywołują przykłady programu PowerShell, zobacz ChangeSubscriptionOwner.
W tym artykule:
Skrypt: Wyświetlanie listy wszystkich subskrypcji należących do określonego użytkownika
Skrypt: zmiana własności wszystkich subskrypcji należących do określonego użytkownika
Skrypt: Wyświetlanie listy wszystkich subskrypcji skojarzonych z określonym raportem
Jak używać skryptów
Permissions
W tej sekcji podsumowano poziomy uprawnień wymagane do korzystania z każdej z metod w usługach Reporting Services w trybie natywnym i w trybie SharePoint. Skrypty w tym artykule korzystają z następujących metod usług Reporting Services:
Metoda ReportingService2010.FireEvent jest używana tylko w ostatnim skrypcie, aby wyzwolić określoną subskrypcję do uruchomienia. Jeśli nie planujesz używania tego skryptu, możesz zignorować wymagania dotyczące uprawnień dla metody FireEvent.
Tryb macierzysty:
Lista subskrypcji: wyliczenie ReportOperation w raporcie, a użytkownik jest właścicielem subskrypcji) LUB ReadAnySubscription.
Zmienianie subskrypcji: użytkownik musi być członkiem grupy BUILTIN\Administrators
Podrzędne elementy listy: ReadProperties na elemencie
Zdarzenie pożaru: GenerateEvents (System)
Tryb SharePoint:
Wyświetlanie listy subskrypcji: ZarządzajAlerts LUB CreateAlerts w raporcie, a użytkownik jest właścicielem subskrypcji, a subskrypcja jest subskrypcją czasową).
Zmienianie subskrypcji: ManageWeb
Elementy podrzędne listy: ViewListItems
Zdarzenie pożaru: ManageWeb
Aby uzyskać więcej informacji, zobacz Porównanie ról i zadań w usługach Reporting Services z grupami i uprawnieniami programu SharePoint.
Użycie skryptu
Tworzenie plików skryptów (.ps1)
Utwórz folder o nazwie c:\scripts. Jeśli wybierzesz inny folder, zmodyfikuj nazwę folderu używaną w przykładowych instrukcjach składni wiersza polecenia.
Utwórz plik tekstowy dla każdego skryptu i zapisz pliki w folderze c:\scripts. Podczas tworzenia
.ps1plików użyj nazwy z każdej przykładowej składni wiersza polecenia.Otwórz wiersz polecenia z uprawnieniami administracyjnymi.
Uruchom każdy plik skryptu przy użyciu przykładowej składni wiersza polecenia dostarczonej z każdym przykładem.
Przetestowane środowiska
Skrypty w tym artykule zostały przetestowane w programie PowerShell w wersji 3 i z następującymi wersjami usług Reporting Services:
-
SQL Server 2014 (12.x)
-
SQL Server 2012 (11.x)
-
SQL Server 2008 R2 (10.50.x)
Skrypt: Wyświetlanie listy własności wszystkich subskrypcji
Ten skrypt zawiera listę wszystkich subskrypcji w witrynie. Ten skrypt umożliwia przetestowanie połączenia lub zweryfikowanie ścieżki raportu i identyfikatora subskrypcji do użycia w innych skryptach. Ten skrypt jest również przydatny do inspekcji, jakie subskrypcje istnieją i kto jest ich właścicielem.
Składnia trybu natywnego:
powershell c:\scripts\ListAll_SSRS_Subscriptions.ps1 "[server]/reportserver" "/"
Składnia trybu programu SharePoint:
powershell c:\scripts\ListAll_SSRS_Subscriptions.ps1 "[server]/_vti_bin/reportserver" "https://[server]"
Skrypt:
# Parameters
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
Param(
[string]$server,
[string]$site
)
$rs2010 += New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;
$subscriptions += $rs2010.ListSubscriptions($site); # use "/" for default native mode site
Write-Host " "
Write-Host "----- $server's Subscriptions: "
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted, Status
Wskazówka
Aby zweryfikować adresy URL witryny w trybie programu SharePoint, użyj polecenia cmdlet Get-SPSite programu SharePoint. Aby uzyskać więcej informacji, zobacz Get-SPSite.
Skrypt: Wyświetlanie listy wszystkich subskrypcji należących do określonego użytkownika
Ten skrypt zawiera listę wszystkich subskrypcji należących do określonego użytkownika. Ten skrypt umożliwia przetestowanie połączenia lub zweryfikowanie ścieżki raportu i identyfikatora subskrypcji do użycia w innych skryptach. Ten skrypt przydaje się, gdy ktoś w twojej organizacji odejdzie i chcesz zweryfikować, jakie subskrypcje należą do nich. Za pomocą skryptu możesz zmienić właściciela lub usunąć subskrypcję.
Składnia trybu natywnego:
powershell c:\scripts\ListAll_SSRS_Subscriptions4User.ps1 "[Domain]\[user]" "[server]/reportserver" "/"
Składnia trybu programu SharePoint:
powershell c:\scripts\ListAll_SSRS_Subscriptions4User.ps1 "[Domain]\[user]" "[server]/_vti_bin/reportserver" "https://[server]"
Skrypt:
# Parameters:
# currentOwner - DOMAIN\USER that owns the subscriptions you wish to change
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
# site - use "/" for default native mode site
Param(
[string]$currentOwner,
[string]$server,
[string]$site
)
$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;
$subscriptions += $rs2010.ListSubscriptions($site);
Write-Host " "
Write-Host " "
Write-Host "----- $currentOwner's Subscriptions: "
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted,Status | where {$_.owner -eq $currentOwner}
Skrypt: zmiana własności wszystkich subskrypcji należących do określonego użytkownika
Ten skrypt zmienia własność wszystkich subskrypcji należących do określonego użytkownika do nowego parametru właściciela.
Składnia trybu natywnego:
powershell c:\scripts\ChangeALL_SSRS_SubscriptionOwner.ps1 "[Domain]\current owner]" "[Domain]\[new owner]" "[server]/reportserver"
Składnia trybu programu SharePoint:
powershell c:\scripts\ChangeALL_SSRS_SubscriptionOwner.ps1 "[Domain]\{current owner]" "[Domain]\[new owner]" "[server]/_vti_bin/reportserver"
Skrypt:
# Parameters:
# currentOwner - DOMAIN\USER that owns the subscriptions you wish to change
# newOwner - DOMAIN\USER that will own the subscriptions you wish to change
# server - server and instance name (e.g. myserver/reportserver, myserver/reportserver_db2, myserver/_vti_bin/reportserver)
Param(
[string]$currentOwner,
[string]$newOwner,
[string]$server
)
$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;
$items = $rs2010.ListChildren("/", $true);
$subscriptions = @();
ForEach ($item in $items)
{
if ($item.TypeName -eq "Report")
{
$curRepSubs = $rs2010.ListSubscriptions($item.Path);
ForEach ($curRepSub in $curRepSubs)
{
if ($curRepSub.Owner -eq $currentOwner)
{
$subscriptions += $curRepSub;
}
}
}
}
Write-Host " "
Write-Host " "
Write-Host -foregroundcolor "green" "----- $currentOwner's Subscriptions changing ownership to $newOwner : "
$subscriptions | select SubscriptionID, Owner, Path, Description, Status | format-table -AutoSize
ForEach ($sub in $subscriptions)
{
$rs2010.ChangeSubscriptionOwner($sub.SubscriptionID, $newOwner);
}
$subs2 = @();
ForEach ($item in $items)
{
if ($item.TypeName -eq "Report")
{
$subs2 += $rs2010.ListSubscriptions($item.Path);
}
}
Skrypt: Wyświetlanie listy wszystkich subskrypcji skojarzonych z określonym raportem
Ten skrypt zawiera listę wszystkich subskrypcji skojarzonych z określonym raportem. Składnia ścieżki raportu w trybie SharePoint różni się i wymaga pełnego adresu URL. W przykładach składni używana nazwa raportu to "title only", która zawiera spację i dlatego wymaga użycia pojedynczych apostrofów wokół tej nazwy.
Składnia trybu natywnego:
powershell c:\scripts\List_SSRS_One_Reports_Subscriptions.ps1 "[server]/reportserver" "'/reports/title only'" "/"
Składnia trybu programu SharePoint:
powershell c:\scripts\List_SSRS_One_Reports_Subscriptions.ps1 "[server]/_vti_bin/reportserver" "'https://[server]/shared documents/title only.rdl'" "https://[server]"
Skrypt:
# Parameters:
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
# reportpath - path to report in the report server, including report name e.g. /reports/test report >> pass in "'/reports/title only'"
# site - use "/" for default native mode site
Param
(
[string]$server,
[string]$reportpath,
[string]$site
)
$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;
$subscriptions += $rs2010.ListSubscriptions($site);
Write-Host " "
Write-Host " "
Write-Host "----- $reportpath 's Subscriptions: "
$subscriptions | select Path, report, Description, Owner, SubscriptionID, lastexecuted,Status | where {$_.path -eq $reportpath}
Skrypt: Zmiana własności określonej subskrypcji
Ten skrypt zmienia własność określonej subskrypcji. Subskrypcję można zidentyfikować za pomocą identyfikatora subskrypcji przekazanego do skryptu. Aby określić prawidłowy identyfikator subskrypcji, możesz użyć jednego ze skryptów subskrypcji listy.
Składnia trybu natywnego:
powershell c:\scripts\Change_SSRS_Owner_One_Subscription.ps1 "[Domain]\[new owner]" "[server]/reportserver" "/" "ac5637a1-9982-4d89-9d69-a72a9c3b3150"
Składnia trybu programu SharePoint:
powershell c:\scripts\Change_SSRS_Owner_One_Subscription.ps1 "[Domain]\[new owner]" "[server]/_vti_bin/reportserver" "https://[server]" "9660674b-f020-453f-b1e3-d9ba37624519"
Skrypt:
# Parameters:
# newOwner - DOMAIN\USER that will own the subscriptions you wish to change
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
# site - use "/" for default native mode site
# subscriptionID - guid for the single subscription to change
Param(
[string]$newOwner,
[string]$server,
[string]$site,
[string]$subscriptionid
)
$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential;
$subscription += $rs2010.ListSubscriptions($site) | where {$_.SubscriptionID -eq $subscriptionid};
Write-Host " "
Write-Host "----- $subscriptionid's Subscription properties: "
$subscription | select Path, report, Description, SubscriptionID, Owner, Status
$rs2010.ChangeSubscriptionOwner($subscription.SubscriptionID, $newOwner)
#refresh the list
$subscription = $rs2010.ListSubscriptions($site) | where {$_.SubscriptionID -eq $subscriptionid}; # use "/" for default native mode site
Write-Host "----- $subscriptionid's Subscription properties: "
$subscription | select Path, report, Description, SubscriptionID, Owner, Status
Skrypt: uruchamianie (uruchamianie) pojedynczej subskrypcji
Ten skrypt uruchamia określoną subskrypcję przy użyciu metody FireEvent. Skrypt natychmiast uruchamia subskrypcję niezależnie od harmonogramu skonfigurowanego dla subskrypcji. Typ zdarzenia jest zgodny ze znanym zestawem zdarzeń zdefiniowanych w pliku konfiguracji serwera raportów rsreportserver.config. Skrypt używa następującego typu zdarzenia dla subskrypcji standardowych:
<Event>
<Type>TimedSubscription</Type>
</Event>
Aby uzyskać więcej informacji na temat pliku konfiguracji, zobacz RsReportServer.config plik konfiguracji.
Skrypt zawiera logikę opóźnienia "Start-Sleep -s 6", więc jest czas po wyzwoleniu zdarzenia, aby zaktualizowany stan był dostępny za pomocą metody ListSubscription.
Składnia trybu natywnego:
powershell c:\scripts\FireSubscription.ps1 "[server]/reportserver" $null "70366e82-2d3c-4edd-a216-b97e51e26de9"
Składnia trybu programu SharePoint:
powershell c:\scripts\FireSubscription.ps1 "[server]/_vti_bin/reportserver" "https://[server]" "c3425c72-580d-423e-805a-41cf9799fd25"
Skrypt:
# Parameters
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
# site - use $null for a native mode server
# subscriptionid - subscription guid
Param(
[string]$server,
[string]$site,
[string]$subscriptionid
)
$rs2010 = New-WebServiceProxy -Uri "https://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;
#event type is case sensitive to what is in the rsreportserver.config
$rs2010.FireEvent("TimedSubscription",$subscriptionid,$site)
Write-Host " "
Write-Host "----- Subscription ($subscriptionid) status: "
#get list of subscriptions and filter to the specific ID to see the Status and LastExecuted
Start-Sleep -s 6 # slight delay in processing so ListSubscription returns the updated Status and LastExecuted
$subscriptions = $rs2010.ListSubscriptions($site);
$subscriptions | select Status, Path, report, Description, Owner, SubscriptionID, EventType, lastexecuted | where {$_.SubscriptionID -eq $subscriptionid}