webentwicklung-frage-antwort-db.com.de

Wie erstelle ich einen neuen Benutzer in einer SQL Azure-Datenbank?

Ich versuche folgende Vorlage zu verwenden:

-- =================================================
-- Create User as DBO template for SQL Azure Database
-- =================================================
-- For login <login_name, sysname, login_name>, create a user in the database
CREATE USER <user_name, sysname, user_name>
    FOR LOGIN <login_name, sysname, login_name>
    WITH DEFAULT_SCHEMA = <default_schema, sysname, dbo>
GO

-- Add user to the database owner role
EXEC sp_addrolemember N'db_owner', N'<user_name, sysname, user_name>'
GO

Ich möchte einen Benutzer namens user1 mit dem Kennwort "user1pass" erstellen. Ich habe eine Verbindung mit meiner Standarddatenbank "Authentifizierung" hergestellt, und ich habe ein Abfragefenster geöffnet.

Aber die Vorlage macht für mich keinen Sinn. Was ist zum Beispiel sysname, wo gebe ich das Passwort ein und was sollte ich als default_schema verwenden?

Der bestimmte Benutzer muss die Macht haben, alles zu tun. Aber wie richte ich es so ein, dass er alles kann. Wird das gemacht, wenn ich den Benutzer zum Datenbankbesitzer mache?

Bisher habe ich versucht:

CREATE USER user1, sysname, user1
    FOR LOGIN user1, sysname, user1
    WITH DEFAULT_SCHEMA = dbo, sysname, dbo
GO

Geben:

Meldung 102, Ebene 15, Status 1, Zeile 1 Falsche Syntax in der Nähe von ','.

und:

CREATE USER user1
    FOR LOGIN user1
    WITH DEFAULT_SCHEMA = dbo
GO

Geben:

Msg 15007, Ebene 16, Status 1, Zeile 1 'Benutzer1' i

s kein gültiges Login oder Sie haben keine Berechtigung.

47
user1679941

Unter diesem Link finden Sie alle Informationen: https://Azure.Microsoft.com/de-de/blog/adding-users-to-your-sql-Azure-database/

Zuerst müssen Sie ein Login für SQL Azure erstellen. Die Syntax lautet wie folgt:

CREATE LOGIN username WITH password='password';

Dieser Befehl muss in master db ausgeführt werden. Erst danach können Sie Befehle zum Erstellen eines Benutzers in der Datenbank ausführen. Die Funktionsweise von SQL Azure oder SQL Server besteht darin, dass zuerst auf Serverebene ein Login erstellt wird, das dann einem Benutzer in jeder Datenbank zugeordnet wird.

HTH

24
Igorek

Bearbeiten - Enthaltener Benutzer (Version 12 und höher)

Ab SQL Azure 12 werden Datenbanken als Contained Databases erstellt, sodass Benutzer direkt in Ihrer Datenbank erstellt werden können, ohne dass ein Server-Login über Master erforderlich ist.

CREATE USER [MyUser] WITH PASSWORD = 'Secret';
ALTER ROLE [db_datareader] ADD MEMBER [MyUser];

Beachten Sie beim Herstellen einer Verbindung zur Datenbank bei Verwendung eines enthaltenen Benutzers, dass Sie die Datenbank immer in der Verbindungszeichenfolge angeben müssen.

 Connecting via a contained User

Herkömmlicher Server-Login - Datenbankbenutzer (vor Version 12)

Um die Antwort von @ Igorek hinzuzufügen, können Sie in SQL Server Management Studio Folgendes tun:

Neues Login auf dem Server erstellen
In master (über die Dropdown-Liste Available databases in SSMS - das ist, weil USE master in Azure nicht funktioniert):

enter image description here

erstellen Sie das Login:

CREATE LOGIN username WITH password='password';

Neuen Benutzer in der Datenbank anlegen
Zur aktuellen Datenbank wechseln (erneut über die verfügbaren Datenbanken oder eine neue Verbindung)

CREATE USER username FROM LOGIN username;

(Ich habe angenommen, dass Sie möchten, dass der Benutzer und die Anmeldungen als username gebunden werden. Ändern Sie dies jedoch, wenn dies nicht der Fall ist.)

Füge den Benutzer nun den relevanten Sicherheitsrollen hinzu

EXEC sp_addrolemember N'db_owner', N'username'
GO

(Offensichtlich sollte ein App-Benutzer weniger Berechtigungen als dbo haben.)

77
StuartLC

Ich folgte den Antworten hier, aber als ich versuchte, mich mit meinem neuen Benutzer zu verbinden, wurde eine Fehlermeldung mit dem Code "The server principal 'newuser' is not able to access the database 'master' under the current security context" angezeigt.

Ich musste auch einen neuen Benutzer in der Master-Tabelle erstellen, um mich erfolgreich mit SSMS anzumelden.

USE [master]
GO
CREATE LOGIN [newuser] WITH PASSWORD=N'blahpw'
GO
CREATE USER [newuser] FOR LOGIN [newuser] WITH DEFAULT_SCHEMA=[dbo]
GO

USE [MyDatabase]
CREATE USER newuser FOR LOGIN newuser WITH DEFAULT_SCHEMA = dbo
GO
EXEC sp_addrolemember N'db_owner', N'newuser'
GO
18
nthpixel

Ich benutze das Azure Management Console Tool von CodePlex, mit einer sehr nützlichen GUI, probiere es aus. Sie können etwas Code speichern.

10
Jorge

Sie können einfach einen enthaltenen Benutzer in SQL DB V12 erstellen. 

Create user containeduser with password = 'Password'

Die Anmeldung der enthaltenen Benutzer ist effizienter als die Anmeldung an der Datenbank mit dem von master erstellten Login. Weitere Informationen finden Sie unter http://www.sqlindepth.com/contained-users-in-sql-Azure-db-v12/

7

erstellen Sie einen Benutzer und fügen Sie ihn einer bestimmten Rolle hinzu:

CREATE USER [test] WITH PASSWORD=N'<strong password>'
go
ALTER ROLE [db_datareader] ADD MEMBER [test]
go
1
Antonio Santise

Ich fand diesen Link sehr hilfreich:
https://Azure.Microsoft.com/de-de/documentation/articles/sql-database-manage-logins/

Es beschreibt Details wie:
- Azure SQL Database-Abonnentenkonto
- Verwenden von Azure Active Directory-Benutzern für den Zugriff auf die Datenbank
- Hauptkonten auf Serverebene (uneingeschränkter Zugriff)
- Hinzufügen von Benutzern zur Datenbankrolle dbmanager

Ich habe diese und Stuarts Antwort verwendet, um Folgendes zu tun:
In der master-Datenbank (siehe Link, wer über Berechtigungen verfügt):

CREATE LOGIN [MyAdmin] with password='ReallySecurePassword'

Und dann auf die betreffende Datenbank:

CREATE USER [MyAdmin] FROM LOGIN [MyAdmin]
ALTER ROLE db_owner ADD MEMBER [MyAdmin]

Sie können auch Benutzer wie folgt erstellen:

CREATE USER [[email protected]] FROM EXTERNAL PROVIDER;
0
noelicus

Ich denke, die Vorlagen verwenden die folgende Notation: Variablenname, Variablentyp, Standardwert. 

Sysname ist ein integrierter Datentyp, der die Namen von Systemobjekten enthalten kann. 

Es ist auf 128 Unicode-Zeichen beschränkt.

-- same as sysname type
declare @my_sysname nvarchar(128);
0
CRAFTY DBA