Condividi tramite


Metodo ConfigurationSetting - GenerateDatabaseRightsScript

Genera uno script SQL che si può usare per concedere a un utente l’accesso al database del server di report. Inoltre, concede l'accesso ad altri database necessari per l'esecuzione di un server di report. Il chiamante dovrebbe connettersi al database SQL Server ed eseguire lo script.

Sintassi

Public Sub GenerateDatabaseRightsScript(ByVal UserName As String, _  
    ByVal DatabaseName As String, ByVal IsRemote As Boolean, _  
    ByVal IsWindowsUser As Boolean, ByRef Script As String, _  
    ByRef HRESULT As Int32)  
public void GenerateDatabaseRightsScript(string UserName, string DatabaseName, bool IsRemote, bool IsWindowsUser, out string Script,   
out Int32 HRESULT);  

Parametri

UserName
Nome utente o ID di sicurezza (SID) di Windows dell'utente al quale lo script concede i diritti.

DatabaseName
Nome del database al quale lo script concede l'accesso all'utente.

IsRemote
Valore booleano a che indica se il database è remoto per il server di report.

IsWindowsUser
Valore booleano che indica se il nome utente specificato è un utente di Windows o di SQL Server.

Script
[out] Stringa che contiene lo script di SQL Server generato.

HRESULT
[out] Valore che indica se la chiamata ha avuto esito positivo o negativo.

Valore restituito

Restituisce un HRESULT che indica l'esito positivo o negativo della chiamata al metodo. Un valore pari a 0 indica l'esito positivo della chiamata al metodo. Un valore diverso da zero indica che si è verificato un errore.

Osservazioni:

Se DatabaseName è vuoto, IsRemote viene ignorato e per il nome del database viene usato il valore del file di configurazione del server di report.

Se IsWindowsUser è impostato su true, UserName deve essere nel formato <domain>\<username>.

Quando IsWindowsUser è impostato su true, lo script generato concede all'utente i diritti di accesso per SQL Server, impostando il database del server di report come database predefinito, e concede il ruolo RSExec nel database del server di report, nel database temporaneo del server di report, nel database principale e nel database di sistema MSDB.

Quando IsWindowsUser è impostato su true, il metodo accetta come input i SID standard di Windows. Quando si fornisce un SID standard di Windows o un nome dell'account del servizio, questo viene convertito in una stringa del nome utente. Se il database è locale, l'account viene convertito nella rappresentazione localizzata corretta dell'account. Se il database è remoto, l'account viene rappresentato come account del computer.

Nella tabella seguente vengono mostrati gli account convertiti e la relativa rappresentazione remota.

Account / SID convertito Nome comune Nome remoto
(S-1-5-18) Sistema locale <Dominio>\<NomeComputer>$
.\LocalSystem Sistema locale <Dominio>\<NomeComputer>$
ComputerName\LocalSystem Sistema locale <Dominio>\<NomeComputer>$
LocalSystem Sistema locale <Dominio>\<NomeComputer>$
(S-1-5-20) Network Service (Servizio di rete) <Dominio>\<NomeComputer>$
NT AUTHORITY\NetworkService Network Service (Servizio di rete) <Dominio>\<NomeComputer>$
(S-1-5-19) Servizio locale Error
NT AUTHORITY\LocalService Servizio locale Error

In Windows 2000 se si utilizza un account predefinito e il database del server di report è remoto, viene restituito un errore.

Se l'account LocalService predefinito è specificato e il database del server di report è remoto, viene restituito un errore.

Quando IsWindowsUser è True, il provider WMI determina se il database del server di report si trova sullo stesso computer o su un computer remoto. Questa determinazione viene eseguita quando il valore specificato in UserName deve essere tradotto. Per determinare se l'installazione è locale, il provider WMI valuta la proprietà DatabaseServerName rispetto al seguente elenco di valori. Se viene rilevata una corrispondenza, il database è locale. In caso contrario, è remoto. Il confronto non fa distinzione tra maiuscole e minuscole.

Valore di DatabaseServerName Esempio
"."
"(local)"
"LOCAL"
localhost
<NomeComputer> testlab14
<FQDNcomputer> example.redmond.microsoft.com
<IPAddress> 180.012.345,678

Quando IsWindowsUser è impostato su True, il provider WMI chiama LookupAccountName per ottenere il SID per l'account, quindi chiama LookupAccountSID per ottenere il nome da inserire nello script del Server SQL. Questa azione garantisce che il nome account usato passi la convalida SQL Server.

Quando IsWindowsUser è impostato su false, lo script generato concede il ruolo RSExec nel database del server di report, nel database temporaneo del server di report e nel database MSDB.

Quando IsWindowsUser è impostato su false, per garantire la corretta esecuzione dello script è necessario che l'utente di SQL Server esista già in SQL Server.

Se il server di report non dispone di un database del server di report specificato, la chiamata a GrantRightsToDatabaseUser restituisce un errore.

Lo script generato supporta SQL Server 2000 (8.x), SQL Server 2005 e SQL Server 2008 (10.0.x).

Requisiti

Spazio dei nomi: root\Microsoft\SqlServer\ReportServer\<InstanceName>\v13\Admin