Partager via


Méthode GenerateDatabaseRightsScript (WMI MSReportServer_ConfigurationSetting)

Génère un script SQL pouvant être utilisé pour accorder des droits d'utilisateur à la base de données du serveur de rapports et à d'autres bases de données requises pour l'exécution d'un serveur de rapports. Il est prévu que l’appelant se connecte au serveur de base de données SQL Server et exécute 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 accordera 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 de retour

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 truesur , UserName doit être au format <domaine>\<username>.

Lorsque IsWindowsUser est défini truesur , le script généré accorde des droits de connexion à l’utilisateur pour sql Server, la définition de la base de données du serveur de rapports comme base de données par défaut et 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 maître et la base de données système MSDB.

Lorsque IsWindowsUser est défini truesur , la méthode accepte les SID Windows standard comme entrée. Lorsqu'un nom de compte de service ou un SID Windows standard est fourni, il 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 (voir ci-dessous)
NT AUTHORITY\LocalService Service local Erreur (voir ci-dessous)

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 et qu’il est nécessaire de convertir la valeur indiquée dans UserName , 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. 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

Lorsque IsWindowsUser est défini truesur , le fournisseur WMI appelle LookupAccountName pour obtenir le SID du compte, puis appelle LookupAccountSID pour obtenir le nom à placer dans le script SQL Server. Cela garantit que le nom du compte utilisé réussisse la validation SQL Server.

Quand IsWindowsUser est défini falsesur , 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 MSDB.

Lorsque IsWindowsUser est défini falsesur , l’utilisateur SQL Server doit déjà exister sur le serveur SQL Server pour que le script s’exécute correctement.

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, SQL Server 2005 et SQL Server 2008.

Spécifications

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

Voir aussi

Membres MSReportServer_ConfigurationSetting