Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A partir do SQL Server 2008 R2Reporting Services, você pode transferir programaticamente a propriedade de uma assinatura do Reporting Services de um usuário para outro. Este tópico fornece vários scripts do Windows PowerShell que você pode usar para alterar ou simplesmente listar a propriedade da assinatura. Cada amostra inclui a sintaxe de amostra do modo Nativo e do modo SharePoint. Depois de alterar o proprietário da assinatura, a assinatura será então executada no contexto de segurança do novo proprietário, e o campo User!UserID no relatório exibirá o valor do novo proprietário. Para obter mais informações sobre o modelo de objeto que os exemplos do PowerShell chamam, consulte ChangeSubscriptionOwner
| Aplica-se a: Modo Nativo do Reporting Services | Modo do SharePoint do Reporting Services |
Neste tópico:
Script: listar todas as assinaturas pertencentes a um usuário específico
Script: alterar a propriedade de todas as assinaturas pertencentes a um usuário específico
Script: listar todas as assinaturas associadas a um relatório específico
Como usar os scripts
Permissões
Esta seção resume os níveis de permissão necessários para usar cada um dos métodos para o Reporting Services em modo Nativo e SharePoint. Os scripts neste tópico usam os seguintes métodos do Reporting Services:
O método ReportingService2010.FireEvent é usado apenas no último script para disparar uma assinatura específica a ser executada. Se você não planeja usar esse script, pode ignorar os requisitos de permissão para o método FireEvent.
Modo Nativo:
Listar assinaturas: ( HYPERLINK "https://technet.microsoft.com/library/microsoft.reportingservices.interfaces.reportoperation.aspx" ReadSubscription no relatório E o usuário é o proprietário da assinatura) OU ReadAnySubscription
Alterar assinaturas: O usuário deve ser membro do grupo BUILTIN\Administrators
Listar filhos: ReadProperties no item
Acionar evento: GenerateEvents (sistema)
Modo SharePoint:
Listar Assinaturas: Gerenciar Alertas OU ( HYPERLINK "https://technet.microsoft.com/library/microsoft.sharepoint.spbasepermissions.aspx" Criar Alertas no relatório E o usuário é o proprietário da assinatura e a assinatura está programada).
Alterar assinaturas: ManageWeb
Listar filhos: ViewListItems
Acionar evento: ManageWeb
Para obter mais informações, consulte Comparar funções e tarefas no Reporting Services com grupos e permissões do SharePoint.
Utilização de scripts
Criar arquivos de script (.ps1)
Crie uma pasta chamada c:\scripts. Se você escolher uma pasta diferente, modifique o nome da pasta usado nas instruções de sintaxe de linha de comando de exemplo.
Crie um arquivo de texto para cada script e salve os arquivos na pasta c:\scripts. Ao criar os arquivos .ps1, use o nome de cada sintaxe de linha de comando de exemplo.
Abra uma prompt de comando com privilégios de administrativos.
Execute cada arquivo de script usando a sintaxe de linha de comando de exemplo fornecida com cada exemplo.
Ambientes testados
Os scripts neste tópico foram testados no PowerShell versão 3 e com as seguintes versões do Reporting Services:
SQL Server 2014
SQL Server 2012
SQL Server 2008 R2
Script: listar a propriedade de todas as assinaturas
Esse script lista todas as assinaturas em um site. Você pode usar esse script para testar sua conexão ou verificar o caminho do relatório e a ID da assinatura para uso nos outros scripts. Esse também é um script útil para simplesmente auditar quais assinaturas existem e quem as possui.
Sintaxe de modo nativo
powershell c:\scripts\ListAll_SSRS_Subscriptions.ps1 "[server]/reportserver" "/"
Sintaxe do modo SharePoint
powershell c:\scripts\ListAll_SSRS_Subscriptions.ps1 "[server]/_vti_bin/reportserver" "http://[server]"
Roteiro
# Parameters
# server - server and instance name (e.g. myserver/reportserver or myserver/reportserver_db2)
Param(
[string]$server,
[string]$site
)
$rs2010 += New-WebServiceProxy -Uri "http://$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
Dica
Para verificar URLs de sites no modo do SharePoint, use o cmdlet Get-SPSitedo SharePoint. Para saber mais, veja Get-SPSite.
Script: listar todas as assinaturas de propriedade de um usuário específico
Esse script lista todas as assinaturas de propriedade de um usuário específico. Você pode usar esse script para testar sua conexão ou verificar o caminho do relatório e a ID da assinatura para uso nos outros scripts. Esse script é útil quando alguém em sua organização sai e você deseja verificar quais assinaturas elas possuíam para que você possa alterar o proprietário ou excluir a assinatura.
Sintaxe de modo nativo
powershell c:\scripts\ListAll_SSRS_Subscriptions4User.ps1 "[Domain]\[user]" "[server]/reportserver" "/"
Sintaxe de modo do SharePoint
powershell c:\scripts\ListAll_SSRS_Subscriptions4User.ps1 "[Domain]\[user]" "[server]/_vti_bin/reportserver" "http://[server]"
Roteiro
# 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 "http://$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}
Script: alterar a propriedade de todas as assinaturas de propriedade de um usuário específico
Esse script muda a propriedade de todas as assinaturas de um usuário específico para o parâmetro do novo proprietário.
Sintaxe de modo nativo
powershell c:\scripts\ChangeALL_SSRS_SubscriptionOwner.ps1 "[Domain]\current owner]" "[Domain]\[new owner]" "[server]/reportserver"
Sintaxe de modo do SharePoint
powershell c:\scripts\ChangeALL_SSRS_SubscriptionOwner.ps1 "[Domain]\{current owner]" "[Domain]\[new owner]" "[server]/_vti_bin/reportserver"
Roteiro
# 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 "http://$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);
}
}
Script: listar todas as assinaturas associadas a um relatório específico
Esse script lista todas as assinaturas associadas a um relatório específico. A sintaxe do caminho do relatório é um modo diferente do SharePoint que requer uma URL completa. Nos exemplos de sintaxe, o nome do relatório usado é "apenas título", que contém um espaço e, portanto, requer as aspas simples em torno do nome do relatório.
Sintaxe de modo nativo
powershell c:\scripts\List_SSRS_One_Reports_Subscriptions.ps1 "[server]/reportserver" "'/reports/title only'" "/"
Sintaxe de modo do SharePoint
powershell c:\scripts\List_SSRS_One_Reports_Subscriptions.ps1 "[server]/_vti_bin/reportserver" "'http://[server]/shared documents/title only.rdl'" "http://[server]"
Roteiro
# 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 "http://$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}
Script: alterar a propriedade de uma assinatura específica
Esse script altera a propriedade de uma assinatura específica. A assinatura é identificada pela SubscriptionID que você passa para o script. Você pode usar um dos scripts de assinatura da lista para determinar a SubscriptionID correta.
Sintaxe de modo nativo
powershell c:\scripts\Change_SSRS_Owner_One_Subscription.ps1 "[Domain]\[new owner]" "[server]/reportserver" "/" "ac5637a1-9982-4d89-9d69-a72a9c3b3150"
Sintaxe do modo SharePoint
powershell c:\scripts\Change_SSRS_Owner_One_Subscription.ps1 "[Domain]\[new owner]" "[server]/_vti_bin/reportserver" "http://[server]" "9660674b-f020-453f-b1e3-d9ba37624519"
Roteiro
# 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 "http://$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
Script: executar (acionar) uma única assinatura
Esse script executará uma assinatura específica usando o método FireEvent. O script executará imediatamente a assinatura, independentemente do agendamento configurado para a assinatura. O EventType é correspondido com o conjunto conhecido de eventos que são definidos no arquivo de configuração do servidor de relatório rsreportserver.config O script usa o seguinte tipo de evento para assinaturas padrão:
<Event>
<Type>TimedSubscription</Type>
</Event>
Para obter mais informações sobre o arquivo de configuração, consulte RSReportServer Configuration File.
O script inclui a lógica de atraso "Start-Sleep -s 6" para que, após o disparo do evento, haja tempo para que o status atualizado esteja disponível com o método ListSubscription.
Sintaxe de modo nativo
powershell c:\scripts\FireSubscription.ps1 "[server]/reportserver" $null "70366e82-2d3c-4edd-a216-b97e51e26de9"
Sintaxe de modo do SharePoint
powershell c:\scripts\FireSubscription.ps1 "[server]/_vti_bin/reportserver" "http://[server]" "c3425c72-580d-423e-805a-41cf9799fd25"
Roteiro
# 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 "http://$server/ReportService2010.asmx" -Namespace SSRS.ReportingService2010 -UseDefaultCredential ;
#event type is case sensative 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}
Consulte Também
ListSubscriptions ChangeSubscriptionOwner ListChildren FireEvent