Créer un utilisateur de base de données (Gestion des données)

Niveau de licence :BasicStandardAdvanced

Récapitulatif

L'outil Créer un utilisateur de base de données crée un utilisateur de base de données avec des privilèges suffisants pour créer des données dans la base de données.

Utilisation

Syntaxe

CreateDatabaseUser_management (input_database, {user_authentication_type}, user_name, {user_password}, {role}, {tablespace_name})
ParamètreExplicationType de données
input_database

Spécifiez le fichier de connexion à une base de données ou à une géodatabase d'entreprise dans Oracle, PostgreSQL ou SQL Server. Veillez à ce que le fichier de connexion se connecte directement à la base de données (sans service ArcSDE) et à ce que la connexion s'établisse en tant qu'administrateur de base de données. Lorsque vous vous connectez à Oracle, vous devez vous connecter comme utilisateur sys.

Workspace
user_authentication_type
(Facultatif)

Utilisez cette option uniquement si un identifiant de système d'exploitation existe pour lequel vous voulez créer un utilisateur de base de données. Elle est activée uniquement pour les bases de données SQL Server et Oracle.

  • BDCrée un utilisateur authentifié de base de données. Il s'agit de l'option par défaut. Si votre SGBD n'est pas configuré de manière à permettre l'authentification de la base de données, n'utilisez pas cette option.
  • OSACrée un utilisateur authentifié du système d'exploitation. L'identifiant existant doit déjà exister. Si votre SGBD n'est pas configuré de manière à permettre l'authentification du système d'exploitation, n'utilisez pas cette option.
Boolean
user_name

Saisissez un nom pour le nouvel utilisateur de la base de données.

Si vous décidez de créer un utilisateur de base de données pour un identifiant de système d'exploitation, le nom d'utilisateur doit correspondre à l'identifiant.

String
user_password
(Facultatif)

Saisissez un mot de passe pour le nouvel utilisateur. La règle de mot de passe de la base de données sous-jacente sera appliquée.

Si vous décidez de créer un utilisateur de base de données pour un identifiant de système d'exploitation, aucune entrée n'est nécessaire.

Encrypted String
role
(Facultatif)

Si vous souhaitez ajouter le nouvel utilisateur à un rôle de base de données existant, tapez le nom de ce rôle.

String
tablespace_name
(Facultatif)

Lorsque vous créez un utilisateur dans une base de données Oracle, tapez le nom du tablespace à utiliser comme tablespace par défaut pour l'utilisateur. Vous pouvez spécifier un tablespace préconfiguré ou, si le tablespace n'existe pas déjà, il sera créé dans l'emplacement de stockage Oracle par défaut, avec une taille définie à 400 Mo. Si aucun tablespace n'est spécifié, le tablespace par défaut de l'utilisateur sera défini au tablespace Oracle par défaut.

String

Exemple de code

Exemple 1 d'utilisation de la fonction CreateUser

Utilise un fichier de connexion à une base de données prédéfini (oracledb1.sde) pour créer un utilisateur de base de données dans Oracle et crée un tablespace (sdetbs) par défaut pour cet utilisateur

#Import arcpy module
import arcpy

CreateDatabaseUser_management("C:\Documents and Settings\user1\Application Data\ESRI\ArcCatalog\oracledb1.sde", "DB", "map", "Pam987", "sdetbs")
Exemple 2 d'utilisation de la fonction CreateUser

Crée un espace de travail en entrée (pgconn.sde) dans l'emplacement de connexion ArcGIS for Desktop par défaut et crée un rôle de connexion à une base de données et une structure dans PostgreSQL

#Import arcpy module
import arcpy

CreateDatabaseConnection_management("Database Connections", "pgconn.sde", "POSTGRESQL", myserver, mypgdb, "DATABASE_AUTH", "ela", "3L@pwd", "SAVE_USERNAME")

CreateDatabaseUser_management("C:\Documents and Settings\u5\Application Data\ESRI\ArcCatalog\pgconn.sde", "DB", "dataowner", "N0look")
Exemple 3 d'utilisation de la fonction CreateUser

Crée un utilisateur de base de données correspondant à un identifiant de système d'exploitation existant (mynet\vorhoos) dans SQL Server et utilise un fichier de connexion à une base de données prédéfini (connection_ssi.sde).

#Import arcpy module
import arcpy

CreateDatabaseUser_management("C:\Documents and Settings\u5\Application Data\ESRI\ArcCatalog\connection_ssi.sde", "OSA", "mynet\vorhoos", "", "")
Exemple 4 d'utilisation de la fonction CreateUser

Le script autonome suivant vous permet de fournir des informations spécifiques à votre site à l'aide des options de création d'un utilisateur de base de données :

"""
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, os, optparse, 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)

Environnements

Cet outil n'utilise aucun environnement de géotraitement

Thèmes connexes

Informations de licence

ArcGIS for Desktop Basic: Annuler
ArcGIS for Desktop Standard: Oui
ArcGIS for Desktop Advanced: Oui
6/5/2014