Datenbank erzeugen in MS SQL Server 2005 XE

Hallo Experten!

Ich habe ein kleines Problem welches man zwar durchaus selber Lösen könnte, wenn man nicht so in Eile wäre. Bitte helft mir:

Ich möchte im MS SQL Server 2005 XE eine Datenbank mit dem Namen SalesDB erzeugen. In dieser Datenbank soll es einen User geben (SalesHead) welcher der Besitzer der DB ist. Desweiteren soll es drei Rollen geben (SalesAdmin, SalesDBA, SalesUser) Diese Rollen sollen logischerweise unterschiedliche Rechte besitzen. Im speziellen nur unterschiedliche Rechte auf eine Tabelle (SalesAdmin --> alle Rechte auf Tabelle auch Delete und Truncate; SalesDBA nur update und Select; SalesUser nur Select).
Tabellenname = Articles
Das Erzeugen der Tabelle bzw. der DB ist nicht so das Problem. Ich komme nur durcheinander mit Benutzer, Login, Schema, Rolle, etc. Bitte mittels SQL Statements!
Für jede Art der Hilfe bin ich dankbar!!!
mfg

Hallo,

am Besten, du holst dir von Microsoft das (ebenfalls kostenlose) SQL-Server Management Studio Express. Damits gehts über klicken.

Ansonsten: die Referenz gibts bei Microsoft im Netz.

Der Grant Befehl geht jetzt ganz normal:

Als sa einloggen
USE deinedatenbank
GRANT CREATE TABLE TO deinuser
usw.

CREATE ROLE ichdarfdas
go
GRANT xxx ON schema.tabelle TO ichdarfdas
go
GRANT ichdarfdas TO deinuser
go

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

am Besten, du holst dir von Microsoft das (ebenfalls
kostenlose) SQL-Server Management Studio Express. Damits gehts
über klicken.

Ansonsten: die Referenz gibts bei Microsoft im Netz.

Ich weiß, aber die ist teilweise ziemlich verwirrend!!

Der Grant Befehl geht jetzt ganz normal:

Als sa einloggen
USE deinedatenbank
GRANT CREATE TABLE TO deinuser
usw.

CREATE ROLE ichdarfdas
go
GRANT xxx ON schema.tabelle TO ichdarfdas
go
GRANT ichdarfdas TO deinuser
go

Muss ich unbedingt ein Schema erstellen??
Was wäre in der Praxis üblich?
Und bitte was ist der Unterschied zwischen einem Benutzer und einem Login??

Gruß

Peter

Danke für die Antworten Peter!

Hallo,

der Datenbankserver kann mehrere Datenbanken gleichzeitig geöffnet haben (das können nicht alle).
User werden zuerst im Server erstellt. (Es können auch Windows-Domänenbenutzer sein.) Ich nehme eigentlich immer SQL-Autentifizierung. Da kann ich das Passwort selbst vergeben.
Es gibt Dinge, die macht man in einer Datenbank und andere ohne!
Einen neuen User legt man außerhalb der DB im DBMS an:

http://msdn2.microsoft.com/en-us/library/ms173463.aspx

–zuerst den USER anlegen
CREATE LOGIN AbolrousHazem
WITH PASSWORD = ‚340$Uuxwp7Mcxo7Khy‘;
–In die DB wechseln
USE AdventureWorks;
–Login erlauben
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO

Rollen werden in der DB erstellt

USE myDatenbank
CREATE ROLE ichdarfdas
go
GRANT SELECT ON werauchimmer.seinetabelle TO ichdarfdas
go
GRANT ichdarfdas TO irgendwer
go

Beim SQL-Server 2000 war das noch komplizierter. Da brauchte man die Systemfunktion sp_addrole

Ein Schema entsteht automatisch sobald ein User eigene Objekte besitzt. (Dazu braucht er dann auch entsprechende Privilegien:

USE myDatenbank
GRANT CREATE TABLE to irgendwer
go
GRANT CREATE VIEW to irgendwer
go
GRANT CREATE PROCEDURE TO irgendwer
go

Gruß

Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

1 Like

Vielen Dank!!!
Genau das wollte ich wissen!

Ich habe einen User erstellt, welcher in Zukunft andere Benutzer, Logins erstellen soll und Rollen zuweisen soll. Auch das Ändern und löschen von Logins und User soll möglich sein.
Dieser User hat Vollzugriff auf alle Tabellen der Datenbank.
Username z.B Head.
Den user hab ich folgendermaßen erstellt:
CREATE LOGIN Head with password ‚fds‘;
GO
CREATE USER…
GO
GRANT CREATE TABLE TO SalesHead;
GRANT DELETE TO Head;
GRANT INSERT TO Head;
GRANT UPDATE TO Head;
GRANT SELECT TO Head;
GRANT CREATE VIEW TO Head;
GRANT CREATE ROLE TO Head;
GRANT ALTER TO Head;
GRANT ALTER ON SCHEMA::Head to Head; --Schema wurde extra erstellt
GO

Eine Tabelle konnte ich mit diesem User erstellen und auch einen Datensatz konnte ich einfügen.
Das erzeugen eines neuen Users funktioniert nicht. Dabei habe ich die Rolle db_owner aktiviert im MS SQL Studio.
Welcher GRANT Befehl könnte hier helfen???