heim - Für Anfänger
Microsoft SQL fügt Benutzer hinzu. Erstellen eines MS SQL-Datenbankbenutzers

In Microsoft SQL Server fügt ein Datenbankadministrator Konten zu einer Instanz von SQL Server hinzu, und diese Konten werden Benutzern in einzelnen Datenbanken in der Instanz von SQL Server zugeordnet. Datenbankbenutzer, die Tabellen und Objektklassen erstellen, müssen über die entsprechenden Berechtigungen zum Erstellen von Objekten in der Datenbank und über das Schema verfügen, in dem diese Objekte erstellt werden. Bei Verwendung in ArcGIS muss der Schemaname mit dem Datenbankbenutzernamen übereinstimmen.

Sie können hierfür ein Geoverarbeitungstool oder ein Skript verwenden Datenbankbenutzer erstellen um die folgenden Vorgänge auszuführen:

  • Erstellen Sie ein Konto oder fügen Sie ein Konto zur SQL Server-Instanz hinzu.
  • Erstellen Sie einen Benutzer, der dem angegebenen Konto entspricht.
  • Erstellen Sie ein Zuordnungsschema für einen Benutzer in der angegebenen Datenbank.
  • Gewähren Sie dem Benutzer die erforderlichen Zugriffsrechte zum Erstellen von Tabellen, Objektklassen oder Ansichten in der angegebenen Datenbank.

Fügen Sie einen Benutzer hinzu, der Daten erstellen kann.

Sie können das Werkzeug über ArcGIS for Desktop ausführen oder das Werkzeug in einem Python-Skript aufrufen, um einen Datenbankbenutzer zu erstellen, der Tabellen, Feature-Classes und Ansichten erstellen kann.

Um das Tool auszuführen, müssen Sie über ein Konto mit Systemadministratorrechten auf der SQL Server-Instanz eine Verbindung zur Datenbank herstellen Datenbankbenutzer erstellen Werkzeug.

Wenn Sie einen Geodatabase-Benutzer mit einem Windows-Konto erstellen möchten, muss das entsprechende Konto bereits vorhanden sein, bevor Sie das Werkzeug ausführen.

Verwendung des Tools Datenbankbenutzer erstellen

  1. Starten Sie ArcMap oder ArcCatalog.
  2. Stellen Sie eine Verbindung zur Datenbank oder Geodatabase über ein Konto her, das über Systemadministratorrechte für die Instanz von SQL Server verfügt.
  3. Öffnen Sie das Tool Datenbankbenutzer erstellen.

    Das Werkzeug befindet sich im Toolset „Geodatabase Administration“ der Data Management Suite.

  4. Geben Sie im Feld Ihre Datenbankverbindung an Eingabedatenbankverbindung.
  5. Wählen Sie aus, ob Sie ein Konto mit SQL Server-Authentifizierung erstellen oder ein vorhandenes Konto mit Windows-Authentifizierung verwenden möchten.
    • Lassen Sie das Kontrollkästchen deaktiviert, um einen Benutzer mit SQL Server-Authentifizierung zu erstellen. Beachten Sie, dass SQL Server-Instanzen standardmäßig nur die Windows-Authentifizierung verwenden. Wenn Ihre Instanz nicht für die Verwendung der SQL Server- oder Windows-Authentifizierung konfiguriert ist, können Sie keinen datenbankauthentifizierten Benutzer erstellen.
    • Überprüfen Erstellen Sie einen Benutzer mit Authentifizierung mithilfe des Betriebssystems (Betriebssystem-authentifizierten Benutzer erstellen). um ein vorhandenes Konto mit Windows-Authentifizierung zu verwenden.
  6. Geben Sie den Namen des Datenbankbenutzers ein, der vom Tool erstellt wird.

    Wenn Sie sich für die Erstellung eines Kontos mit SQL Server-Authentifizierung entscheiden, wird der von Ihnen eingegebene Name auch für das Konto verwendet.

  7. Geben Sie das Datenbankbenutzerkennwort ein.
  8. Wenn Sie bereits eine Rolle definiert haben, zu der Sie den Benutzer hinzufügen möchten, geben Sie diese an.
  9. Klicken Sie auf OK, um das Tool auszuführen.

Führen Sie das Python-Skript aus

Um einen Benutzer mithilfe eines Skripts zu erstellen, gehen Sie folgendermaßen vor:

  1. Erstellen Sie eine Textdatei auf Ihrem ArcGIS-Client-Computer und kopieren Sie das folgende Skript in die Datei.

    „““ Name: create_database_user.py Beschreibung: Bereitstellung von Verbindungsinformationen für einen Datenbankbenutzer. Geben Sie zur Verwendung create_database_user.py -h oder create_database_user.py --help ein """ # Systemmodule importieren, Arcpy importieren, Betriebssystem importieren, Optparse importieren, Sys importieren # Verwendung und Version definieren parser = optparse. OptionParser (usage = "usage: %prog", version = "%prog 1.0 für Version 10.1") #Hilfe und definieren Optionen Parser . add_option ("--DBMS" , dest = "Database_type" , type = "choice" , choice = [ "SQLSERVER" , "ORACLE" , "POSTGRESQL" , "" ], default = "" , help = „Typ des Unternehmens-DBMS: SQLSERVER, ORACLE oder POSTGRESQL.“)Parser. add_option ("-i" , dest = "Instance" , type = "string" , default = "" , help = "DBMS-Instanzname" ) Parser . add_option("-D" , dest = "Database" , type = "string" , default = "none" , help = „Datenbankname: Für Oracle nicht erforderlich“)Parser. add_option ("--auth" , dest = "Account_authentication" , type = "choice" , choice = [ "DATABASE_AUTH" , "OPERATING_SYSTEM_AUTH" ], default = "DATABASE_AUTH" , help = „Optionen für den Authentifizierungstyp (Groß-/Kleinschreibung beachten): DATABASE_AUTH, OPERATING_SYSTEM_AUTH. Standard=DATABASE_AUTH“)Parser. add_option ("-U" , dest = "Dbms_admin" , type = "string" , default = "" , help = "DBMS-Administratorbenutzer" ) Parser . add_option ("-P", dest = "Dbms_admin_pwd", type = "string", default = "", help = "DBMS-Administratorkennwort") Parser. add_option ("--utype" , dest = "user_type" , type = "choice" , choice = [ "DATABASE_USER" , "OPERATING_SYSTEM_USER" ], default = "DATABASE_USER" , help = „Optionen für den Authentifizierungstyp (Groß- und Kleinschreibung beachten): DATABASE_USER, OPERATING_SYSTEM_USER. Standard = DATABASE_USER“)Parser. add_option ("-u" , dest = "dbuser" , type = "string" , default = "" , help = "Datenbankbenutzername" ) Parser . add_option ("-p" , dest = "dbuser_pwd" , type = "string" , default = "" , help = "Datenbankbenutzerkennwort" ) Parser . add_option ("-r" , dest = "role" , type = "string" , default = "" , help = „Rolle, die dem Benutzer zugewiesen werden soll“)Parser. add_option ("-t" , dest = "Tablespace" , type = "string" , default = "" , help = "Tablespace name" ) # Überprüfen Sie, ob für die Option ein Wert eingegeben wurde try: (options, args) = Parser. parse_args() #Überprüfen Sie, ob keine Systemargumente (Optionen) eingegeben wurden if len (sys . argv ) == 1 : print „ %s : Fehler: %s \n „ % (sys . argv [ 0 ], „Keine Befehlsoptionen angegeben“) Parser . print_help() sys . Ausgang(3) #Verwendungsparameter für die räumliche Datenbankverbindung Datenbanktyp = Optionen. Datenbanktyp. Upper()-Instanz = Optionen. Instanzdatenbank = Optionen . Datenbank. Lower() account_authentication = Optionen . Account_authentication. Upper() dbms_admin = Optionen. Dbms_admin dbms_admin_pwd = Optionen . Dbms_admin_pwd dbuser = Optionen. dbuser dbuser_pwd = Optionen . dbuser_pwd tablespace = Optionen . Tablespace user_type = Optionen. user_type Role = Optionen . Rolle if (database_type == "SQLSERVER" ): Database_type = "SQL_SERVER" if ( Database_type == "" ): print (" \n %s : Fehler: \n %s \n " % (sys . argv [ 0 ] , „Der DBMS-Typ (--DBMS) muss angegeben werden.“)) Parser. print_help() sys . Exit (3) if (database_type == "SQL_SERVER" ): if ( account_authentication == "DATABASE_AUTH" and dbms_admin == "" ): print (" \n %s : error: %s \n " % (sys . argv [0], „DBMS-Administrator muss mit Datenbankauthentifizierung angegeben werden“))sys. Exit (3) if ( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != "" ): print (" \n Warnung: %s \n " % ( „Der angegebene DBMS-Administrator wird ignoriert, wenn die Betriebssystemauthentifizierung verwendet wird …“)) else : if ( dbuser . low () == "" ): print (" \n %s : error: %s \n " % (sys . argv [ 0 ], „Datenbankbenutzer muss angegeben werden.“))sys. Exit (3) if ( dbms_admin == "" ): print (" \n %s : error: %s \n " % (sys . argv [ 0 ], „DBMS-Administrator muss angegeben werden!“))sys. Exit (3) if ( user_type == "DATABASE_USER" and (dbuser == "" or dbuser_pwd == "" )): print (" \n %s : error: \n %s \n " % (sys . argv [0], „Um einen datenbankauthentifizierten Benutzer zu erstellen, müssen Benutzername und Passwort angegeben werden!“)) Parser. print_help() sys . Ausgang(3) # Holen Sie sich die aktuelle Produktlizenz produkt_license = arcpy . Produktinformation() # Überprüft die erforderliche Lizenzstufe wenn produkt_lizenz . Upper() == "ARCVIEW" oder Produktlizenz . Upper () == "ENGINE" : print (" \n " + product_license + " Lizenz gefunden!" + „Für die Erstellung eines Benutzers in einer Enterprise-Geodatabase oder Datenbank ist eine ArcGIS for Desktop Standard- oder Advanced-Lizenz, eine ArcGIS Engine mit der Geodatabase Update-Erweiterung oder eine ArcGIS for Server-Lizenz erforderlich.“)sys. Ausfahrt( „Autorisieren Sie ArcGIS erneut, bevor Sie einen Datenbankbenutzer erstellen.“) sonst: print (" \n " + product_license + „Lizenz verfügbar! Wird weiter erstellt…“) arcpy . AddMessage ("++++++++++") # Lokale Variablen Instanz_temp = Instanz . ersetzen ( " \\ " , "_" ) Instanz_temp = Instanz_temp . ersetzen ("/" , "_" ) Instanz_temp = Instanz_temp . ersetzen (:: „, „_“ ) Conn_File_NameT = Instanz_temp + „_“ + Datenbank + „_“ + dbms_admin wenn os . Umgebung. get ("TEMP" ) == None : temp = "c:\\temp" else : temp = os . Umgebung. get ("TEMP") wenn os . Umgebung. get ("TMP" ) == None : temp = "/usr/tmp" else : temp = os . Umgebung. get ( "TMP" ) Connection_File_Name = Conn_File_NameT + ".sde" = temp + os . sep + Conn_File_NameT + „.sde“ # Suchen Sie nach der .sde-Datei und löschen Sie sie, falls vorhanden arcpy. env. overwriteOutput = True, wenn os . Weg. existiert ( Verbindungsdateiname_vollständiger_Pfad): os . entfernen( Verbindungsdateiname_vollständiger_Pfad) Versuchen Sie: print (" \n Datenbankverbindungsdatei wird erstellt...\N" ) # Prozess: Datenbankverbindungsdatei erstellen ... # Verwendung: out_file_location, out_file_name, DBMS_TYPE, instnace, Database, account_authentication, username, password, save_username_password (muss wahr sein) #arcpy.CreateDatabaseConnection_management(temp, Verbindungsdateiname, Datenbanktyp, Instanz, Datenbank, Kontoauthentifizierung, dbms_admin, dbms_admin_pwd, „TRUE“) arcpy. CreateDatabaseConnection_management(out_folder_path = temp, out_name = Connection_File_Name, Datenbankplattform = Datenbanktyp, Instanz = Instanz, Datenbank = Datenbank, Account_authentication = Account_Authentication, Benutzername = dbms_admin, Passwort = dbms_admin_pwd, save_user_pass = "TRUE") für i im Bereich (arcpy. GetMessageCount ()) : wenn „000565“ in arcpy. GetMessage(i): #Überprüfen Sie, ob die Datenbankverbindung erfolgreich war arcpy. AddReturnMessage (i) arcpy. AddMessage (" \n +++++++++" ) arcpy . AddMessage („Exiting!!“) arcpy . AddMessage ("++++++++++ \n " ) sys . Ausgang (3) sonst: arcpy. AddReturnMessage (i) arcpy. AddMessage ("++++++++++ \n " ) print( "Datenbankbenutzer wird erstellt... \n " ) arcpy . CreateDatabaseUser_management(input_workspace= Verbindungsdateiname_vollständiger_Pfad, user_authentication_type = user_type , Nutzername= dbuser, Benutzer-Passwort= dbuser_pwd, Rolle= Rolle, Tabellenbereichsname= Tabellenbereich) für ich In Reichweite(arcpy. GetMessageCount()): arcpy. AddReturnMessage(ich) arcpy. Nachricht hinzufügen("+++++++++ \N" ) außer: für ich In Reichweite(arcpy. GetMessageCount()): arcpy. AddReturnMessage(ich) #Überprüfen Sie, ob für die Option kein Wert eingegeben wurde außer SystemExit als e: Wenn e. Code == 2 : Parser. Verwendung = "" drucken(" \N" ) Parser. print_help() Parser. Ausfahrt(2 )

    Sie können das Skript auf einem Computer ausführen ArcGIS für Desktop(Standard oder Fortgeschritten), ArcGIS für Server(Standard oder Advanced) oder ArcGIS Engine mit der Geodatabase Update-Erweiterung.

  2. Speichern Sie die Datei mit der Erweiterung .py.
  3. Führen Sie das Skript aus und geben Sie dabei die Optionen und Informationen an, die für Ihre Instanz von SQL Server und den Benutzer, den Sie erstellen möchten, geeignet sind.

    Im folgenden Beispiel lautet der Name des erstellten Skripts create_database_user.py. Auf der SQL Server ssi5-Instanz wurde ein Konto mit SQL Server-Authentifizierung (gisd_owner) erstellt und das entsprechende Schema und der Benutzer wurden in der gisdata-Datenbank erstellt. Der Benutzer wurde der Rolle nicht hinzugefügt.

    create_database_user.py --DBMS SQL_SERVER -i ssi5 -D gisdata --auth DATABASE_AUTH -U sa -P !nocopy! --utype DATABASE_USER -u gisd_owner -p T3mpPass

    Hinweis:

    Eingeben -H oder --helfen in der Befehlszeile, um die Syntaxhilfe anzuzeigen.

Ihre Datenbank enthält jetzt einen Benutzer, der Tabellen erstellen kann.

Es gibt verschiedene Möglichkeiten, wie ein Dateneigentümer Tabellen in einer Datenbank oder Geodatabase erstellen kann. Informationen zum Erstellen von Tabellen mit ArcGIS finden Sie unter Übersicht über das Hinzufügen von Datensätzen zu einer Geodatabase.

Da der Datensatz vorhanden ist, kann sein Eigentümer anderen Benutzern Zugriffsrechte auf die Daten gewähren. Anweisungen finden Sie unter Gewähren und Widerrufen von Zugriffsberechtigungen für Datensätze.

Erstellen von Konten und Benutzern mit SQL Server-Tools

Wenn Sie einen Benutzer erstellen möchten, der über andere Rechte als die vom Tool bereitgestellten verfügt Datenbankbenutzer erstellen oder keine Rechte direkt darauf gewährt wurden, können Sie hierfür SQL Server-Tools verwenden. Beim Erstellen eigener Konten und Benutzer zur Verwendung mit ArcGIS sind einige Dinge zu beachten:

  • Alle Datenbankbenutzer, die Daten erstellen, müssen über ein Datenbankschema verfügen. Dieses Schema muss denselben Namen wie der Benutzer haben.
  • Sie können einer Windows-Gruppe Zugriff auf SQL Server gewähren, anstatt separate Windows-Konten zu verwenden, was das Erstellen und Verwalten von Konten erleichtert. Alle Mitglieder der Windows-Gruppe können eine Verbindung zu SQL Server herstellen. Zugriffsrechte auf einen Server, eine Datenbank oder einen Datensatz, die einer Gruppe gewährt werden, werden automatisch auf jedes Mitglied der Gruppe angewendet. Sie können jedoch nicht ein Schema erstellen, um die von allen Gruppenmitgliedern erstellten Daten zu speichern. Jeder Benutzer in einer Gruppe, der Daten in einer Geodatabase erstellt, muss über ein eigenes Schema verfügen, in dem die Daten gespeichert werden. SQL Server erstellt einen Benutzer und ein Schema in der Datenbank, wenn ein Gruppenmitglied zum ersten Mal versucht, Daten zu erstellen. Dies geschieht automatisch; Es ist nicht erforderlich, manuell ein Schema und einen Benutzer zu erstellen.

Anweisungen zur Verwendung von SQL Server-Tools zum Erstellen von Konten, Benutzern und Schemas finden Sie in der Dokumentation zu Microsoft SQL Server.

Seit Jahrzehnten ist es möglich, Benutzerrollen in Datenbanken zu definieren, um den Prozess der Erteilung von Datenbankzugriffsberechtigungen zu verwalten, aber auf Instanzebene gab es immer neun feste Rollen (oder acht, wenn Sie eine Version vor SQL Server 2000 verwenden – Die Bulkadmin-Rolle wurde in SQL Server 2005 eingeführt. Mit der Einführung von SQL Server 2012 ist es nun endlich möglich, benutzerdefinierte oder benutzerdefinierte Serverrollen zu erstellen.

Seit Jahren bereitet die mangelnde Verfügbarkeit dieser Funktionalität SQL Server-Administratoren Kopfzerbrechen. Was würden Sie tun, wenn Sie mehreren Benutzern oder Gruppen auf Instanzebene Rechte gewähren und diese Rechte synchron halten müssten? Angenommen, Sie möchten einer großen Anzahl von Benutzern das Recht „Systemstatus anzeigen“ erteilen, damit diese Sperrinformationen in Entwicklungszentren sehen können. Es war notwendig, jedem Benutzer bzw. jeder Domänengruppe einzeln Rechte zu gewähren.

Wenn es sich bei allen Anmeldungen um Domänenanmeldungen handelte, gab es eine Problemumgehung: Sie könnten eine Domänengruppe erstellen, um alle Benutzer einzuschließen, die solche Rechte benötigen (Sie müssten für jeden Server separate Gruppen erstellen, wenn Sie Rechte auf mehreren Servern gewähren müssten). Sie können dieser Gruppe Benutzer hinzufügen, einen mit dieser Domänengruppe verknüpften Login erstellen und der Gruppe dann das Recht „Serverstatus anzeigen“ auf dem Server gewähren. Dies musste jedoch sehr sorgfältig durchgeführt werden. Andernfalls war es möglich, Benutzern Anmelderechte zu gewähren, die zuvor nicht über solche Rechte verfügten. Es war sogar möglich, Benutzern Rechte zu gewähren, die ihnen nicht gewährt werden sollten.

Erstellen einer Rolle mit T/SQL

Es gibt viele Möglichkeiten, eine benutzerdefinierte Rolle auf einem Server zu erstellen, einschließlich der Verwendung von T/SQL, SQL Server Management Studio und Windows PowerShell. Wenn Sie mit T/SQL eine benutzerdefinierte Serverrolle erstellen möchten, müssen Sie drei Befehle verwenden: Die Anweisung „Create Server Role“ erstellt die benutzerdefinierte Serverrolle, die Anweisung „Alter Server Role“ fügt den Benutzer der Rolle hinzu und schließlich die Mit der Gewährungserklärung werden der Rolle die erforderlichen Rechte gewährt.

Die Verwendung dieser drei Anweisungen wird im folgenden Code veranschaulicht, der eine benutzerdefinierte Serverrolle namens ViewServerState erstellt. Der Benutzer SomeFakeLogin wird der Rolle hinzugefügt und der Rolle wird das Recht „Serverstatus anzeigen“ gewährt. Um dieses Recht anderen Benutzern zu gewähren, fügen Sie sie einfach mithilfe der Alter Server Role-Anweisung zu einer vorgefertigten Rolle hinzu.

VERWENDEN SIE GO CREATE SERVER ROLE AUTHORIZATION GO ALTER SERVER ROLE ADD MEMBER GO GRANT VIEW SERVER STATE TO GO

Um einen Benutzer aus einer Rolle zu entfernen, verwenden Sie die Alter Server Role-Anweisung. In diesem Fall werden die Parameter Add Member und Drop Member verwendet:

ALTER SERVER ROLE DROP MEMBER GO

Wenn Sie eine oder mehrere benutzerdefinierte Serverrollen über viele Instanzen von SQL Server hinweg bereitstellen müssen, stehen mehrere Optionen zur Verfügung. Sie werden wahrscheinlich nicht gerne eine Verbindung zu jedem Server einzeln herstellen und darauf benutzerdefinierte Serverrollen erstellen. Eine Möglichkeit besteht darin, die SQL Server Management Studio-Konsole zu verwenden. Es ermöglicht Ihnen, T/SQL-Skripte auf mehreren Instanzen gleichzeitig auszuführen.

Sie können auch SQL Server Windows PowerShell-Komponenten verwenden, um neue benutzerdefinierte Serverrollen für alle Instanzen von SQL Server in Ihrer Organisation bereitzustellen. (Es gibt viele Möglichkeiten, Windows PowerShell zum Ausführen dieser Aufgabe zu verwenden, diese gehen jedoch über den Rahmen dieses Artikels hinaus.)

SQL Server Management Studio-Konsole

Die Aufgabe kann einfach über die SQL Server Management Studio-GUI erledigt werden. Um eine benutzerdefinierte Serverrolle zu erstellen, stellen Sie über den Objekt-Explorer eine Verbindung zur Instanz her. Navigieren Sie im Objekt-Explorer zum Knoten<Instanzname>>Sicherheit/Serverrollen. Klicken Sie mit der rechten Maustaste auf „Serverrollen“ und wählen Sie „Neue Serverrolle“ aus. Geben Sie im sich öffnenden Fenster „Neue Serverrolle“ im Feld „Name der Serverrolle“ den Namen der Rolle an, geben Sie im Feld „Eigentümer“ den Eigentümer der Rolle an und geben Sie dann die Objekte und Berechtigungen an, die den Mitgliedern der Rolle gewährt werden sollen Rolle ( Reis. 1).

Reis. 1. Geben Sie die Rechte an, die die Rolle bereitstellen soll

Wenn Sie auf der Seite „Allgemein“ fertig sind, gehen Sie zur Seite „Mitglieder“ ( Reis. 2) und geben Sie die SQL Server-Anmeldungen an, die Teil dieser benutzerdefinierten Serverrolle sein sollen.

Reis. 2. Rollenmitglieder definieren

Nachdem Sie Rollenmitglieder auf der Seite „Mitglieder“ definiert haben, wechseln Sie zur Seite „Mitgliedschaften“. Dies gibt die Serverrollen an, denen die benutzerdefinierte Serverrolle angehören muss. Wenn Sie auf dieser Seite eine Rolle auswählen, verfügen Benutzer, die Mitglieder der von Ihnen erstellten benutzerdefinierten Serverrolle sind, auch über die Rechte der ausgewählten Rolle.

Wenn Sie eine benutzerdefinierte Rolle erstellen und sie zu einem Mitglied der festen Serverrolle serveradmin machen ( Reis. 3), verfügen alle Mitglieder der neu erstellten Benutzerrolle auch über Serveradmin-Rollenrechte. Wie bei der Verschachtelung von Domänengruppen oder Datenbankrollen muss auch bei der Verschachtelung von Rollen große Sorgfalt darauf verwendet werden, Benutzern keine Rechte zu geben, die sie nicht haben sollten.

Reis. 3. Benutzerdefinierte Rollen können in andere Serverrollen eingebunden werden

Um die Verschachtelung von Rollen mithilfe von T/SQL zu organisieren, benötigen Sie erneut die Alter Server Role-Anweisung mit dem Add Member-Parameter. Um beispielsweise die benutzerdefinierte Serverrolle „ViewServerState“ zu einem Mitglied der festen Serverrolle „setupadmin“ zu machen, müssen Sie die feste Serverrolle „setupadmin“ bearbeiten.

ÄNDERN SIE DIE SERVERROLLE, HINZUFÜGEN SIE MITGLIED

Benutzerdefinierte Serverrollen können viele Benutzer haben. Es gibt Dutzende von Rechten auf Instanzebene, die einer benutzerdefinierten Serverrolle gewährt werden können, um die Verwaltung dieser Rechte zu erleichtern. Sie können auch eine Rolle für einen Junior-DBA erstellen, dem einige, aber nicht alle Administratorrechte gewährt werden. Sie können eine AlwaysOnAdmin-Gruppe erstellen, die das Recht gewährt, einen AlwaysOn-Datenbankübergang durchzuführen (der innerhalb von SQL Server erfolgen muss), ohne vollständige Administratorrechte zu gewähren.

Es gibt viele Situationen, in denen benutzerdefinierte Serverrollen sehr praktisch sind. Sie werden die Arbeit des Administrators erheblich erleichtern. Diese Gruppen tragen auch dazu bei, die Sicherheit Ihrer SQL Server-Instanzen zu verbessern, indem sie die Wahrscheinlichkeit verringern, Benutzern versehentlich Rechte zu gewähren, die nicht gewährt werden sollten.

beachten Sie, müssen alle beschriebenen Aktionen auf dem Server mit den entsprechenden Rechten durchgeführt werden Administrator. Wenn Sie keinen physischen Zugriff auf den Server haben ( SQL Server) oder Remote-Desktop-Zugriff haben oder Ihre Kontoberechtigungen es Ihnen nicht erlauben, Benutzer zu verwalten, einschließlich der Erstellung neuer Benutzer, dann können Sie das hier besprochene Problem nicht alleine lösen. Wenn ja, wenden Sie sich an Ihren Systemadministrator.

Wenn Sie über reguläres virtuelles Hosting verfügen, können Sie die Benutzer Ihrer Datenbank nicht unabhängig verwalten, ohne den technischen Support Ihres Hosting-Unternehmens zu kontaktieren.

Laufen Microsoft SQL Server Management Studio und mit dem Server verbinden.

Auf der Liste „Objektbrowser“(Wenn nicht angezeigt, drücken Sie F8) Öffnen Sie den Ordner "Sicherheit". Klicken Sie mit der rechten Maustaste auf den Ordner „Anmeldenamen“ Wählen Sie im angezeigten Menü die Option aus „Login erstellen…“.

Im erscheinenden Fenster, im Feld "Benutzername" Geben Sie Ihr Login ein. Zum Beispiel: „yolper“ (ohne Anführungszeichen). Wählen Sie dann Ihren Authentifizierungstyp aus. Der Standardwert ist „Windows-Authentifizierung“, das bedeutet, dass bei Verbindung mit SQL Server Konto verwendet wird Windows. Auf Remote-Servern kommt diese Methode in der Regel nicht zum Einsatz. Wählen „SQL Server-Authentifizierung“. Im Kapitel "Passwort" Geben Sie ein beliebiges Passwort ein und notieren Sie es sich, damit es später an den Benutzer weitergegeben werden kann. Sollte das Passwort verloren gehen, kann es jederzeit geändert werden.

Lassen Sie die Option unbedingt aktiviert „Verwendung einer Passwortrichtlinie erforderlich machen“. Andere Optionen: „Passwortbegrenzungszeitraum festlegen“ Und „Der Benutzer muss sein Passwort ändern, wenn er sich das nächste Mal anmeldet.“ Sie können sie nach eigenem Ermessen verwenden, sie sind jedoch normalerweise deaktiviert, um keine unnötigen Probleme beim Herstellen einer Verbindung zum Server zu verursachen.

Wählen Sie im selben Fenster ganz unten aus Standarddatenbank. Diese Datenbank wird geöffnet, nachdem der Benutzer eine Verbindung zum Server hergestellt hat. Klicken "OK" um ein Konto zu erstellen.


Das Konto wurde erstellt, aber das ist noch nicht alles. Jetzt müssen Sie das Konto mit den Tabellen verknüpfen. Tatsächlich könnte dies beim Erstellen eines Kontos erfolgen. Zum Zeitpunkt des Schreibens dieses Helfers war jedoch Folgendes zu beachten: SQL Server 2008 Aus irgendeinem Grund weigerte ich mich, mich an den Zusammenhang zwischen dem erstellten Konto und den Tabellen (in) zu erinnern 2005 es wurde kein solcher Fehler beobachtet).

Um ein Konto bestimmten Tabellen zuzuordnen und Benutzerrechte zu definieren, erweitern Sie den Ordner „Anmeldenamen“ im Objektbrowser. Suchen Sie das erstellte Konto in der Liste, klicken Sie mit der rechten Maustaste darauf und wählen Sie das Menü aus "Eigenschaften".


Gehen Sie im angezeigten Fenster zum Abschnitt „Benutzerzuordnung“. Wählen Sie in der oberen Liste die Tabellen aus, mit denen mit diesem Konto gearbeitet werden kann. Wählen Sie Rechte aus der unteren Liste aus. Normalerweise genug „db_owner“.


Klicken Sie anschließend auf die Schaltfläche "OK". Jetzt können Sie mit dem erstellten Konto darauf zugreifen SQL Server.

07.12.2016 Tim Ford

Was ein Datenbankadministrator über Sicherheit wissen sollte: Eine Erklärung der Begriffe und ein allgemeiner Überblick über Objekte in der Praxis

SQL Server-Sicherheit und vertrauenswürdige Authentifizierung

Es gibt zwei Arten von Sicherheitsschemata in Microsoft SQL Server: SQL Server-Sicherheit und vertrauenswürdige Authentifizierung (auch als Windows-Authentifizierung bezeichnet). Die SQL Server-Sicherheit ist eine Standardkombination aus Benutzername und Passwort für die Anmeldung. Bei der vertrauenswürdigen Authentifizierung wird davon ausgegangen, dass das Gerät, das versucht, eine Verbindung zur Instanz von SQL Server herzustellen, durch das Domänenauthentifizierungsverfahren genehmigt wurde und die Ergebnisse dieser Überprüfung an die Instanz von weitergeleitet werden SQL Server: Es wird davon ausgegangen, dass es sich bei der Domäne um den Host handelt, dem die SQL Server-Instanz dem Benutzerkonto vertraut – die Prüfung wurde zuvor durchgeführt.

Benutzer und Anwendungen, die versuchen, über den SQL Server-Sicherheitsmechanismus eine Verbindung zu SQL Server herzustellen, müssen einen Benutzernamen und ein Kennwort angeben, die auf dem Ziel-SQL-Server erstellt wurden. Wenn Sie eine Verbindung mit vertrauenswürdiger Authentifizierung herstellen, müssen Sie lediglich ein Flag in der Verbindungszeichenfolge setzen, um anzugeben, dass vertrauenswürdige Authentifizierung verwendet wird. In diesem Fall werden die Anmeldeinformationen des Endbenutzers oder des Anwendungsdienstkontos als Sicherheitstoken gesendet. Wenn auf SQL Server ein passender Benutzername vorhanden ist, wird der Zugriff gewährt.

Namen und Benutzer

Es gibt zwei Zugriffsebenen auf eine SQL Server-Instanz: Server- (oder Instanz-)Benutzerkonten und Datenbankbenutzer. Mithilfe von Konten ermöglichen Server einem externen Benutzer (in diesem Artikel bezieht sich der Begriff „Benutzer“ auf alle Anwendungen, Dienste, APIs usw., die versuchen, eine Verbindung zu SQL Server herzustellen), die erste Verbindung zu einer Instanz von SQL Server herzustellen. Bei SQL-basierter Sicherheit sind hierfür ein Benutzername und ein Passwort erforderlich. Im Falle einer vertrauenswürdigen Authentifizierung handelt es sich um ein Domänenkonto.

Es gibt zwei Möglichkeiten, diese Benutzerkonten zu erstellen: mit Transact-SQL (https://msdn.microsoft.com/en-us/library/ms189751.aspx? f=255&MSPPError=-2147217396) oder über die GUI. Das Verfahren zur Verwendung von T-SQL zum Erstellen von Konten ist gut dokumentiert. Lesen Sie am besten die offizielle Microsoft SQL Server-Dokumentation. Schauen wir uns zunächst an, wie Sie ein Konto in der grafischen Benutzeroberfläche erstellen. Um das Dialogfeld zum Erstellen von Benutzerkonten zu starten, stellen Sie im Objekt-Explorer eine Verbindung mit der Instanz von SQL Server in SQL Server Management Studio (SSMS) her und erweitern Sie dann den Knoten „Sicherheit\Anmeldungen“. Klicken Sie mit der rechten Maustaste auf „Anmeldungen“ und wählen Sie „Neue Anmeldung“ aus dem Kontextmenü (Abbildung 1).

Sie sehen das in Abbildung 2 dargestellte Dialogfeld mit den Kontoeinstellungen. Im selben Fenster können Sie Ihren Benutzernamen ändern.

Dies ist die Registerkarte „Allgemein“ zum Erstellen (und Ändern) von Kontoeinstellungen. Es unterscheidet sich von den beiden zuvor beschriebenen Sicherheitsschemata. Auf der Registerkarte „Allgemein“ können Sie Folgendes festlegen:

  • Benutzername. Wird zur Authentifizierung verwendet. Im Fall von Windows oder einer vertrauenswürdigen Authentifizierung müssen Sie den Namen im Format DOMAIN\LOGIN angeben, wobei LOGIN der Name des Benutzers innerhalb der Domäne ist, über die sich der Benutzer authentifiziert. Wenn sich die SQL Server-Instanz in einer anderen Domäne befindet, ist eine Vertrauensbeziehung zwischen dieser Domäne und der SQL Server-Domäne erforderlich.
  • Passwort. Bei der SQL Server-Authentifizierung ist das Textfeld „Passwort“ aktiviert und Sie geben sowohl den Benutzernamen als auch das zugehörige Passwort ein.
  • Passwortrichtlinie und Ablauf. Die Kontrollkästchen für Kennwort und Ablaufrichtlinie werden auch im SQL Server-Authentifizierungsmodus aktiviert, und es werden die Richtlinien angewendet, die in Active Directory in der Domäne gelten, die SQL Server hostet. Durch die Zuweisung eines SQL Server-Benutzernamens können Sie Benutzern ermöglichen, ihre Passwörter nach der Registrierung zu ändern. Infolgedessen wird dem Datenbankadministrator der Zugriff auf den Kontonamen des Endbenutzers verweigert.
  • Zertifikate, Schlüssel, Anmeldeinformationen. In diesem Anfängerartikel gehen wir nicht auf Zertifikate, Schlüssel und Anmeldeinformationen ein.
  • Standarddatenbank Sobald die Verbindung zu SQL Server hergestellt ist, werden zwei Schritte durchgeführt: Authentifizierung (ein Benutzername muss für die Domänenanmeldeinformationen des Benutzers vorhanden sein, wenn Windows- oder vertrauenswürdige Authentifizierung verwendet wird, oder die Kombination aus Benutzername und Passwort muss an die SQL Server-Instanz übergeben werden). Dies ist die erste Barriere. Der zweite Grund besteht darin, dass dem verifizierten Benutzernamen ein Benutzerobjekt in der Standarddatenbank zugeordnet ist – die Datenbank, die nach der Identitätsüberprüfung zunächst als Benutzernamenkontext konfiguriert wurde. Selbst wenn die erste Hürde genommen ist und kein entsprechender Datenbankbenutzer in der Standarddatenbank vorhanden ist, wird die Verbindung nicht hergestellt und der entsprechende Eintrag wird in das SQL-Fehlerprotokoll geschrieben. Es gibt jedoch Ausnahmen: Wenn die Serverrolle eines Benutzers so wichtig ist, dass in jeder Datenbank standardmäßig implizite Rechte dafür festgelegt werden müssen, ist es nicht erforderlich, einen entsprechenden Benutzer in der Standarddatenbank zu haben. Allerdings übertreibe ich mich selbst, weil wir noch nicht auf Datenbankbenutzer oder Serverrollen eingegangen sind. Es genügt der Hinweis, dass bei Auswahl einer Standarddatenbank in der GUI kein zugehöriger Datenbankbenutzer erstellt wird. Sie geben einfach an, was die Standarddatenbank sein soll. Wenn Sie dies tun, verwenden Sie die Registerkarte „Benutzerzuordnung“ des Dialogfelds „Anmeldung erstellen“, um einen zugehörigen Datenbankbenutzer zu erstellen.

Fahren wir mit der nächsten Registerkarte „Serverrollen“ fort, die in Abbildung 3 dargestellt ist. Auf dieser Seite können Sie beliebige Rollen auf SQL Server-Ebene (Instanzebene) für den neuen Benutzer auswählen. Serverrollen sind Sammlungen von Rechten, auch als sicherungsfähige Elemente bezeichnet, die in einer Sammlung zusammengefasst sind, sodass Sie nicht jedem sicherungsfähigen Element einzeln Rechte zuweisen müssen. Standardmäßig ist jedes Konto Mitglied einer öffentlichen Rolle, die es Ihnen ermöglicht, eine primäre Verbindung zu einer Instanz von SQL Server herzustellen. Der Rest des Artikels befasst sich mit den einzelnen Serverrollen, die in Microsoft SQL Server enthalten sind.

Die nächste Seite des Dialogfelds „Anmeldung erstellen“ in SQL Server Management Studio dient der Benutzerkontozuordnung. Jedes Konto kann einen Benutzer in einer oder mehreren Datenbanken haben. Auf dieser Seite können Sie Datenbankbenutzer erstellen, die dem neuen Konto zugeordnet sind. Dazu müssen Sie die folgenden Informationen angeben.

  • Datenbank. Aktivieren Sie das Kontrollkästchen neben der Datenbank, in der Sie einen zugeordneten Benutzer für das Konto erstellen möchten.
  • Nutzername Der Benutzerobjektname muss nicht unbedingt mit dem Kontonamen übereinstimmen. Wir zeigen Ihnen, wie Sie dies später ändern können.
  • Standardschema Jeder Datenbankbenutzer muss einem Standardschema zugewiesen werden. Ein Schema ist eine Sammlung von Datenbankobjekten, die logisch (aber nicht unbedingt physisch) von anderen Objekten in der Datenbank getrennt sind. Sie können einem Benutzer oder einer Benutzergruppe Rechte für alle Objekte in einem bestimmten Schema gewähren, z. B. allen Benutzern aus der Buchhaltung (oder einem Dienstkonto der Buchhaltungsanwendung) bestimmte Rechte für alle Objekte im Abrechnungsschema gewähren, aber keinen Zugriff darauf gewähren Objekte an andere Benutzer weitergeben. Wenn Sie einem Datenbankbenutzer ein Standardschema zuweisen, ist es nicht erforderlich, den Schemanamen in T-SQL-Aufrufe an die Datenbank einzuschließen, wenn Objekte in diesem Schema adressiert werden. Dies bedeutet auch, dass, wenn einem Benutzer Rechte zum Erstellen von Objekten gewährt werden, diese standardmäßig in diesem Schema erstellt werden, es sei denn, Sie geben beim Erstellen der Objekte einen Schemanamen an. Später in diesem Artikel werden wir auf das Konzept der Schaltkreise eingehen.
  • Datenbankrollenmitgliedschaft Genau wie auf Instanz- oder Serverebene verfügt jede Datenbank über eine vordefinierte Sammlung von Rechten, die in Rollen verpackt sind. Wir werden uns etwas später die Datenbankrollen ansehen, die mit Microsoft SQL Server geliefert werden.

Schauen wir uns das Beispieldialogfeld für das Benutzerkonto SQLCRUISE\skipper an (siehe Abbildung 4).

In diesem Beispiel werden dem Benutzer SQLCRUISE\skipper Rechte für die Standarddatenbank (Rettungsboot) gewährt, wobei der zugehörige Benutzername einfach „skipper“ lautet. Das Standardschema ist „skipper_only“. Die anderen beiden Datenbanken, in denen Benutzer für dieses Konto erstellt werden, verwenden denselben Benutzernamen wie im Benutzernamen (normalerweise zur einfacheren Identifizierung), und das Standardschema ist dbo, was in Microsoft SQL Server die Standardeinstellung für alle benutzerdefinierten Datenbanken ist Objekte. Weitere Informationen hierzu finden Sie im nächsten Abschnitt. Im Fall der Rettungsbootdatenbank bieten wir nur die Mitgliedschaft in der öffentlichen Datenbankrolle an, die es Ihnen ermöglicht, ohne zusätzliche Berechtigungen eine Verbindung zur Datenbank herzustellen.

Auf der nächsten Seite, „Sicherbare Elemente“, werden sicherungsfähige Elemente auf Server- oder Instanzebene vorgestellt. Wie oben erwähnt, sind sicherungsfähige Elemente Berechtigungen, die Objekten gewährt werden. Sicherbare Objekte werden typischerweise in den folgenden Fällen bereitgestellt:

  • die feste Rolle ist zu weit gefasst (viele andere Rechte für das Konto);
  • Die zugewiesene Rolle bzw. der Rollensatz deckt nicht alle für das Konto erforderlichen Rechte vollständig ab.

In unserem Beispiel habe ich SQLCRUISE\skipper die Mitgliedschaft in der öffentlichen Serverrolle gewährt und ihm erlaubt, alle auf Serverebene vorhandenen Objektdefinitionen anzuzeigen (siehe Abbildung 5).

Schließlich gehen wir zur Statusseite. Auf dieser Seite können Sie dem Benutzer den Zugriff gewähren oder verweigern (standardmäßig ist Gewähren ausgewählt – Erlauben). Daher können Sie ein Konto erstellen, Rechte gewähren, zugehörige Benutzer erstellen und dann den Zugriff widerrufen. Sie können für einen vorhandenen Benutzer zu diesem Fenster zurückkehren und den Zugriff auf die SQL Server-Instanz widerrufen. Das Aktivieren und Deaktivieren eines Kontos erfolgt auf die gleiche Weise (siehe Bildschirm 6). Schließlich können wir den Kontostatus des Benutzers einsehen und sehen, ob das Konto aufgrund zu vieler fehlgeschlagener Anmeldeversuche mit einem falschen Passwort gesperrt wurde.

Jede Option funktioniert erfolgreich, wenn in der SQL_Cruise-Datenbank nur eine Tabelle mit dem Namen tblFoo vorhanden ist und der aktuelle Datenbankkontext die SQL_Cruise-Datenbank war. Allerdings funktioniert nur die erste Option ordnungsgemäß, unabhängig davon, mit welcher Datenbank Sie derzeit auf der SQL Server-Instanz verbunden sind, die die SQL_Cruise-Datenbank enthält. Die zweite Option wird ausgeführt, wenn Sie mit der SQL_Cruise-Datenbank verbunden sind, unabhängig von der Anzahl der Schemas, die über tblFoo verfügen, da Sie das DBO-Schema angegeben haben. Die dritte Option generiert eine Fehlermeldung (siehe Abbildung 8), wenn die SQL_Cruise-Datenbank über mehrere Schemata mit tblFoo verfügt, wie in Listing 4 gezeigt, wo ich sowohl die Tabelle dbo.tblFoo als auch die Tabelle user.tblFoo erstellt habe.

Ja, das stimmt – das Objekt existiert, aber Sie erhalten die Fehlermeldung Ungültiger Objektname. Stellen Sie niemals im Voraus sicher, dass ein Objekt mit diesem Namen nicht existiert. Die Meldung weist möglicherweise auf ein Syntaxproblem hin.

Feste Rollen sind in Microsoft SQL Server sowohl auf Server- als auch auf Datenbankebene enthalten. Sie können jedoch Ihre eigenen Rollen erstellen, wenn Situationen auftreten, in denen Sie vielen Benutzern dieselben Berechtigungen zuweisen müssen. Durch das Erstellen benutzerdefinierter Rollen können Sie diese Rechte nur einmal definieren: beim Erstellen der Rolle, nicht auf der Basis eines Anmeldekontos pro Benutzer oder pro Benutzer (abhängig von den Datenbank- oder Serverrollen). Dies spart nicht nur Zeit, sondern beseitigt auch Inkonsistenzen bei der Zuweisung von Rechten an mehrere Benutzer oder Konten.

Verwenden Sie die Hyperlinks, um durch die vollständige Liste der von Microsoft bereitgestellten Serverrollen und Datenbankrollen zu navigieren. Zukünftige Artikel, in denen wir uns von den Grundlagen zu tieferen Themen bewegen, werden sich mit der Erstellung von Rollen, dem Hinzufügen von Benutzern oder Konten zu diesen Rollen und dem Zuordnen von Rechten zu Rollen auf Server- und Datenbankebene befassen.

Die Sicherheit von Microsoft SQL Server ist ein sehr wichtiges Thema. Es zeichnet sich durch seine Tiefe sowie die Originalität seiner Terminologie aus. Ich hoffe, dass ich mein Ziel erreicht habe, die verschiedenen Begriffe zu erklären und einen allgemeinen Überblick über die in der Praxis verwendeten Gegenstände zu geben. Wir werden in diesen Einstiegsartikeln noch einige weitere Themen behandeln, aber ich werde bald auf komplexere Probleme eingehen, die sich aus diesem Beitrag ergeben. Wie immer danke ich den Lesern für ihre Aufmerksamkeit und freue mich auf Ihre Kommentare. Ich hoffe, dass dieser Artikel neuen Datenbankadministratoren dabei hilft, die Geheimnisse von SQL zu meistern.

Listing 1. Code, der den in der GUI vorgenommenen Einstellungen entspricht

VERWENDEN SIE GO CREATE LOGIN VON WINDOWS MIT DEFAULT_DATABASE= GO VERWENDEN SIE GO CREATE USER FÜR DIE ANMELDUNG ALTER USER MIT DEFAULT_SCHEMA= GO CREATE SCHEMA AUTHORIZATION GO VERWENDEN GO CREATE USER FÜR DIE ANMELDUNG ALTER USER MIT DEFAULT_SCHEMA= GO VERWENDEN GO CREATE USER FÜR DIE ANMELDUNG ALTER USER MIT DEFAULT_S CHEMA= GO verwenden Sie GO GRANT VIEW ANY DEFINITION TO GO

Listing 2. Informationen zu System- und Datenbankbenutzern

SELECT name , sid , Principal_ID , type_desc , default_database_name FROM sys.server_principals WHERE name = "professor"; SELECT name , sid , Principal_id , type_desc , default_schema_name FROM lifeboat.sys.database_principals WHERE name = "professor";

Listing 3. Beispielabfrage zur Auswahl von Tabellenspalten und -zeilen

OPTION 1: FQDN -=========================================== ============ ============================ SELECT * FROM SQL_Cruise.dbo.tblFoo; -============================================== === ======================= - OPTION 2: Name über Schema definiert -============== == ============================================== ===== ======= SELECT * FROM dbo.tblFoo; -============================================== === ======================= - OPTION 3: nur Objektname -=============== === ============================================ ====== ===== SELECT * FROM tblFoo; Listing 4. Tabellen mit mehreren Schemata erstellen USE GO CREATE SCHEMA AUTHORIZATION GO CREATE TABLE dbo.tblFoo (id INT); TABELLE ERSTELLEN .tblFoo (id INT); SELECT * FROM tblFoo;


Grundlagen der SQL Server-Sicherheit


5 Antworten

Aufgrund Ihrer Frage denke ich, dass Sie über den Unterschied zwischen Benutzer und Login etwas verwirrt sind. Ein Login ist im Allgemeinen ein Konto auf SQL Server – jemand, der sich beim Server anmelden kann und über ein Passwort verfügt. Ein Benutzer ist eine Eingabe mit Zugriff auf eine bestimmte Datenbank.

Das Erstellen eines Logins ist einfach und sollte (natürlich) vor dem Erstellen eines Benutzerkontos zum Anmelden bei einer bestimmten Datenbank erfolgen:

LOGIN ERSTELLEN NewAdminName WITH PASSWORD = „ABCD“ GO

So erstellen Sie einen Benutzer mit db_owner-Berechtigungen mit dem soeben deklarierten Login:

Verwenden Sie YourDatabase; GO, WENN NICHT EXISTIERT (SELECT * FROM sys.database_principals WHERE name = N"NewAdminName") BEGIN CREATE USER FOR LOGIN EXEC sp_addrolemember N"db_owner", N"NewAdminName" END; GEHEN

Jetzt sind die Anmeldungen etwas flüssiger, als es mir oben scheint. Beispielsweise wird bei der Installation der Datenbank automatisch ein Benutzerkonto für das Windows-Administratorkonto erstellt (in den meisten SQL Server-Installationen). In den meisten Situationen verwende ich dies nur, wenn ich die Datenbank verwalte (sie verfügt über alle Berechtigungen).

Wenn Sie jedoch von einer Anwendung aus auf SQL Server zugreifen möchten, müssen Sie den Server für den „Gemischten Modus“ (sowohl Windows- als auch SQL-Anmeldung) konfigurieren und wie oben gezeigt eine Anmeldung erstellen. Sie erhalten dann „GRANT“-Berechtigungen für diese SQL-Eingabe, je nachdem, was für Ihre Anwendung erforderlich ist. Weitere Informationen finden Sie unter.

UPDATE: Aaron weist darauf hin, dass Sie sp_addsrvrolemember verwenden, um Ihrem Konto eine bereitgestellte Rolle zuzuweisen. Das ist eine gute Idee – schneller und einfacher als die manuelle Gewährung von Berechtigungen. Wenn Sie es finden, werden Sie viele Links sehen. Sie sollten jedoch dennoch den Unterschied zwischen einem Login und einem Benutzer verstehen.

Volle Administratorrechte für den gesamten Server oder eine bestimmte Datenbank? Ich denke, die anderen haben für die Datenbank geantwortet, aber für den Server:

VERWENDEN ; GO CREATE LOGIN MyNewAdminUser WITH PASSWORD = N"abcd", CHECK_POLICY = OFF, CHECK_EXPIRATION = OFF; GO EXEC sp_addsrvrolemember @loginame = N"MyNewAdminUser", @rolename = N"sysadmin";

Je nachdem, welche Version von SQL Server Express Sie verwenden, müssen Sie möglicherweise die CHECK_-Parameter weglassen (es ist fast immer eine gute Idee, diese Informationen in Ihre Frage aufzunehmen).

Wenn Sie ein generisches Skript erstellen möchten, können Sie dies mit einer Execute-Anweisung tun und diese durch Ihren Benutzernamen und Datenbanknamen ersetzen

Deklarieren Sie @userName als varchar(50); Deklarieren Sie @defaultDataBaseName als varchar(50); Deklarieren Sie @LoginCreationScript als varchar(max); Deklarieren Sie @UserCreationScript als varchar(max); Deklarieren Sie @TempUserCreationScript als varchar(max); set @defaultDataBaseName = "data1"; set @userName = "domain\userName"; set @LoginCreationScript ="CREATE LOGIN [(userName)] FROM WINDOWS WITH DEFAULT_DATABASE =(dataBaseName)" set @UserCreationScript =" USE (dataBaseName) CREATE User [(userName)] for LOGIN [(userName)]; EXEC sp_addrolemember ""db_datareader "", "(userName)""; EXEC sp_addrolemember ""db_datawriter"", ""(userName)""; Grant Execute on Schema:: dbo TO [(userName)];" /*Login-Erstellung*/ set @LoginCreationScript=Replace(Replace(@LoginCreationScript, "(userName)", @userName), "(dataBaseName)", @defaultDataBaseName) set @UserCreationScript =Replace(@UserCreationScript, "(userName)" , @userName) Execute(@LoginCreationScript) /*Benutzererstellung und Rollenzuweisung*/ set @TempUserCreationScript =Replace(@UserCreationScript, "(dataBaseName)", @defaultDataBaseName) Execute(@TempUserCreationScript) set @TempUserCreationScript =Replace(@UserCreationScript, „(dataBaseName)“, „db2“) Execute(@TempUserCreationScript) set @TempUserCreationScript =Replace(@UserCreationScript, „(dataBaseName)“, „db3“) Execute(@TempUserCreationScript)

Sie können Folgendes verwenden:

LOGIN ERSTELLEN MIT PASSWORT = " " ; GEHEN

Sie können auch Folgendes verwenden:

GRANT-Berechtigung [ ,...n ] ON SCHEMA:: Schemaname

Zum Konfigurieren von Berechtigungen für das Schema, das Sie Benutzern zugewiesen haben.

Letzte Woche habe ich Microsoft SQL Server 2014 Developer Edition auf meiner Entwicklerseite installiert und bin sofort auf ein Problem gestoßen, das ich noch nie zuvor gesehen habe.

Ich habe unzählige Male verschiedene Versionen von SQL Server installiert und es ist normalerweise ein schmerzloser Vorgang. Installieren Sie den Server, starten Sie die Verwaltungskonsole – so einfach ist das. Als ich jedoch nach Abschluss dieser Installation versuchte, mich mit SSMS beim Server anzumelden, erhielt ich eine Fehlermeldung ähnlich der folgenden:

SQL Server-Anmeldefehler 18456 „Anmeldung für Benutzer fehlgeschlagen... (Microsoft SQL Server, Fehler: 18456)“ Ich habe diesen Fehler verwendet, wenn ich beim Anmelden das falsche Kennwort eingegeben habe – aber das ist nur dann der Fall, wenn ich den gemischten Modus verwende ( Windows- und SQL-Authentifizierung). In diesem Fall war der Server nur mit Windows-Authentifizierung konfiguriert und das Benutzerkonto gehörte mir. Ich bin immer noch nicht sicher, warum mein Benutzer während der Installation nicht zur SYSADMIN-Rolle hinzugefügt wurde. Vielleicht habe ich einen Schritt übersehen und vergessen, ihn hinzuzufügen. Auf jeden Fall war nicht alle Hoffnung verloren.

Wenn Sie sich mit keinem anderen Konto auf SQL Server anmelden können, können Sie dieses Problem beheben, indem Sie die Netzwerkanmeldung über die CLI hinzufügen. Dazu müssen Sie ein Windows-Administrator für den PC sein, an dem Sie angemeldet sind.

Stoppen Sie den MSSQL-Dienst. Öffnen Sie eine Eingabeaufforderung mit dem Befehl „Als Administrator ausführen“. Gehen Sie zu dem Ordner, in dem die SQL Server-EXE-Datei gespeichert ist. Der Standardwert für SQL Server 2014 ist „C:\Programme\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Binn“. Führen Sie den folgenden Befehl aus: „sqlservr.exe -m“. Dadurch wird SQL Server im Einzelbenutzermodus gestartet. Sobald Sie diese Eingabeaufforderung verlassen haben, öffnen Sie eine andere und wiederholen Sie die Schritte 2 und 3. Führen Sie im zweiten Eingabeaufforderungsfenster „SQLCMD -S Server_Name\Instance_Name“ aus. Führen Sie in diesem Fenster die folgenden Zeilen aus und drücken Sie nach jeder Zeile die Eingabetaste: 1

ERSTELLEN SIE LOGIN [Domänenname\Benutzername] UNTER WINDOWS 2 GO 3 SP_ADDSRVROLEMEMBER "LOGIN_NAME", "SYSADMIN" 4 GO Verwenden Sie STRG + C, um beide Prozesse in Eingabeaufforderungsfenstern zu beenden; Sie werden aufgefordert, Y zu drücken, um den SQL Server-Prozess zu beenden.

Starten Sie den MSSQL-Dienst neu. Das ist es! Sie können sich nun mit Ihrem Online-Login anmelden.



 


Lesen:



Öffnen Sie das linke Menü Cayo Coco

Öffnen Sie das linke Menü Cayo Coco

Cayo Coco Island ist eine Ferieninsel in Zentralkuba. Lage der Insel Cayo Coco Island liegt direkt gegenüber dem Canal Viejo in...

Warum brauchen wir Funkkommunikation und Radiosender?

Warum brauchen wir Funkkommunikation und Radiosender?

Manche Menschen träumen von einem neuen iPhone, andere von einem Auto und wieder andere von einem Teilesatz und einem neuen Lautsprecher für ihr Radio. Es gab eine Zeit vor nicht allzu langer Zeit, da...

Kendall- und Spearman-Rangkorrelationskoeffizienten Beispiel für einen Kendall-Rangkorrelationskoeffizienten

Kendall- und Spearman-Rangkorrelationskoeffizienten Beispiel für einen Kendall-Rangkorrelationskoeffizienten

Präsentation und Vorbearbeitung von Gutachten. In der Praxis kommen mehrere Arten von Gutachten zum Einsatz: - qualitativ (oft-selten,...)

Programmierfunktionen

Programmierfunktionen

Zweck der Arbeit: 1) die Regeln zur Beschreibung von Funktionen studieren; 2) Kenntnisse im Umgang mit Funktionen beim Schreiben von Programmen in C++ erwerben. Theoretisch...

Feed-Bild RSS