2009-04-14 5 views

Antwort

11

Hier ist ein Skript, das einen neuen Benutzer erstellt und ihm nur die Berechtigungen für eine bestimmte Ansicht gewährt.

USE [master] 
GO 
CREATE LOGIN [LimitedUser] WITH PASSWORD=N'testPass', 
      DEFAULT_DATABASE=[master], 
      CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF 
GO 
USE [TestDB] 
GO 
CREATE USER [LimitedUser] FOR LOGIN [LimitedUser] 
GO 
use [TestDB] 
GO 
GRANT SELECT ON [dbo].[myView] TO [LimitedUser] 
GO 

bearbeiten

Statt diese Sie für einen bestimmten Benutzer tun möchten, anstatt mit Rollen zu berücksichtigen.

USE [TestDB] 
GO 
CREATE ROLE [LimitedRole] 
GO 
GRANT SELECT ON [dbo].[TestView] TO [LimitedRole] 
GO 
EXEC sp_addrolemember N'LimitedRole', N'LimitedUser' 
GO 

diese Weise, wenn Sie mehrere Benutzer zum Beispiel in einem Windows Authenitcation-Modus haben Sie viele Benutzer haben könnten, kann alle Zugang zu dieser Rolle gewährt werden. Auf diese Weise müssen Sie beim Hinzufügen/Entfernen von Ansichten nicht jeden Benutzer berühren.

+0

Josh interessiert sind. Gute Antwort. Wie eine neugierige Frage von einem unbeteiligten Zuschauer, gibt es eine Möglichkeit, auf der gleichen Route über die Benutzeroberfläche Create Login GUI zu enden? – TheTXI

+0

Ja, ich habe diese Skripte mit Sql Management Studio erstellt, musste zuerst den Benutzernamen und dann den Benutzer auf der DB-Ebene erstellen. – JoshBerke

2

Der Trick besteht darin, der Rolle Public keine ausdrücklichen Berechtigungen zu erteilen. Jeder Benutzer ist unwiderruflich ein Mitglied dieser Rolle, so dass es nicht möglich ist, zu verhindern, dass ein Benutzer der Datenbank Rechte erhält, die Sie der Öffentlichkeit erteilen.

von Abgesehen davon, fügen Sie einfach den Benutzer auf die entsprechenden DB und ihnen Rechte nur auf die Objekte geben Sie in

Verwandte Themen