SQL Server 2008: Wie erteile ich einem Benutzernamen Berechtigungen?


102

Ich muss in der Lage sein, eine ODBC-Verbindung über die SQL Server-Authentifizierung herzustellen.

Wie erteile ich in SSMS einem Benutzer die Berechtigung, ALLE RECHTE in einer bestimmten Datenbank zu haben?

Gibt es eine Möglichkeit, dies mit SSMS grafisch zu tun?

Antworten:


139

Wenn Sie Ihrem Benutzer alle Leseberechtigungen erteilen möchten, können Sie Folgendes verwenden:

EXEC sp_addrolemember N'db_datareader', N'your-user-name'

Dadurch wird db_datareaderdiesem Benutzer die Standardrolle (Leseberechtigung für alle Tabellen) hinzugefügt.

Es gibt auch eine db_datawriterRolle, die Ihrem Benutzer alle WRITE-Berechtigungen (INSERT, UPDATE, DELETE) für alle Tabellen gibt:

EXEC sp_addrolemember N'db_datawriter', N'your-user-name'

Wenn Sie detaillierter sein müssen, können Sie den folgenden GRANTBefehl verwenden:

GRANT SELECT, INSERT, UPDATE ON dbo.YourTable TO YourUserName
GRANT SELECT, INSERT ON dbo.YourTable2 TO YourUserName
GRANT SELECT, DELETE ON dbo.YourTable3 TO YourUserName

usw. - Sie können SELECT, INSERT, UPDATE, DELETE für bestimmte Tabellen detailliert erteilen.

Dies alles ist in den MSDN Books Online für SQL Server sehr gut dokumentiert .

Und ja, Sie können dies auch grafisch tun. Gehen Sie in SSMS zu Ihrer Datenbank, Security > Usersklicken Sie mit der rechten PropertiesMaustaste auf den Benutzer, dem Sie Berechtigungen erteilen möchten, und sehen Sie unten "Datenbankrollenmitgliedschaften", in denen Sie die hinzufügen können Benutzer zu DB-Rollen.

Alt-Text


Irgendwie habe ich keinen Benutzerknoten in der Sicherheitsstruktur in SSMS, nur Anmeldungen und Anmeldeinformationen. Abgesehen davon muss der Benutzer der betreffenden Datenbank zugeordnet werden, damit sp_addrolemember funktioniert, andernfalls "Benutzer ... nicht" in der Datenbank vorhanden "Fehler ist angegeben ( stackoverflow.com/questions/7232559/… - siehe Kommentare zur akzeptierten Antwort) - Ich könnte eine Benutzer-DB-Zuordnung über Eigenschaften des
Anmeldeobjekts

@marc_s, Wie erteile ich mit SSMS Berechtigungen für eine bestimmte Tabelle?
CAD


60

Wenn Sie wirklich möchten, dass sie ALLE Rechte haben:

use YourDatabase
go
exec sp_addrolemember 'db_owner', 'UserName'
go

18

Wie das folgende. Dadurch wird der Benutzer zur Datenbank.

EXEC sp_addrolemember N'db_owner', N'USerNAme'
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.