Was ist T-SQL, um Lese- und Schreibzugriff auf Tabellen in einer Datenbank in SQL Server zu gewähren?

72

Was ist das genaue SQL, das einem Benutzer in SQL Server zugewiesen werden soll, db_datareaderund welche db_datawriterRollen?

Der Benutzername ist MYUSERund die Datenbank ist MYDB.

ConsultUtah
quelle

Antworten:

106

In SQL Server 2012, 2014:

USE mydb
GO

ALTER ROLE db_datareader ADD MEMBER MYUSER
GO
ALTER ROLE db_datawriter ADD MEMBER MYUSER
GO

In SQL Server 2008:

use mydb
go

exec sp_addrolemember db_datareader, MYUSER 
go
exec sp_addrolemember db_datawriter, MYUSER 
go

So weisen Sie auch die Fähigkeit zu, alle gespeicherten Prozeduren für eine Datenbank auszuführen:

GRANT EXECUTE TO MYUSER;

So weisen Sie die Fähigkeit zu, bestimmte gespeicherte Prozeduren auszuführen:

GRANT EXECUTE ON dbo.sp_mystoredprocedure TO MYUSER;
cmsjr
quelle
12

Ab SQLServer 2012 eleganter ändern Rolle :

use mydb
go

ALTER ROLE db_datareader
  ADD MEMBER MYUSER 
go
ALTER ROLE db_datawriter
  ADD MEMBER MYUSER 
go
dani herrera
quelle
0

Es ist besser, eine neue Rolle zu erstellen, dann Ausführungsberechtigungen für diese Rolle zu erteilen, auszuwählen usw. und schließlich Benutzer dieser Rolle zuzuweisen.

Rolle erstellen

CREATE ROLE [db_SomeExecutor] 
GO

Erteilen Sie dieser Rolle die Berechtigung

GRANT EXECUTE TO db_SomeExecutor
GRANT INSERT  TO db_SomeExecutor

Um Benutzerdatenbank hinzuzufügen> Sicherheit >> Rollen> Datenbanksolen> Eigenschaften> Hinzufügen (unten rechts), können Sie AD-Benutzer suchen und dann hinzufügen

ODER

   EXEC sp_addrolemember 'db_SomeExecutor', 'domainName\UserName'

Bitte beziehen Sie sich auf diesen Beitrag

singhswat
quelle