Partager via


Méthode ConfigurationSetting - GenerateDatabaseRightsScript

Génère un script SQL que vous pouvez utiliser pour accorder l’accès à un utilisateur à la base de données du serveur de rapports. En outre, il accorde l’accès à d’autres bases de données requises pour qu’un serveur de rapports puisse s’exécuter. L’appelant doit se connecter au serveur de base de données SQL Server et exécuter le script.

Syntaxe

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);  

Paramètres

UserName
Nom d’utilisateur ou identificateur de sécurité Windows (SID) de l’utilisateur auquel le script accorde des droits.

DatabaseName
Nom de la base de données à laquelle le script accorde l’accès à l’utilisateur.

IsRemote
Valeur booléenne indiquant si la base de données est distante du serveur de rapports.

IsWindowsUser
Valeur booléenne qui indique si le nom d’utilisateur spécifié est un utilisateur Windows ou un utilisateur SQL Server.

Script
[out] Chaîne contenant le script SQL Server généré.

HRESULT
[out] Valeur indiquant si l'appel a réussi ou échoué.

Valeur retournée

Retourne un paramètre HRESULT qui indique si l'appel de la méthode a réussi ou a échoué. Une valeur 0 indique que l'appel de méthode a réussi. Une valeur différente de zéro indique qu’une erreur s’est produite.

Notes

Si DatabaseName est vide, IsRemote est ignoré et la valeur du fichier de configuration du serveur de rapports est utilisée comme nom de base de données.

Si IsWindowsUser est défini sur true, UserName doit être au format <domain>\<username>.

Quand l’option IsWindowsUser est définie sur true, le script généré accorde des droits de connexion à l’utilisateur pour SQL Server, en définissant la base de données du serveur de rapports comme base de données par défaut, et il accorde le rôle RSExec sur la base de données du serveur de rapports, la base de données temporaire du serveur de rapports, la base de données principale et la base de données système MSDB.

Quand IsWindowsUser a la valeur true, la méthode accepte les SID Windows standard comme entrée. Lorsque vous fournissez un nom de compte de service ou un SID Windows standard, ce nom est converti en une chaîne de nom d’utilisateur. Si la base de données est locale, le compte est converti en la représentation localisée correcte du compte. Si la base de données est distante, le compte est représenté en tant que compte de l’ordinateur.

Le tableau suivant répertorie les comptes qui sont convertis et indique leur représentation distante.

Compte/SID converti Nom commun Nom distant
(S-1-5-18) Système Local <Domain>\<ComputerName>$
.\LocalSystem Système Local <Domain>\<ComputerName>$
ComputerName\LocalSystem Système Local <Domain>\<ComputerName>$
LocalSystem Système Local <Domain>\<ComputerName>$
(S-1-5-20) Service réseau <Domain>\<ComputerName>$
NT AUTHORITY\NetworkService Service réseau <Domain>\<ComputerName>$
(S-1-5-19) Service local Erreur
NT AUTHORITY\LocalService Service local Erreur

Sur Windows 2000, si vous utilisez un compte intégré et que la base de données du serveur de rapports est distante, une erreur est retournée.

Si le compte intégré LocalService est spécifié et que la base de données du serveur de rapports est distante, une erreur est retournée.

Quand IsWindowsUser a la valeur true, le fournisseur WMI détermine si la base de données du serveur de rapports réside sur le même ordinateur ou sur un ordinateur distant. Cette détermination est effectuée quand la valeur fournie dans UserName doit être traduite. Pour déterminer si l’installation est locale, le fournisseur WMI évalue la propriété DatabaseServerName par rapport à la liste de valeurs suivante. Si une correspondance est trouvée, la base de données est locale. Dans le cas contraire, elle est distante. La comparaison respecte la casse.

Valeur de DatabaseServerName Exemple
« . »
"(local)"
"LOCAL"
localhost
<Machinename> labtest14
<MachineFQDN> example.redmond.microsoft.com
<IPAddress> 180.012.345,678

Quand l’option IsWindowsUser est définie sur true, le fournisseur WMI appelle LookupAccountName pour obtenir le SID du compte, puis LookupAccountSID pour obtenir le nom à insérer dans le script SQL Server. Cette action garantit que le nom du compte utilisé réussisse la validation SQL Server.

Quand IsWindowsUser a la valeur false, le script généré accorde le rôle RSExec sur la base de données du serveur de rapports, la base de données temporaire du serveur de rapports et la base de données système MSDB.

Quand l’option IsWindowsUser est définie sur false, l’utilisateur SQL Server doit déjà exister sur SQL Server pour que le script puisse s’exécuter avec succès.

Si aucune base de données de serveur de rapports n’est spécifiée pour le serveur de rapports, l’appel de GrantRightsToDatabaseUser retourne une erreur.

Le script généré prend en charge SQL Server 2000 (8.x), SQL Server 2005 et SQL Server 2008 (10.0.x).

Spécifications

Espace de noms : root\Microsoft\SqlServer\ReportServer\<InstanceName>\v13\Admin