エンタープライズ ジオデータベースの作成 (データの管理)

ライセンス レベル:BasicStandardAdvanced

サマリ

[エンタープライズ ジオデータベースの作成(Create Enterprise Geodatabase)] ツールは、使用するデータベース管理システム(DBMS)に応じて、データベース、格納場所、およびジオデータベースの管理者またはジオデータベースの所有者として使用するデータベース ユーザを作成します。まずデータベース管理者にジオデータベースの作成に必要な権限を与えます。次にデータベースにジオデータベースを作成します。

使用法

構文

CreateEnterpriseGeodatabase_management (database_platform, instance_name, {database_name}, {account_authentication}, {database_admin}, {database_admin_password}, {sde_schema}, {gdb_admin_name}, {gdb_admin_password}, {tablespace_name}, authorization_file)
パラメータ説明データ タイプ
database_platform
[database_platform,...]

ジオデータベースを作成するために接続する、データベース管理システムの種類を指定します。

  • OracleOracle のインスタンスに接続することを指定します。
  • PostgreSQLPostgreSQL データベース クラスタに接続することを指定します。
  • SQL_ServerSQL Server のインスタンスに接続することを指定します。
String
instance_name

SQL Server の場合、SQL Server のインスタンス名を指定します。Oracle の場合、TNS 名または Oracle Easy Connection 文字列を指定します。PostgreSQL の場合、PostgreSQL がインストールされているサーバ名を指定します。

String
database_name
(オプション)

このパラメータは DBMS の種類が PostgreSQL と SQL Server である場合のみ有効です。すでに構成されている既存のデータベースの名前を入力するか、またはこれから作成するデータベースの名前を入力します。ツールを利用して SQL Server にデータベースを作成する場合、ファイル サイズは SQL Server のモデル データベースに対して定義したのと同じサイズか、MDF ファイルの場合は 500 MB、LDF ファイルの場合は 125 MB のどちらか大きい方になります。MDF と LDF ファイルは、データベース サーバ上のデフォルトの SQL Server の場所に作成されます。ツールを利用して PostgreSQL にデータベースを作成する場合は、テンプレート 1 のデータベースがテンプレートとして使用されます。

String
account_authentication
(オプション)

データベース接続に使用する認証の種類を指定します。

  • OPERATING_SYSTEM_AUTHツールを実行しているコンピュータにログインした時に使用したログイン情報が、データベース接続の認証に使用されます。 DBMS がオペレーティング システム認証を許可する設定が行われていない場合、認証は失敗します。
  • DATABASE_AUTHデータベースの認証のために、有効なデータベース ユーザ名とパスワードを指定する必要があります。これがデフォルトの認証方法です。 DBMS がデータベース認証を許可する設定が行われていない場合、認証は失敗します。
Boolean
database_admin
(オプション)

データベース認証を使用する場合は、データベース管理者ユーザを指定する必要があります。Oracle の場合、データベース管理者は sys です。Postgres の場合、postgres スーパーユーザです。SQL Server の場合、sysadmin 固定サーバ ロールのメンバーです。

String
database_admin_password
(オプション)

データベース管理者のパスワードを入力します。データベース認証を使用する場合は、データベース管理者ユーザのパスワードを指定する必要があります。

Encrypted String
sde_schema
(オプション)

このパラメータは SQL Server の場合のみ該当し、ジオデータベースがデータベースの sde という名前のユーザのスキーマに作成されるか、または dbo スキーマに作成されるかを指定します。dbo スキーマのジオデータベースを作成する場合、SQL Server のインスタンスの dbo であるユーザで接続する必要があります。したがって、オペレーティング システム認証を使用する場合は、使用するログインが SQL Server インスタンスの dbo である必要があります。

  • SDE_SCHEMAジオデータベース リポジトリは sde というユーザに所有され、そのスキーマに格納されます。これがデフォルトです。
  • DBO_SCHEMAジオデータベース リポジトリはデータベースの dbo スキーマに格納されます。
Boolean
gdb_admin_name
(オプション)

PostgreSQL を使用する場合は、この値は sde である必要があります。sde ログイン ロールが存在しない場合、このツールはロールを作成し、それにスーパーユーザ権限を付与します。また、データベース内に sde スキーマも作成します。sde ログイン ロールが存在する場合、このロールにスーパーユーザ権限が付与されていない場合は付与します。

Oracle を使用する場合は、デフォルトの値は sde です。しかし、ユーザ スキーマのジオデータベースをマスタ sde ジオデータベースの中に作成する場合には、ジオデータベースを所有するユーザの名前を指定します。このユーザが DBMS 内に存在しない場合は、[エンタープライズ ジオデータベースの作成(Create Enterprise Geodatabase)] ツールによって作成され、ジオデータベースの作成およびアップグレードとユーザ接続の切断に必要な権限が付与されます。このユーザが存在する場合は、ツールによって必要な権限が付与されます。

SQL Server を使用し sde スキーマのジオデータベースを指定した場合、この値は sde である必要があります。ツールは、sde ログイン、データベース ユーザおよびスキーマを作成し、ジオデータベースの作成および SQL サーバ インスタンスへの接続の切断のための権限を付与します。dbo スキーマを指定した場合、このパラメータに値を指定しないでください。

String
gdb_admin_password
(オプション)

ジオデータベース管理者ユーザのパスワードを指定します。ジオデータベース管理者ユーザがすでに DBMS に存在する場合、入力するパスワードは既存のパスワードと一致する必要があります。ジオデータベース管理者ユーザがまだ存在していない場合、新規ユーザのための有効なデータベース パスワードを入力します。パスワードは、DBMS が設定するパスワード ポリシーを満たしている必要があります。

パスワードは、ジオプロセシングで暗号化された文字列です。

Encrypted String
tablespace_name
(オプション)

このパラメータは DBMS タイプが Oracle および PostgreSQL である場合に有効です。Oracle の場合は、次のいずれかを実行します。

  • 既存の表領域の名前を指定します。これは sde ユーザのデフォルトの表領域として使用されます。
  • 有効な名前を入力すると、400 MB の表領域が Oracle のデフォルトの格納場所に作成され、sde ユーザのデフォルトの表領域として設定されます。
  • パラメータを空白のままにすると、SDE_TBS という表領域(400 MB)が作成され、sde ユーザのデフォルトの表領域として設定されます。

PostgreSQL の場合、既存の表領域の名前を指定してデータベースのデフォルトの表領域として使用するか、このパラメータを空白にしておきます。このツールは PostgreSQL に表領域を作成しません。PostgreSQL では、このパラメータに値を設定しない場合、データベースは pg_default 表領域に作成されます。

String
authorization_file

ArcGIS for Server Enterprise を認証したときに作成されたキーコード ファイルのパスとファイル名を指定します。このファイルは Windows では \\Program Files\ESRI\License<release#>\sysgen フォルダに、Linux では /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen ディレクトリにあります。まだ行っていない場合には、ArcGIS for Server を認証して、このファイルを作成します。

File

コードのサンプル

CreateGeodatabase(ジオデータベースの作成)の例 1

次のスクリプトは Oracle データベースにジオデータベースを作成します。sde ユーザを作成し、sde ユーザに対してデフォルトの表領域である sdetbs を作成します。キーコード ファイルは、リモート Linux サーバ上にあります。

#Import arcpy module
import arcpy

arcpy.CreateEnterpriseGeodatabase("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")
CreateGeodatabase(ジオデータベースの作成)の例 2

このスクリプトはSQL Server のインスタンス(tor\ssinstance)に接続し、sp_data という名前のデータベースを作成し、その中に sde スキーマのジオデータベースを作成します。オペレーティング システム認証を使用して接続します。キーコード ファイルは、リモート Windows サーバ上にあります。

#Import arcpy module
import arcpy

arcpy.CreateEnterpriseGeodatabase("SQLSERVER", "tor\ssinstance1", "sp_data", "OPERATING_SYSTEM_AUTH", "", "", "SDE_SCHEMA", "sde", "sde", "", "//myserver/Program Files/ESRI/License10.1/sysgen/keycodes")
CreateGeodatabase(ジオデータベースの作成)の例 3

このスクリプトは feldspar という名前のサーバ上の PostgreSQL データベース クラスタに接続します。既存の表領域 gdbspace に sde ユーザとデータベース pggdb が作成されます。キーコード ファイルは、ローカル Linux サーバ上にあります。

#Import arcpy module
import arcpy

arcpy.CreateEnterpriseGeodatabase("POSTGRESQL", "feldspar", "pggdb", "DATABASE_AUTH", "postgres", "averturis", "", "sde", "nomira", "gdbspace", "/arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License10.1/sysgen/keycodes")
CreateGeodatabase(ジオデータベースの作成)のスタンドアロン スクリプト

次のスタンドアロン Python スクリプトにより、オプションを使用して各サイトに固有の情報を提供できます。

"""
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 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 ("--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)

環境

このツールはジオプロセシング環境を使用していません

関連トピック

ライセンス情報

ArcGIS for Desktop Basic: ×
ArcGIS for Desktop Standard: ○
ArcGIS for Desktop Advanced: ○
9/14/2013