Создать роль (Управление данными)

Краткая информация

Создает роль в базе данных, позволяя вам добавлять пользователей к роли или удалять из нее.

Использование

  • Этот инструмент можно использовать только с Oracle, Microsoft SQL Server или PostgreSQL.

  • Вы не можете использовать разделители, например двойные кавычки, при определении роли. Роль может содержать только символы, поддерживаемые базовой системой управления базами данных, если там не допускаются разделители.

Параметры

ПодписьОписаниеТип данных
Входное подключение к базе данных

Файл подключения к базе данных или многопользовательской базе геоданных. Подключение в качестве администратора базы данных

Workspace
Роль

Имя роли, которая будет создана. Если роль существует, укажите имя роли, к которой вы хотите добавить пользователей или удалить.

String
Предоставление или отзыв от пользователя
(Дополнительный)

Определяет, будет ли роль добавлена пользователю или списку пользователей, или пользователь или список пользователей будет удален из роли.

  • Предоставление ролиЭта роль будет предоставлена указанному пользователю или пользователям, что сделает их участниками этой роли. Это значение по умолчанию
  • Отзыв ролиРоль будет отозвана у указанного пользователя или пользователей, то есть они будут удалены из роли.
String
Имена пользователей
(Дополнительный)

Имя пользователя, чье участие в роли будет изменено. Чтобы указать несколько пользователей, введите имена пользователей, разделенные запятыми (без пробелов).

String

Производные выходные данные

ПодписьОписаниеТип данных
Роль создана успешно

Успешно ли инструмент завершил работу.

Boolean

arcpy.management.CreateRole(input_database, role, {grant_revoke}, {user_name})
ИмяОписаниеТип данных
input_database

Файл подключения к базе данных или многопользовательской базе геоданных. Подключение в качестве администратора базы данных

Workspace
role

Имя роли, которая будет создана. Если роль существует, укажите имя роли, к которой вы хотите добавить пользователей или удалить.

String
grant_revoke
(Дополнительный)

Определяет, будет ли роль добавлена пользователю или списку пользователей, или пользователь или список пользователей будет удален из роли.

  • GRANTЭта роль будет предоставлена указанному пользователю или пользователям, что сделает их участниками этой роли. Это значение по умолчанию
  • REVOKEРоль будет отозвана у указанного пользователя или пользователей, то есть они будут удалены из роли.
String
user_name
(Дополнительный)

Имя пользователя, чье участие в роли будет изменено. Чтобы указать несколько пользователей, введите имена пользователей, разделенные запятыми (без пробелов).

String

Производные выходные данные

ИмяОписаниеТип данных
out_result

Успешно ли инструмент завершил работу.

Boolean

Пример кода

CreateRole, пример 1 (окно Python)

Создает роль базы данных editors.

import arcpy
arcpy.management.CreateRole("C:\\gdbconnections\\gdb_oracle.sde", "editors")
CreateRole, пример 2 (окно Python)

Создает роль группы базы данных drafters и назначает ее пользователям eng1 и eng2.

import arcpy
arcpy.management.CreateRole("C:\\dbconnections\\db_postg.sde", "drafters", 
                            "GRANT", "eng1,eng2")
CreateRole, пример 3 (окно Python)

Назначает существующую роль базы данных readers, пользователю auditor.

import arcpy
arcpy.management.CreateRole("C:\\connectionfiles\\db_ss.sde", "readers", 
                            "GRANT", "auditor")
CreateRole, пример 4 (окно Python)

Отзывает роль базы данных, creators, от пользователей intern1, intern2 и intern3.

import arcpy
arcpy.management.CreateRole("D:\\myconnectionfiles\\mygdb.sde", "creators", 
                            "REVOKE", "intern1,intern2,intern3")
CreateRole, пример 5 (автономный скрипт)

Следующий автономный скрипт позволяет вам указать информацию, определив используемые опции для выполнения следующего порядка действий:

  • Создания файла подключения к базе данных, используемого как input_database.
  • Создание роли базы данных.
  • Добавления пользователей к новой роли.

"""
Name: create_database_role.py
Description: Provide connection information to a database user.
Type create_database_role.py -h or create_database_role.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 ("-o", dest="operation", type ="choice", choices=['GRANT', 'REVOKE'], default='GRANT', help="Specify which operation to perform: grant to or revoke from the user(s). Options (case-sensitive):  GRANT, REVOKE.  Default=GRANT")
parser.add_option ("-r", dest="role", type="string", default="", help="role to be granted to the user")
parser.add_option ("-u", dest="userlist", type="string", default="", help="List of users to grant to or revoke from, separated by comma.")
# 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
	userlist = options.userlist
	role = options.role
	operation = options.operation

	
	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 (role == ""):
		print " \n%s: error: \n%s\n" % (sys.argv[0], "Role name (-r) 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( dbms_admin == ""):
			print "\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!")
			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 role 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 enterprise geodatabase.")
	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, account_authentication, username, password, database, save_username_password(must be 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 role...\n"
		arcpy.CreateRole_management(input_database=Connection_File_Name_full_path, grant_revoke=operation, role=role,  user_name=userlist)
		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)

Информация о лицензиях

  • Basic: Нет
  • Standard: Да
  • Advanced: Да

Связанные разделы