GenerateDatabaseRightsScript-Methode (WMI: MSReportServer_ConfigurationSetting)
Generiert ein SQL-Skript, mit dem einem Benutzer Berechtigungen für die Berichtsserver-Datenbank und andere Datenbanken erteilt werden können, die für die Ausführung eines Berichtsservers benötigt werden. Der Aufrufer sollte eine Verbindung mit dem SQL Server-Datenbankserver herstellen und anschließend das Skript ausführen.
Syntax
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);
Parameter
UserName
Der Benutzername oder die Windows-Sicherheits-ID (SID) des Benutzers, dem durch das Skript Berechtigungen erteilt werdenDatabaseName
Der Name der Datenbank, auf die der Benutzer mit dem Skript Zugriff erhält.IsRemote
Ein boolescher Wert, der angibt, ob die Datenbank entfernt vom Berichtsserver auf einem anderen Computer ausgeführt wird.IsWindowsUser
Ein boolescher Wert, der angibt, ob der angegebene Benutzername für einen Windows-Benutzer oder einen SQL Server-Benutzer stehtScript
[out] Eine Zeichenfolge, die das generierte SQL Server-Skript enthältHRESULT
[out] Wert, der angibt, ob der Aufruf erfolgreich war oder fehlgeschlagen ist
Rückgabewert
Gibt HRESULT zurück, wodurch der Erfolg oder das Fehlschlagen des Methodenaufrufs angegeben wird. Der Wert 0 (null) gibt an, dass der Methodenaufruf erfolgreich war. Ein Wert ungleich 0 (null) gibt an, dass ein Fehler aufgetreten ist.
Hinweise
Wenn DatabaseName leer ist, wird IsRemote ignoriert, und für den Datenbanknamen wird der Wert aus der Konfigurationsdatei für den Berichtsserver verwendet.
Wenn IsWindowsUser auf true festgelegt ist, sollte UserName im Format <Domäne>\<Benutzername> vorliegen.
Wenn IsWindowsUser auf true festgelegt ist, werden dem Benutzer durch das generierte Skript Anmeldeberechtigungen für SQL Server erteilt, wobei die Berichtsserver-Datenbank als Standarddatenbank festgelegt wird. Außerdem wird ihm die RSExec-Rolle für die Berichtsserver-Datenbank, die temporäre Berichtsserver-Datenbank, die Masterdatenbank und die MSDB-Systemdatenbank erteilt.
Wenn IsWindowsUser auf true festgelegt ist, akzeptiert die Methode standardmäßige Windows-SIDs als Eingabe. Wird eine standardmäßige Windows-SID oder ein Dienstkontoname bereitgestellt, wird diese bzw. dieser in eine Benutzernamen-Zeichenfolge übersetzt. Falls es sich bei der Datenbank um eine lokale Datenbank handelt, wird das Konto in die richtige lokalisierte Darstellung des Kontos übersetzt. Bei einer Remotedatenbank wird das Konto als das Konto des Computers dargestellt.
In der folgenden Tabelle sind Konten, die übersetzt werden, und ihre Remotedarstellung aufgeführt.
Konto/SID, das bzw. die übersetzt wird |
Allgemeiner Name |
Remotename |
---|---|---|
(S-1-5-18) |
Lokales System |
<Domäne>\<ComputerName>$ |
.\LocalSystem |
Lokales System |
<Domäne>\<ComputerName>$ |
ComputerName\LocalSystem |
Lokales System |
<Domäne>\<ComputerName>$ |
LocalSystem |
Lokales System |
<Domäne>\<ComputerName>$ |
(S-1-5-20) |
Netzwerkdienst |
<Domäne>\<ComputerName>$ |
NT AUTHORITY\NetworkService |
Netzwerkdienst |
<Domäne>\<ComputerName>$ |
(S-1-5-19) |
Lokaler Dienst |
Fehler - siehe unten |
NT AUTHORITY\LocalService |
Lokaler Dienst |
Fehler - siehe unten |
Wenn Sie unter Windows 2000 ein integriertes Konto verwenden und es sich bei der Berichtsserver-Datenbank um eine Remotedatenbank handelt, wird ein Fehler zurückgegeben.
Falls das integrierte LocalService-Konto angegeben wird und es sich bei der Berichtsserver-Datenbank um eine Remotedatenbank handelt, wird ein Fehler zurückgegeben.
Wenn IsWindowsUser auf true festgelegt ist und der in UserName bereitgestellte Wert übersetzt werden muss, bestimmt der WMI-Anbieter, ob sich die Berichtsserver-Datenbank auf demselben Computer oder auf einem Remotecomputer befindet. Um zu bestimmen, ob es sich um eine lokale Installation handelt, wertet der WMI-Anbieter die DatabaseServerName-Eigenschaft anhand der folgenden Werteliste aus. Wenn eine Übereinstimmung gefunden wird, handelt es sich um eine lokale Datenbank. Andernfalls ist es eine Remotedatenbank. Beim Vergleich wird die Groß- und Kleinschreibung nicht berücksichtigt.
Wert von "DatabaseServerName" |
Beispiel |
---|---|
“.” |
|
"(local)" |
|
"LOCAL" |
|
localhost |
|
<Machinename> |
testlab14 |
<MachineFQDN> |
example.redmond.microsoft.com |
<IPAddress> |
180.012.345,678 |
Wenn IsWindowsUser auf true festgelegt ist, ruft der WMI-Anbieter LookupAccountName auf, um die SID für das Konto abzurufen. Anschließend ruft er LookupAccountSID auf, um den im SQL Server-Skript einzufügenden Namen abzurufen. Hierdurch wird sichergestellt, dass der verwendete Kontoname die SQL Server-Überprüfung erfolgreich durchläuft.
Ist IsWindowsUser auf false festgelegt, wird dem Benutzer durch das generierte Skript die RSExec-Rolle für die Berichtsserver-Datenbank, die temporäre Berichtsserver-Datenbank und die MSDB-Datenbank erteilt.
Wenn IsWindowsUser auf false festgelegt ist, muss der SQL Server-Benutzer bereits in SQL Server vorhanden sein, damit das Skript erfolgreich ausgeführt werden kann.
Wenn für den Berichtsserver keine Berichtsserver-Datenbank angegeben ist, wird bei einem Aufruf von GrantRightsToDatabaseUser ein Fehler zurückgegeben.
Das generierte Skript unterstützt SQL Server 2000, SQL Server 2005 und SQL Server 2008.
Voraussetzungen
**Namespace:**root\Microsoft\SqlServer\ReportServer\RS_<EncodedInstanceName>\v10\Admin
**Plattform:**Windows Server 2003 Datacenter Edition; Windows Server 2003 Enterprise Edition; Windows Server 2003 Standard Edition; Windows Vista; Windows XP Professional mit Service Pack 2 (SP2) oder Service Pack 1 (SP1); oder Windows 2000 (alle Versionen)