Resumen
La herramienta Crear rol crea un rol de base de datos y le permite agregar o quitar usuarios del rol.
Uso
Esta herramienta solo se puede utilizar con Oracle, Microsoft SQL Server o PostgreSQL.
No se pueden utilizar delimitadores, como comillas dobles, al especificar el rol. Por lo tanto, el rol solo puede contener caracteres admitidos por el sistema de administración de bases de datos subyacente cuando se proporciona sin delimitadores.
Sintaxis
CreateRole_management (input_database, role, {grant_revoke}, {user_name})
Parámetro | Explicación | Tipo de datos |
input_database | Especifique el archivo de conexión con una base de datos o geodatabase corporativa. Debe utilizar una conexión directa (sin usar un servicio ArcSDE) y conectarse como usuario administrador de base de datos. | Workspace |
role | Escriba el nombre del rol de base de datos que desea crear. Si el rol ya existe, introduzca el nombre del rol al que desea agregar usuarios o quitar usuarios. | String |
grant_revoke (Opcional) | Especifique si desea otorgar el rol a un usuario o lista de usuarios o quitar un usuario o lista de usuarios del rol.
| String |
user_name (Opcional) | Introduzca el nombre del usuario para el que desea cambiar la pertenencia al rol. Para especificar varios usuarios, escriba los nombres de usuario separados por comas (sin espacios). | String |
Ejemplo de código
Ejemplo 1 de CreateRole
Crea un rol de base de datos, editores, en una geodatabase en Oracle.
arcpy.CreateRole_management("C:\\gdbconnections\\gdb_oracle.sde", "editors")
Ejemplo 2 de CreateRole
Crea un rol de grupo de base de datos, preparadores de borradores, en un clúster de base de datos de PostgreSQL y lo otorga a los usuarios eng1 y eng2.
#Import arcpy module
import arcpy
arcpy.CreateRole_management("C:\\dbconnections\\db_postg.sde", "drafters", "GRANT", "eng1,eng2")
Ejemplo 3 de CreateRole
Otorga un rol de base de datos existente, lectores, al auditor de usuario en una base de datos de SQL Server.
#Import arcpy module
import arcpy
arcpy.CreateRole_management("C:\\connectionfiles\\db_ss.sde", "readers", "GRANT", "auditor")
Ejemplo 4 de CreateRole
Revoca el rol de base de datos, creadores, de los usuarios de la base de datos intern1, intern2 e intern3.
#Import arcpy module
import arcpy
arcpy.CreateRole_management("D:\\myconnectionfiles\\mygdb.sde", "creators", "REVOKE", "intern1,intern2,intern3")
Ejemplo 5 de CreateRole
La siguiente secuencia de comandos independiente le permite proporcionar la información específica de su sitio utilizando las opciones para:
- Crear un archivo de conexión de base de datos, que se utiliza como la base de datos de entrada.
- Crear un rol de base de datos.
- Agregar usuarios al nuevo rol.
"""
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)
Entornos
Información sobre licencias
- ArcGIS for Desktop Basic: No
- ArcGIS for Desktop Standard: Sí
- ArcGIS for Desktop Advanced: Sí