ArcGIS Desktop

  • Dokumentation
  • Support

  • My Profile
  • Hilfe
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Die Mapping-Plattform für Ihre Organisation

ArcGIS Desktop

Ein vollständiges professionelles GIS

ArcGIS Enterprise

GIS in Ihrem Unternehmen

ArcGIS for Developers

Werkzeuge zum Erstellen standortbezogener Apps

ArcGIS Solutions

Kostenlose Karten- und App-Vorlagen für Ihre Branche

ArcGIS Marketplace

Rufen Sie Apps und Daten für Ihre Organisation ab.

  • Dokumentation
  • Support
Esri
  • Anmelden
user
  • Eigenes Profil
  • Abmelden

ArcMap

  • Startseite
  • Erste Schritte
  • Karte
  • Analysieren
  • Verwalten von Daten
  • Werkzeuge
  • Erweiterungen

Datenbankbenutzer erstellen

  • Zusammenfassung
  • Verwendung
  • Syntax
  • Codebeispiel
  • Umgebungen
  • Lizenzinformationen

Zusammenfassung

Mit dem Werkzeug Datenbankbenutzer erstellen wird ein Datenbankbenutzer mit ausreichenden Berechtigungen zum Erstellen von Daten in der Datenbank erstellt.

Verwendung

  • Dieses Werkzeug kann nur mit Oracle, Microsoft SQL Server oder PostgreSQL verwendet werden. (Wird in Microsoft Azure SQL Database nicht unterstützt.)

  • Für Oracle und SQL Server kann mit dem Werkzeug Datenbankbenutzer erstellen eine bereits vorhandene Betriebssystemanmeldung als Benutzer für die angegebene Datenbank hinzugefügt werden.

  • Für eine Windows-Gruppe kann kein Datenbankbenutzer erstellt werden.

  • Dieses Werkzeug erstellt gemeinsame Protokolldateitabellen für den Benutzer, wenn es auf einer Geodatabase in Oracle oder PostgreSQL ausgeführt wird.

  • Den in der Datenbank erstellten Benutzern werden folgende Berechtigungen gewährt:

    DBMSBerechtigungen

    Oracle

    CREATE PROCEDURE

    CREATE SESSION

    CREATE SEQUENCE

    CREATE TABLE

    CREATE TRIGGER

    CREATE VIEW

    SELECT ON DBA_ROLES

    PostgreSQL

    USAGE-Berechtigungen für das SDE-Schema, wenn der Benutzer in einer Geodatabase oder einer Datenbank, in der der Typ "ST_Geometry" installiert ist, erstellt wurde

    SELECT, INSERT, UPDATE, DELETE für die Tabelle public.geometry_columns und SELECT für public.spatial_ref_systable, wenn der PostGIS-Geometrietyp installiert ist

    SQL Server

    CREATE TABLE

    CREATE PROCEDURE

    CREATE VIEW

    VIEW DEFINITION

  • Wenn die Anmeldung in der SQL Server-Instanz oder im PostgreSQL-Datenbank-Cluster nicht vorhanden ist, dann wird mit dem Werkzeug Datenbankbenutzer erstellen die Anmeldung hinzugefügt, ein Benutzer in der als Eingabedatenbank angegebenen Datenbank hinzugefügt und ein Schema für den Benutzer in der Datenbank erstellt. Die angegebene Datenbank wird als Standarddatenbank des Benutzers in SQL Server festgelegt.

  • Wenn in der SQL Server-Instanz die Anmeldung bereits vorhanden ist, wird mit dem Werkzeug Datenbankbenutzer erstellen der Benutzer zur als Eingabedatenbank angegebenen Datenbank hinzugefügt und ein passendes Schema erstellt. Die Standarddatenbank des Benutzers wird in SQL Server nicht geändert.

  • Wenn im PostgreSQL-Datenbank-Cluster die Anmeldung bereits vorhanden ist, wird mit dem Werkzeug Datenbankbenutzer erstellen das passende Schema in der als Eingabedatenbank angegebenen Datenbank erstellt.

  • Mit diesem Werkzeug kann kein Benutzer mit dem Namen "sde" erstellt werden. Der Benutzer "sde" ist ein Geodatabase-Administrator und benötigt mehr Berechtigungen, als vom Werkzeug Datenbankbenutzer erstellen gewährt werden.

  • Sie können keine Trennzeichen wie doppelte Anführungszeichen verwenden, wenn Sie einen Benutzernamen angeben. Der Benutzername kann nur Zeichen enthalten, die vom zugrunde liegenden Datenbankmanagementsystem unterstützt werden, wenn er ohne Trennzeichen bereitgestellt wird.

Syntax

CreateDatabaseUser_management (input_database, {user_authentication_type}, user_name, {user_password}, {role}, {tablespace_name})
ParameterErläuterungDatentyp
input_database

Geben Sie die Verbindungsdatei zu einer Datenbank oder Enterprise-Geodatabase in Oracle, PostgreSQL oder SQL Server an. Stellen Sie sicher, dass die Verbindungsdatei eine direkte Verbindung mit der Datenbank (kein ArcSDE-Dienst) herstellt und dies als Datenbank-Administratorbenutzer erfolgt. Verbindungen zu Oracle müssen als "sys"-Benutzer hergestellt werden.

Workspace
user_authentication_type
(optional)

Verwenden Sie diese Option nur, wenn bereits ein Betriebssystem-Anmeldekonto besteht, für das Sie einen Datenbankbenutzer erstellen möchten. Nur aktiviert für SQL Server- und Oracle-Datenbanken.

  • DATABASE_USER —Erstellt einen Benutzer mit Datenbankauthentifizierung. Dies ist die Standardeinstellung. Wenn das Datenbankmanagementsystem keine Datenbankauthentifizierung zulässt, sollten Sie diese Option nicht verwenden.
  • OPERATING_SYSTEM_USER —Erstellt einen Benutzer mit Betriebssystemauthentifizierung. Das entsprechende Anmeldekonto muss bereits vorhanden sein. Wenn das Datenbankmanagementsystem keine Betriebssystemauthentifizierung zulässt, sollten Sie diese Option nicht verwenden.
Boolean
user_name

Geben Sie einen Namen für den neuen Datenbankbenutzer ein.

Wenn Sie einen Datenbankbenutzer für eine Betriebssystemanmeldung erstellen möchten, muss der Benutzername dem Anmeldenamen entsprechen.

String
user_password
(optional)

Geben Sie ein Kennwort für den neuen Benutzer ein. Die Kennwortrichtlinie der zugrunde liegenden Datenbank muss eingehalten werden.

Wenn Sie einen Datenbankbenutzer für ein Betriebssystem-Anmeldekonto erstellen möchten, ist keine Eingabe erforderlich.

Encrypted String
role
(optional)

Wenn Sie den neuen Benutzer einer bestehenden Datenbankrolle hinzufügen möchten, geben Sie den Namen der Rolle an.

String
tablespace_name
(optional)

Geben Sie beim Erstellen eines Benutzers in einer Oracle-Datenbank den Namen des Tablespace an, der als Standard-Tablespace für den Benutzer verwendet werden soll. Sie können einen vorkonfigurierten Tablespace angeben. Wenn der Tablespace noch nicht vorhanden ist, wird er im Standardspeicherverzeichnis von Oracle mit einer Größe von 400 MB erstellt. Wenn kein Tablespace angegeben wurde, wird der Oracle-Standard-Tablespace als Standard-Tablespace des Benutzers festgelegt.

String

Codebeispiel

CreateUser – Beispiel 1

Verwendet eine vordefinierte Datenbankverbindungsdatei (oracledb1.sde), um einen Datenbankbenutzer in Oracle zu erstellen, und erstellt einen Standard-Tablespace (sdetbs) für den Benutzer.

#Import arcpy module
import arcpy
arcpy.CreateDatabaseUser_management("C:/myconnections/oracledb1.sde", "DATABASE_USER", "map", "Pam987", "sdetbs")
CreateUser – Beispiel 2

Erstellt einen Eingabe-Workspace (pgconn.sde) in einem Ordner namens "Verbindungen", eine Login-Rolle der Datenbank und ein Schema in PostgreSQL

#Import arcpy module
import arcpy
arcpy.CreateDatabaseConnection_management("C:/connections", "pgconn.sde", "POSTGRESQL", myserver, mypgdb, "DATABASE_AUTH", "ela", "3L@pwd", "SAVE_USERNAME")
arcpy.CreateDatabaseUser_management("C:/connections/pgconn.sde", "DATABASE_USER", "dataowner", "N0look")
CreateUser – Beispiel 3

Erstellt einen Datenbankbenutzer, der einem vorhandenen Betriebssystem-Anmeldekonto (mynet\vorhoos) in SQL Server zugeordnet ist, und verwendet eine vordefinierte Datenbankverbindungsdatei (connection_ssi.sde)

#Import arcpy module
import arcpy
arcpy.CreateDatabaseUser_management("C:/gdbconnections/connection_ssi.sde", "OPERATING_SYSTEM_USER", "mynet\\vorhoos", "", "")
CreateUser – Beispiel 4

Mit dem folgenden eigenständigen Skript können Sie spezifische Informationen für Ihre Site über Optionen zum Erstellen eines Datenbankbenutzers angeben:

"""
Name: create_database_user.py
Description: Provide connection information to a database user.
Type create_database_user.py -h or create_database_user.py --help for usage
Author: Esri
"""

# Import system modules
import arcpy
import os
import optparse
import sys


# Define usage and version
parser = optparse.OptionParser(usage = "usage: %prog [Options]", version="%prog 1.0 for 10.1 release")

#Define help and options
parser.add_option ("--DBMS", dest="Database_type", type="choice", choices=['SQLSERVER', 'ORACLE', 'POSTGRESQL', ''], default="", help="Type of enterprise DBMS:  SQLSERVER, ORACLE, or POSTGRESQL.")                   
parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name")
parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name:  Not required for Oracle")
parser.add_option ("--auth", dest="Account_authentication", type ="choice", choices=['DATABASE_AUTH', 'OPERATING_SYSTEM_AUTH'], default='DATABASE_AUTH', help="Authentication type options (case-sensitive):  DATABASE_AUTH, OPERATING_SYSTEM_AUTH.  Default=DATABASE_AUTH")
parser.add_option ("-U", dest="Dbms_admin", type="string", default="", help="DBMS administrator user")
parser.add_option ("-P", dest="Dbms_admin_pwd", type="string", default="", help="DBMS administrator password")
parser.add_option ("--utype", dest="user_type", type ="choice", choices=['DATABASE_USER', 'OPERATING_SYSTEM_USER'], default='DATABASE_USER', help="Authentication type options (case-sensitive):  DATABASE_USER, OPERATING_SYSTEM_USER.  Default=DATABASE_USER")
parser.add_option ("-u", dest="dbuser", type="string", default="", help="database user name")
parser.add_option ("-p", dest="dbuser_pwd", type="string", default="", help="database user password")
parser.add_option ("-r", dest="role", type="string", default="", help="role to be granted to the user")
parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name")
# Check if value entered for option
try:
	(options, args) = parser.parse_args()

	#Check if no system arguments (options) entered
	if len(sys.argv) == 1:
		print "%s: error: %s\n" % (sys.argv[0], "No command options given")
		parser.print_help()
		sys.exit(3)

	#Usage parameters for spatial database connection
	database_type = options.Database_type.upper()
	instance = options.Instance
	database = options.Database.lower()	
	account_authentication = options.Account_authentication.upper()
	dbms_admin = options.Dbms_admin
	dbms_admin_pwd = options.Dbms_admin_pwd
	dbuser = options.dbuser
	dbuser_pwd = options.dbuser_pwd	
	tablespace = options.Tablespace
	user_type = options.user_type
	role = options.role

	
	if (database_type == "SQLSERVER"):
		database_type = "SQL_SERVER"
	
	if( database_type ==""):	
		print(" \n%s: error: \n%s\n" % (sys.argv[0], "DBMS type (--DBMS) must be specified."))
		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 must be specified with database authentication"))
			sys.exit(3)
		if( account_authentication == "OPERATING_SYSTEM_AUTH" and dbms_admin != ""):
			print("\nWarning: %s\n" % ("Ignoring DBMS administrator specified when using operating system authentication..."))
	else:		
		if( dbuser.lower() == ""):
			print("\n%s: error: %s\n" % (sys.argv[0], "Database user must be specified."))
			sys.exit(3)		
		if( dbms_admin == ""):
			print("\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!"))
			sys.exit(3)

	if ( user_type == "DATABASE_USER" and (dbuser =="" or dbuser_pwd =="")):
		print(" \n%s: error: \n%s\n" % (sys.argv[0], "To create database authenticated user, user name and password must be specified!"))
		parser.print_help()
		sys.exit(3)	

	# Get the current product license
	product_license=arcpy.ProductInfo()
	
	# Checks required license level
	if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE':
		print("\n" + product_license + " license found!" + "  Creating a user in an enterprise geodatabase or database requires an ArcGIS for Desktop Standard or Advanced, ArcGIS Engine with the Geodatabase Update extension, or ArcGIS for Server license.")
		sys.exit("Re-authorize ArcGIS before creating a database user.")
	else:
		print("\n" + product_license + " license available!  Continuing to create...")
		arcpy.AddMessage("+++++++++")

	# Local variables
	instance_temp = instance.replace("\\","_")
	instance_temp = instance_temp.replace("/","_")
	instance_temp = instance_temp.replace(":","_")
	Conn_File_NameT = instance_temp + "_" + database + "_" + dbms_admin   

	if os.environ.get("TEMP") == None:
		temp = "c:\\temp"	
	else:
		temp = os.environ.get("TEMP")
	
	if os.environ.get("TMP") == None:
		temp = "/usr/tmp"		
	else:
		temp = os.environ.get("TMP")  

	Connection_File_Name = Conn_File_NameT + ".sde"
	Connection_File_Name_full_path = temp + os.sep + Conn_File_NameT + ".sde"
	
	# Check for the .sde file and delete it if present
	arcpy.env.overwriteOutput=True
	if os.path.exists(Connection_File_Name_full_path):
		os.remove(Connection_File_Name_full_path)

	try:
		print("\nCreating Database Connection File...\n")
		# Process: Create Database Connection File...
		# Usage:  out_file_location, out_file_name, DBMS_TYPE, instnace, database, account_authentication, username, password, save_username_password(must be true)
		#arcpy.CreateDatabaseConnection_management(temp , Connection_File_Name, database_type, instance, database, account_authentication, dbms_admin, dbms_admin_pwd, "TRUE")
		arcpy.CreateDatabaseConnection_management(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=dbms_admin, password=dbms_admin_pwd, save_user_pass="TRUE")
	        for i in range(arcpy.GetMessageCount()):
			if "000565" in arcpy.GetMessage(i):   #Check if database connection was successful
				arcpy.AddReturnMessage(i)
				arcpy.AddMessage("\n+++++++++")
				arcpy.AddMessage("Exiting!!")
				arcpy.AddMessage("+++++++++\n")
				sys.exit(3)            
			else:
				arcpy.AddReturnMessage(i)
				arcpy.AddMessage("+++++++++\n")

		print("Creating database user...\n")
		arcpy.CreateDatabaseUser_management(input_workspace=Connection_File_Name_full_path, user_authentication_type=user_type, user_name=dbuser, user_password=dbuser_pwd, role=role, tablespace_name=tablespace)
		for i in range(arcpy.GetMessageCount()):
			arcpy.AddReturnMessage(i)
		arcpy.AddMessage("+++++++++\n")
	except:
		for i in range(arcpy.GetMessageCount()):
			arcpy.AddReturnMessage(i)
			
#Check if no value entered for option	
except SystemExit as e:
	if e.code == 2:
		parser.usage = ""
		print("\n")
		parser.print_help()   
		parser.exit(2)

Umgebungen

  • Aktueller Workspace

Lizenzinformationen

  • ArcGIS Desktop Basic: Nein
  • ArcGIS Desktop Standard: Ja
  • ArcGIS Desktop Advanced: Ja

Verwandte Themen

  • Rolle erstellen
  • Überblick über das Toolset "Geodatabase-Verwaltung"

ArcGIS Desktop

  • Startseite
  • Dokumentation
  • Support

ArcGIS Plattform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Über Esri

  • Über uns
  • Karriere
  • Insider-Blog
  • User Conference
  • Developer Summit
Esri
Wir sind an Ihrer Meinung interessiert.
© Copyright 2016 Environmental Systems Research Institute, Inc. | Datenschutz | Rechtliches