Metodo ConfigurationSetting - GenerateDatabaseRightsScript

Genera uno script SQL che può essere utilizzato per concedere a un utente i diritti per il database del server di report e per gli altri database richiesti affinché un server di report venga eseguito. Il chiamante deve connettersi al server di 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 concederà i diritti.

DatabaseName
Nome del database al quale lo script concederà 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 un utente di SQL Server .

Script
[out] Stringa che contiene lo script 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 master e nel database di sistema MSDB.

Quando IsWindowsUser è impostato su true, il metodo accetta come input i SID standard di Windows. Quando viene fornito un SID standard di Windows o un nome dell'account di 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 <Domain>\<ComputerName>$
.\LocalSystem Sistema locale <Domain>\<ComputerName>$
ComputerName\LocalSystem Sistema locale <Domain>\<ComputerName>$
LocalSystem Sistema locale <Domain>\<ComputerName>$
(S-1-5-20) Servizio di rete <Domain>\<ComputerName>$
NT AUTHORITY\NetworkService Servizio di rete <Domain>\<ComputerName>$
(S-1-5-19) Servizio locale Errore, vedere di seguito.
NT AUTHORITY\LocalService Servizio locale Errore, vedere di seguito.

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 e il valore fornito in UserName deve essere convertito, il provider WMI determina se il database del server di report si trova sullo stesso computer o su un computer remoto. 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
<Machinename> testlab14
<MachineFQDN> 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 SQL Server . In questo modo si garantisce che il nome account utilizzato passerà 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.

Requisiti

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

Vedere anche

Membri di MSReportServer_ConfigurationSetting