Créer une géodatabase d'entreprise (Gestion des données)
Récapitulatif
L'outil Créer la géodatabase d'entreprise crée une base de données, des emplacements de stockage et un utilisateur de base de données à utiliser comme administrateur et propriétaire de la géodatabase selon le système de gestion de bases de données (SGBD) utilisé. Il accorde à l'administrateur de géodatabase les privilèges requis pour créer une géodatabase, puis crée une géodatabase dans la base de données.
Utilisation
Le tableau suivant indique les actions possibles de l'outil pour chaque type de SGBD :
Fonction
SGBD
Crée une base de données
PostgreSQL et Microsoft SQL Server
Crée un tablespace
Oracle
Crée un administrateur de géodatabase dans la base de données
Oracle, PostgreSQL et SQL Server (en cas de création d'une géodatabase de schéma sde)
Accorde à l'administrateur de la géodatabase les privilèges requis pour créer une géodatabase, la mettre à niveau et mettre fin aux connexions à la base de données.
Oracle et PostgreSQL
Accorde à l'administrateur de la géodatabase les privilèges requis pour créer une géodatabase et mettre fin aux connexions à la base de données.
SQL Server (pour la création d'une géodatabase de structure sde)
Crée une géodatabase dans la base de données spécifiée
Oracle, PostgreSQL et SQL Server
-
ArcGIS for Desktop (Standard ou Advanced), ArcGIS Engine Runtime avec l'extension Geodatabase Update ou ArcGIS for Server (Standard ou Advanced) doit être installé sur l'ordinateur à partir duquel vous allez créer la géodatabase. Vous devez être en mesure de vous connecter directement au SGBD pour créer les objets de base de données et une géodatabase. Pour ce faire, vous devez installer et configurer un client SGBD sur l'ordinateur sur lequel le client ArcGIS est installé.
Syntaxe
Paramètre | Explication | Type de données |
database_platform [database_platform,...] |
Spécifiez le type de système de gestion de bases de données auquel vous allez vous connecter pour créer une géodatabase.
| String |
instance_name |
Pour SQL Server, fournissez le nom d'instance SQL Server. Pour Oracle, indiquez le nom TNS ou la chaîne Easy Connect d'Oracle. Pour PostgreSQL, entrez le nom du serveur sur lequel PostgreSQL est installé. | String |
database_name (Facultatif) |
Ce paramètre est valide uniquement pour les types SGBD PostgreSQL et SQL Server. Vous pouvez saisir le nom d'une base de données préconfigurée existante ou saisir le nom d'une base de données à créer. Si vous laissez l'outil créer la base de données dans SQL Server, les tailles de fichier seront soit celles que vous avez définies pour la base de données du modèle SQL Server, soit 500 Mo pour le fichier MDF et 125 Mo pour le fichier LDF, selon celle qui est la plus importante. Les fichiers MDF et LDF sont créés à l'emplacement par défaut de SQL Server sur le serveur de base de données. Si vous laissez l'outil créer la base de données dans PostgreSQL, la base de données template1 est utilisée comme modèle pour votre base de données. N'oubliez pas que le nom de la base de données sera transmis à l'agrégat de bases de données en caractères minuscules. | String |
account_authentication (Facultatif) |
Spécifiez le type d'autorisation à utiliser pour la connexion à une base de données.
| Boolean |
database_admin (Facultatif) |
Si vous utilisez l'authentification de base de données, vous devez spécifier un administrateur de base de données. Pour Oracle, l'administrateur de base de données est sys. Pour Postgres, il s'agit du super-utilisateur postgres. Pour SQL Server, il s'agit d'un membre du rôle de serveur fixe sysadmin. | String |
database_admin_password (Facultatif) |
Saisissez le mot de passe de l'administrateur de base de données. Si vous utilisez l'authentification de base de données, vous devez spécifier le mot de passe de l'administrateur de base de données. | Encrypted String |
sde_schema (Facultatif) |
Ce paramètre est valable uniquement pour SQL Server et indique si la géodatabase doit être créée dans le schéma d'un utilisateur nommé sde ou dans le schéma dbo de la base de données. Si vous créez une géodatabase de schéma dbo, vous devez vous connecter en tant qu'utilisateur dbo dans l'instance SQL Server. Par conséquent, si vous utilisez l'authentification du système d'exploitation, l'ouverture de session utilisée doit être dbo dans l'instance SQL Server.
| Boolean |
gdb_admin_name (Facultatif) |
Si vous utilisez PostgreSQL, cette valeur doit être sde. Si le rôle de connexion sde n'existe pas, cet outil le crée et lui accorde des privilèges de super-utilisateur. Il crée également une structure sde dans la base de données. Si le rôle de connexion sde existe, cet outil lui accorde des privilèges de super-utilisateur s'il ne les détient pas déjà. Si vous utilisez Oracle, la valeur par défaut est sde. Toutefois, si vous créez une géodatabase de structure utilisateur à l'intérieur d'une géodatabase sde principale, spécifiez le nom de l'utilisateur qui possédera la géodatabase. Si l'utilisateur n'existe pas dans le SGBD, l'outil Créer la géodatabase d'entreprise le crée et lui accorde les privilèges requis pour créer et mettre à niveau une géodatabase, puis mettre fin aux connexions utilisateur au SGBD. Si l'utilisateur existe déjà, l'outil lui accorde les privilèges requis. Si vous utilisez SQL Server et avez spécifié une géodatabase de schéma sde, cette valeur doit être sde. Cet outil crée une connexion sde, un utilisateur de base de données et une structure, puis accorde des privilèges pour créer une base de données et mettre fin aux connexions à l'instance SQL Server. Si vous avez spécifié un schéma dbo, n'indiquez aucune valeur pour ce paramètre. | String |
gdb_admin_password (Facultatif) |
Fournissez le mot de passe de l'administrateur de géodatabase. Si l'administrateur de géodatabase existe déjà dans le SGBD, le mot de passe que vous saisissez doit correspondre au mot de passe existant. Si l'administrateur de géodatabase n'existe pas encore, entrez un mot de passe de base de données valide pour le nouvel utilisateur. Le mot de passe doit être conforme aux règles de mot de passe mis en place par votre SGBD. Ce mot de passe est une chaîne chiffrée par géotraitement. | Encrypted String |
tablespace_name (Facultatif) |
Ce paramètre est valide uniquement pour les types de SGBD Oracle et PostgreSQL. Pour Oracle, procédez de l'une des façons suivantes :
Pour PostgreSQL, vous devez spécifier le nom d'un espace de table à utiliser défaut pour la base de données ou ne pas spécifier de valeur pour ce paramètre. Cet outil ne crée pas d'espace de table dans PostgreSQL. Si vous ne fournissez aucune valeur pour ce paramètre, la base de données est créée dans l'espace de table pg_ par défaut dans PostgreSQL. | String |
authorization_file |
Indique le chemin et le nom du fichier de codes clés créé lorsque vous avez autorisé ArcGIS for Server Enterprise. Ce fichier est contenue dans le dossier \\Program Files\ESRI\License<n° version>\sysgen sous Windows et dans le répertoire /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<n° version>/sysgen sous Linux. Si vous ne l'avez pas déjà fait, autorisez ArcGIS for Server à créer ce fichier. | File |
Exemple de code
Le script suivant crée une géodatabase dans une base de données Oracle. Il crée un utilisateur sde et un tablespace par défaut, sdetbs, pour l'utilisateur sde. Le fichier de codes clés se trouve sur un serveur Linux distant.
#Import arcpy module
import arcpy
arcpy.CreateEnterpriseGeodatabase_management("ORACLE", "ora11g:1521/elf", "", "DATABASE_AUTH", "sys", "manager", "", "sde", "supersecret", "sdetbs",
"//myserver/mymounteddrive/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.1/sysgen/keycodes")
Ce script se connecte à une instance SQL Server (tor\ssinstance) pour créer une base de données nommée sp_data et une géodatabase de schéma sde à l'intérieur. La connexion s'établit à l'aide de l'authentification du système d'exploitation. Le fichier de codes clés se trouve sur un serveur Windows distant.
#Import arcpy module
import arcpy
arcpy.CreateEnterpriseGeodatabase_management("SQL_SERVER", "tor\ssinstance1", "sp_data", "OPERATING_SYSTEM_AUTH", "", "", "SDE_SCHEMA", "sde", "sde",
"", "//myserver/Program Files/ESRI/License10.1/sysgen/keycodes")
Ce script se connecte à un cluster de bases de données PostgreSQL sur un serveur nommé feldspath. Un utilisateur sde est créé tout comme une base de données, pggdb, dans le tablespace existant, gdbspace. Le fichier de codes clés se trouve sur un serveur Linux local.
#Import arcpy module
import arcpy
arcpy.CreateEnterpriseGeodatabase_management("POSTGRESQL", "feldspar", "pggdb", "DATABASE_AUTH", "postgres", "averturis", "", "sde", "nomira", "gdbspace",
"//arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.1/sysgen/keycodes")
Le script Python autonome suivant vous permet de fournir des informations spécifiques à votre site à l'aide d'options.
"""
Name: create_enterprise_gdb.py
Description: Provide connection information to a DBMS instance and create an enterprise geodatabase.
Type create_enterprise_gdb.py -h or create_enterprise_gdb.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 " + arcpy.GetInstallInfo()['Version'] )
#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 ("--schema", dest="Schema_type", type="choice", choices=['SDE_SCHEMA', 'DBO_SCHEMA'], default="SDE_SCHEMA", help="Schema Type for SQL Server geodatabase, SDE or DBO. Default=SDE_SCHEMA")
parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name")
parser.add_option ("-p", dest="Gdb_admin_pwd", type="string", default="", help="Geodatabase administrator password")
parser.add_option ("-t", dest="Tablespace", type="string", default="", help="Tablespace name")
parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file")
# 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
schema_type = options.Schema_type.upper()
gdb_admin = options.Gdb_admin
gdb_admin_pwd = options.Gdb_admin_pwd
tablespace = options.Tablespace
license = options.Authorization_file
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 (license == ""):
print " \n%s: error: \n%s\n" % (sys.argv[0], "Authorization file (-l) must be specified.")
parser.print_help()
sys.exit(3)
if(database_type == "SQL_SERVER"):
if(schema_type == "SDE_SCHEMA" and gdb_admin.lower() != "sde"):
print "\n%s: error: %s\n" % (sys.argv[0], "To create SDE schema on SQL Server, geodatabase administrator must be SDE.")
sys.exit(3)
if (schema_type == "DBO_SCHEMA" and gdb_admin != ""):
print "\nWarning: %s\n" % ("Ignoring geodatabase administrator specified when creating DBO schema...")
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 (schema_type == "DBO_SCHEMA"):
print "\nWarning: %s %s, %s\n" % ("Only SDE schema is supported on", database_type, "switching to SDE schema..." )
if( gdb_admin.lower() == ""):
print "\n%s: error: %s\n" % (sys.argv[0], "Geodatabase administrator must be specified.")
sys.exit(3)
if( gdb_admin.lower() != "sde"):
if (database_type == "ORACLE"):
print "\nGeodatabase admin user is not SDE, creating user schema geodatabase on Oracle...\n"
sys.exit(3)
else:
print "\n%s: error: %s for %s.\n" % (sys.argv[0], "Geodatabase administrator must be SDE", database_type)
sys.exit(3)
if( dbms_admin == ""):
print "\n%s: error: %s\n" % (sys.argv[0], "DBMS administrator must be specified!")
sys.exit(3)
if (account_authentication == "OPERATING_SYSTEM_AUTH"):
print "Warning: %s %s, %s\n" % ("Only database authentication is supported on", database_type, "switching to database authentication..." )
# 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 an enterprise geodatabase 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("+++++++++")
try:
print "Creating enterprise geodatabase...\n"
arcpy.CreateEnterpriseGeodatabase_management(database_platform=database_type,instance_name=instance, database_name=database, account_authentication=account_authentication, database_admin=dbms_admin, database_admin_password=dbms_admin_pwd, sde_schema=schema_type, gdb_admin_name=gdb_admin, gdb_admin_password=gdb_admin_pwd, tablespace_name=tablespace, authorization_file=license)
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)