Wie erteile ich die Berechtigung zum Ausführen einer gespeicherten Prozedur?

7

Ich habe eine AD-Gruppe, die als Windows Authenticated SQL Login auf meinem SQL Server eingerichtet ist. Darauf DatabaseAhat die db_datareaderund publicRollen. Daher haben die Benutzer dieser AD-Gruppe nur Lesezugriff auf die Entitäten in der Datenbank.

Innerhalb von habe DatabaseAich eine gespeicherte Prozedur, dbo.Proc1für die ich die executeBerechtigung für dieselbe AD-Gruppe erteilt habe .

Wenn ein Benutzer dieser AD-Gruppe eine Verbindung zu diesem Server herstellt, wird die Entität nicht angezeigt dbo.Proc1.

Gibt es eine andere Berechtigung, die ich für die fehlende Windows Authenticated SQL-Anmeldung (AD-Gruppe) erteilen muss?

Ich sehe, wenn ich mir die Eigenschaften von ansehe DatabaseA, dass es executeauf dieser Ebene eine Erlaubnis gibt, die noch NICHT erteilt wurde.

(Hinweis: Ich möchte nur, dass die Benutzer dieser AD-Gruppe ausgeführt werden können dbo.Proc1. Ich möchte nicht, dass sie in der Lage sind, Aktionen auszuführen , die nicht als schreibgeschützt gelten.)

JD
quelle
1
"Sie sehen die Entität dbo.Proc1 nicht." Dies sollte nur geschehen, wenn Sie die VIEW DEFINITION ausdrücklich abgelehnt haben. Andernfalls wird VIEW DEFINITION automatisch erteilt, wenn Sie eine andere Berechtigung für ein Objekt erteilen.
David Browne - Microsoft
Können sie die Prozedur ausführen oder sie können sie nicht in SSMS oder einer anderen Datenbank-GUI sehen? Ist es eine neue AD-Gruppe? Hat sich der Benutzer seit dem Hinzufügen ab- und angemeldet oder neu gestartet?
Alen
1
Es ist keine neue AD-Gruppe, sie haben sich definitiv abgemeldet und wieder angemeldet, seit sie hinzugefügt wurden. Sie sehen das Verfahren nicht. Ich habe absichtlich die Tatsache ausgelassen, dass sie versuchen, es in Excel zu ziehen (sie verwenden kein SSMS, aber ich lasse sie es jetzt installieren, um zu überprüfen, ob es sich um ein Excel-Problem handelt). Wenn sie in Excel zu Daten -> Daten abrufen -> Aus Datenbank -> Aus SQL Server-Datenbank wechseln, werden sie nach dem Servernamen gefragt, aber nicht nach Anmeldeinformationen gefragt (vorausgesetzt, sie werden über sein Domänenkonto authentifiziert) und dann in die Liste aufgenommen Bei Datenbanken wird die Entität dbo.Proc1 unter DatabaseA nicht angezeigt.
JD
@ DavidBrowne-Microsoft Wenn dies zutrifft, sollte die Berechtigung "Definition anzeigen" angezeigt werden, bei der GRANT in den Berechtigungseigenschaften der Entität dbo.Proc1 deaktiviert ist? Derzeit wird beim Überprüfen der Berechtigungen von dbo.Proc1 nur die Ausführungsberechtigung für dieses AD-Konto erteilt.
JD

Antworten:

8

in Excel, wenn sie zu Daten -> Daten abrufen -> Aus Datenbank -> Aus SQL Server-Datenbank wechseln

Das ist PowerQuery. Ich habe das gerade in Excel durchlaufen und gespeicherte Prozeduren werden nicht angezeigt, aber Funktionen mit Tabellenwerten. Sie können eine gespeicherte Prozedur aufrufen, diese wird jedoch im Abfrage-Designer nicht angezeigt. Geben Sie einfach 'exec dbo.Proc1' in das Dialogfeld "SQL-Anweisung" ein:

Geben Sie hier die Bildbeschreibung ein

David Browne - Microsoft
quelle
Du hast recht, das war die ganze Zeit das Problem! Heute habe ich gelernt, immer alle Details in meine ursprüngliche Frage aufzunehmen :). Danke für Ihre Hilfe! Ps Wenn Sie mit einem der Entwickler im PowerQuery-Team sprechen, ist es möglicherweise erwähnenswert, Verfahren in die Liste der UI-Entitäten aufzunehmen, die für die Benutzer hilfreich sind;). Verwenden Sie möglicherweise PowerShell wie SSMS, um alle Entitäten abzurufen.
JD