Standard または Advancedのライセンスで利用可能。
Microsoft SQL Server でのジオデータベースの設定方法は、使用している環境によって異なります。自分の組織に適用されるシナリオの手順に従ってください。
SQL Server およびジオデータベースの管理者である場合
データベース管理者とジオデータベース管理者の両方のロールを実行するため、両方のログインのパスワードを知っている場合、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールまたは Python スクリプトを使用して、SQL Server にジオデータベースを作成できます。
[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを使用すると、データベース オブジェクトが作成され、必要な権限が付与されるため、ジオデータベースの設定が簡単になります。これを実行する場合、特定のデフォルト設定を使用します。以下では、[エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールの機能と使用する設定について説明します。
- データベース ファイル (MDF および LDF) を、サーバー上の SQL Server のデフォルトの場所に作成します。
- データベース ファイルのサイズは、SQL Server モデル データベースに定義した値と、MDF ファイルの場合は 500 MB、LDF ファイルの場合は 125 MB との、いずれか大きい方の値になります。
- sde という名前のスキーマにジオデータベースを作成した場合、ツールは、SQL Server 認証ログイン sde を SQL Server インスタンスに作成し、sde ユーザーをデータベースに作成して sde ログインにマップし、sde スキーマをデータベースに作成し、ジオデータベースを作成する権限および SQL Server インスタンスへの接続を終了する権限を sde ユーザーに付与します。
- ジオデータベースを作成します。
ツールまたはスクリプトを実行してジオデータベースを作成する前に、SQL Server を設定する必要があります。
SQL Server の設定
ジオデータベースを作成する前に、SQL Server をインストールしてインスタンスを構成する必要があります。インスタンスの構成方法は、各組織に固有の要件に応じて変わります。ただし、SQL Server インスタンスでは大文字と小文字を区別しない照合順序を使用する必要があることに注意してください。
ジオデータベースを設定する前に、使用するデータベース管理システム、ArcGIS、およびハードウェアの組み合わせがサポートされていることを、ArcGIS のシステム要件から確認してください。SQL Server のインストール後、リモート接続を許可するように SQL Server インスタンスを構成する必要があります。デフォルトでは、リモート接続は無効化されています。
SQL Server のインストールと構成の詳細については、Microsoft のドキュメントをご参照ください。
SQL Server をインストールおよび構成した後に、ArcGIS クライアントと SQL Server クライアントをインストールします。
ArcGIS クライアントの構成
ArcGIS for Desktop(Standard または Advanced)、ArcGIS Engine Runtime と Geodatabase Update エクステンション、または ArcGIS for Server(Standard または Advanced) から Python スクリプトを実行して、ジオデータベースを作成できます。スクリプトの代わりに [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ジオプロセシング ツールを実行する場合は、ArcGIS for Desktop を使用します。
ほとんどの場合、ArcGIS クライアントは、SQL Server とは別のコンピューター上にインストールされます。そのため、SQL Server データベースに接続するには、サポートされている SQL Server Native Client を ArcGIS クライアント コンピューターにインストールする必要があります。使用しているバージョンの SQL Server に接続するためにどのバージョンの SQL Server Native Client をインストールすべきかを判断するには、Microsoft のドキュメントをご参照ください。
SQL Server Native Client は My Esri または Microsoft Download Center からダウンロードできます。Microsoft の指示に従って、SQL Server Native Client をクライアント コンピューターにインストールしてください。
- ジオデータベースの作成に使用する ArcGIS クライアントをインストールします。
ソフトウェア インストール ガイドに記載されている手順に従います。
- SQL Server クライアントを ArcGIS クライアント コンピューターにインストールします。
SQL Server Native Client を 64 ビット オペレーティング システムにインストールする場合は、64 ビット SQL Server Native Client の実行可能ファイルを使用します。この実行可能ファイルは、32 ビットと 64 ビット両方のクライアントをインストールし、32 ビットと 64 ビット両方のアプリケーションの実行を可能にします。32 ビット SQL Server Native Client を 64 ビット オペレーティング システムで実行した場合は、正常に動作しません。
これで、ジオデータベースを作成できるようになりました。
ジオデータベースの作成
ArcGIS for Desktop から [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを実行するか、ArcGIS for Desktop、ArcGIS for Server、または ArcGIS Engine クライアントから Python スクリプトを実行して、データベースとジオデータベースの両方を作成できます。
エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)ツールの実行
ArcGIS for Desktop にアクセスできる場合、ジオプロセシング ツールを実行してジオデータベースを作成できます。
- ArcMap または ArcCatalog を起動します。
- [エンタープライズ ジオデータベースの作成 (Create Enterprise Geodatabase)] ツールを開きます。
このツールは、[データ管理] ツールボックスの [ジオデータベース管理] ツールセットで検索または選択できます。
- [データベース プラットフォーム] ドロップダウン リストで [SQL Server] を選択します。
- [サービス] テキスト ボックスに接続先の SQL Server インスタンスの名前を入力します。
- [データベース] テキスト ボックスに、ジオデータベースを格納するデータベースの名前を入力します。
SQL Server インスタンス内にその名前のデータベースがまだ存在しない場合は、作成されます。すでに存在する場合、指定したデータベースを使用してジオデータベースが格納されます。
-
SQL Server にシステム管理者として接続します。これには、SQL Server の sysadmin 固定サーバー ロールのメンバーであるオペレーティング システム認証のログインを使用するか、sysadmin ユーザーのデータベース ユーザー名およびパスワードを入力します。
- sysadmin オペレーティング システム認証ログインでログインするには、[オペレーティング システム認証] をオンにします。このオプションを使用する場合、正しいログインを使用して Windows にログインする必要があります。
- sysadmin としてログインするには、[データベース管理者] テキスト ボックスに sysadmin のユーザー名、[データベース管理者パスワード] テキスト ボックスにそのパスワードを入力します。
- ジオデータベースを格納するスキーマを選択します。
- sde というユーザーをジオデータベース管理者とし、ジオデータベースを sde ユーザーのスキーマに格納する場合は、[SDE 所有スキーマ] をオンにします。
- dbo ユーザーをジオデータベース管理者として、ジオデータベースを dbo スキーマに格納する場合は、[SDE 所有スキーマ] をオフにします。
sde スキーマまたは dbo スキーマへのジオデータベースの格納の詳細については、「SQL Server 内でのジオデータベース所有者の比較」をご参照ください。
- [ジオデータベース管理者パスワード] テキスト ボックスに、ジオデータベース管理者のパスワードを入力します。
指定したジオデータベース管理者がデータベース内にすでに存在する場合、既存のユーザーのパスワードを正しく入力してください。このツールでは、パスワードは変更されません。
- [認証ファイル] を指定するには、ArcGIS for Server Enterprise を認証したときに作成されたキーコード ファイルを参照して選択します。
このファイルは、Windows サーバー上の \\Program Files\ESRI\License<release#>\sysgen フォルダーに書き込まれます。まだ keycodes ファイルを作成していない場合には、ArcGIS for Server を認証して作成します。
- [OK] をクリックして、このツールを実行します。
SDE 所有スキーマを選択した場合、[ジオデータベース管理者] テキスト ボックスには sde が入力されています。その名前のユーザーがまだ存在しない場合は、ユーザーとそのスキーマが作成され、ジオデータベースを作成するのに必要な権限がユーザーに付与されます。
データベース認証を使用し、ジオデータベースの格納に dbo スキーマを使用している場合、[ジオデータベース管理者] テキスト ボックスに SQL Server インスタンスの dbo ユーザーの名前を入力します。
オペレーティング システム認証を使用してデータベースに接続している場合、dbo スキーマ ジオデータベースを作成するには、現在のログインが SQL Server の sysadmin 固定サーバー ロールに含まれている必要があります。
既存のデータベースを指定しなかった場合、SQL Server のデフォルトの場所にデータベースとログ ファイルが作成されます。データベース内にジオデータベースが作成されます。sde スキーマのジオデータベースを選択した場合、SQL Server 認証の sde ログイン、データベース ユーザーおよびスキーマが作成されます。
ジオデータベース作成のログ ファイル (GDBCreateGeodatabase<#>.log) が、ツールを実行したコンピューター上の %TEMP% 変数で指定された、ディレクトリに書き込まれます。ツールの実行時に問題が発生した場合は、このログ ファイルを確認して問題を解決します。
次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。
Python スクリプトの実行
ジオデータベースを作成するには、下に示したスクリプトをコピーおよび保存して、ArcGIS for Desktop(Standard または Advanced)、ArcGIS for Server(Standard または Advanced)、または ArcGIS Runtime (と Geodatabase Update エクステンション) から実行します。
-
ArcGIS クライアント コンピューター上でテキスト ファイルを作成し、そのファイルに以下のスクリプトをコピーします。
""" 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 """ # Import system modules import arcpy import os import optparse import 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: Do not specify 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 applies to geodatabases in SQL Server only. Type SDE_SCHEMA to create geodatabase in SDE schema or type DBO_SCHEMA to create geodatabase in DBO schema. Default=SDE_SCHEMA") parser.add_option ("-u", dest="Gdb_admin", type="string", default="", help="Geodatabase administrator user name; Must always be sde for PostgreSQL, sde-schema geodatabases in SQL Server, and master sde geodatabase in Oracle") 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; For PostgreSQL, type name of existing tablespace in which to store database. If no tablespace name specified, pg_default is used. For Oracle, type name of existing tablespace, or, if tablespace with specified name does not exist, it will be created and set as the default tablespace for the sde user. If no tablespace name is specified, SDE_TBS tablespace is created and set as sde user default. Tablespace name not supported for SQL Server.") parser.add_option ("-l", dest="Authorization_file", type="string", default="", help="Full path and name of authorization file; file created when ArcGIS for Server Enterprise authorized, and stored in \\Program Files\ESRI\License<release#>\sysgen on Windows or /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release#>/sysgen on Linux") # 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") 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)
- 拡張子 .py を付けてファイルを保存します。
- ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。
以下の例では、create_gdb.py ファイルを実行して、データベース entgdb を SQL Server インスタンス porthos\gisprod に作成しています。データベース認証を使用して sa ユーザーでツールが実行され、ジオデータベースが sde ユーザーのスキーマに作成されます。ジオデータベースを認証するために、ArcGIS Server のデフォルトの場所の keycodes ファイルが指定されます。
create_gdb.py --DBMS SQL_SERVER -i porthos\gisprod -D entgdb --auth DATABASE_AUTH -U sa -P N0pe3king! --schema SDE_SCHEMA -u sde -p Tgdbst@rtsh3r3 -l \\Program Files\ESRI\License10.3\sysgen\keycodes
次の例では、sysadmin 固定サーバー ロールのメンバーのログインを使用してクライアント コンピューターにログインし、同じスクリプトを実行してジオデータベースを dbo スキーマに作成しています。
create_gdb.py --DBMS SQL_SERVER -i porthos\gisprod -D entgdb --auth OPERATING_SYSTEM_AUTH --schema DBO_SCHEMA -l \\Program Files\ESRI\License10.3\sysgen\keycodes
これで、ジオデータベースが SQL Server に作成されました。
ジオデータベース作成のログ ファイル (GDBCreateGeodatabase<#>.log) が、コンピューター上の %TEMP% 変数で指定された、スクリプトを実行したディレクトリに書き込まれます。
次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。
SQL Server 管理者がデータベースを作成し、ジオデータベース管理者がジオデータベースを作成する場合
ジオデータベースを作成するユーザーがデータベース管理者のパスワードを使用できない場合、データベース管理者は、データベースを設定し、ジオデータベース管理者のログイン、ユーザー、およびスキーマを作成することができます。ジオデータベースが sde スキーマに格納される場合、データベース管理者は sde ログイン、sde ユーザー、および sde スキーマを作成します。ジオデータベースが dbo スキーマに格納される場合、データベース管理者は、ログインとユーザーを作成し、データベースの所有者になるユーザーを割り当てます。ジオデータベースの格納オプションの詳細については、「SQL Server 内でのジオデータベース所有者の比較」をご参照ください。
ジオデータベース管理者は、ジオデータベース管理者としてデータベースに接続し、[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールまたは Python スクリプトを使用してジオデータベースを作成できます。
[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールは、データベース接続ファイルを入力として受け取り、ジオデータベースのシステム テーブル、ビュー、関数、プロシージャを作成します。
SQL Server の設定
ジオデータベース管理者がジオデータベースを作成するには、まず、SQL Server 管理者が以下を実行する必要があります。
- SQL Server をインストールしてインスタンスを構成します。インスタンスの構成方法は、各組織に固有の要件に応じて変わります。ジオデータベースを設定する前に、使用するデータベース管理システム、ArcGIS、およびハードウェアの組み合わせがサポートされていることを、ArcGIS のシステム要件から確認してください。SQL Server のインストール後、リモート接続を許可するように SQL Server インスタンスを構成する必要があります。デフォルトでは、リモート接続は無効化されています。SQL Server のインストールと構成の詳細については、Microsoft のドキュメントをご参照ください。
- データベースを作成します。
- sde という名前のデータベース ユーザーまたはデータベース所有者になるデータベース ユーザーにマップするログインを追加または作成します。
- sde スキーマ ジオデータベースを使用する場合、sde という名前のスキーマをデータベースに作成します。このスキーマを、sde ユーザーのデフォルトのスキーマとして設定します。
- sde スキーマ ジオデータベースを使用する場合、sde ユーザーは、少なくとも CREATE FUNCTION、CREATE PROCEDURE、CREATE TABLE、および CREATE VIEW 権限を持つ必要があります。その他の権限については、「SQL Server の権限」をご参照ください。
ArcGIS クライアントの構成
ジオデータベース管理者は、ArcGIS for Desktop(Standard または Advanced)、ArcGIS Engine Runtime と Geodatabase Update エクステンション、または ArcGIS for Server(Standard または Advanced) から Python スクリプトを実行して、ジオデータベースを作成できます。スクリプトの代わりに [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ジオプロセシング ツールを実行する場合は、ArcGIS for Desktop を使用します。
ほとんどの場合、ArcGIS クライアントは、SQL Server とは別のコンピューター上にインストールされます。そのため、SQL Server データベースに接続するには、サポートされている SQL Server Native Client を ArcGIS クライアント コンピューターにインストールする必要があります。使用しているバージョンの SQL Server に接続するためにどのバージョンの SQL Server Native Client をインストールすべきかを判断するには、Microsoft のドキュメントをご参照ください。
SQL Server Native Client は My Esri または Microsoft Download Center からダウンロードできます。Microsoft の指示に従って、SQL Server Native Client をクライアント コンピューターにインストールしてください。
- ジオデータベースの作成に使用する ArcGIS クライアントをインストールします。
ソフトウェア インストール ガイドに記載されている手順に従います。
- SQL Server クライアントを ArcGIS クライアント コンピューターにインストールします。
SQL Server Native Client を 64 ビット オペレーティング システムにインストールする場合は、64 ビット SQL Server Native Client の実行可能ファイルを使用します。この実行可能ファイルは、32 ビットと 64 ビット両方のクライアントをインストールし、32 ビットと 64 ビット両方のアプリケーションの実行を可能にします。32 ビット SQL Server Native Client を 64 ビット オペレーティング システムで実行した場合は、正常に動作しません。
ArcGIS クライアントをデータベースに接続し、ジオデータベースを作成する準備が整いました。ジオデータを作成するには、次のセクションで説明するいずれかの方法を使用します。
ジオデータベースの作成
ジオデータベース管理者は、ArcGIS for Desktopから [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行するか、ArcGIS for Desktop、ArcGIS for Server、または ArcGIS Engine クライアントから Python スクリプトを実行して、既存のデータベースにジオデータベースを作成できます。
エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)ツールの実行
ArcGIS for Desktop から [エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールを実行し、ジオデータベースを既存の SQL Server データベースに作成できます。
- ArcMap または ArcCatalog を起動します。
-
ジオデータ管理者として、カタログ ツリーから SQL Server データベースに接続します。
[データベース コネクション] ダイアログ ボックスで、必ずユーザーのパスワードを保存してください。
- データベース接続を右クリックして、[ジオデータベースの有効化] をクリックします。
[エンタープライズ ジオデータベースの有効化 (Enable Enterprise Geodatabase)] ツールが開き、[入力データベース接続] フィールドに接続ファイルの名前と場所が入力されます。
- ArcGIS for Server を認証したときに作成された ArcGIS for Server の認証ファイルを選択し、それを [認証ファイル] テキスト ボックスに追加します。
ウィザードを使用して ArcGIS for Server を認証する際に、ソフトウェアがインストールされているサーバーに keycodes ファイルが書き込まれます。Linux ボックス上で ArcGIS for Server を認証した場合、この keycodes ファイルは /arcgis/server/framework/runtime/.wine/drive_c/Program Files/ESRI/License<release>/sysgen に作成されています。Windows サーバーで認証した場合、このファイルは Program Files\ESRI\License<release>\sysgen に作成されています。まだ keycodes ファイルを作成していない場合には、ArcGIS for Server を認証して作成します。
- [OK] をクリックして、このツールを実行します。
データベース内にジオデータベースが作成されます。
ジオデータベース作成のログ ファイル (GDBCreateGeodatabase<#>.log) が、ツールを実行したコンピューター上の %TEMP% 変数で指定された、ディレクトリに書き込まれます。ツールの実行時に問題が発生した場合は、このログ ファイルを確認して問題を解決します。
次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。
Python スクリプトの実行
Windows コンピューター上で、ArcGIS for Server、ArcGIS for Desktop、または ArcGIS Engine のインストールからスクリプトを実行してジオデータベースを作成する場合、下に示すスクリプトを使用できます。
以下の手順に従って Python スクリプトを実行し、ジオデータベースを既存の SQL Server データベースに作成します。
- ArcGIS クライアント コンピューター上でテキスト ファイルを作成し、そのファイルに以下のスクリプトをコピーします。
""" Name: enable_enterprise_gdb.py Description: Provide connection information to an enterprise database and enable enterprise geodatabase. Type enable_enterprise_gdb.py -h or enable_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', 'DB2','INFORMIX','DB2ZOS', ''], default="", help="Type of enterprise DBMS: SQLSERVER, ORACLE, POSTGRESQL, DB2, INFORMIX, or DB2ZOS.") parser.add_option ("-i", dest="Instance", type="string", default="", help="DBMS instance name") 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="User", type="string", default="", help="Geodatabase administrator user name") parser.add_option ("-p", dest="Password", type="string", default="", help="Geodatabase administrator password") parser.add_option ("-D", dest="Database", type="string", default="none", help="Database name: Not required for Oracle") 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 account_authentication = options.account_authentication.upper() username = options.User.lower() password = options.Password database = options.Database.lower() license = options.Authorization_file 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 == "SQLSERVER"): database_type = "SQL_SERVER" # Get the current product license product_license=arcpy.ProductInfo() if (license == ""): print " \n%s: error: %s\n" % (sys.argv[0], "Authorization file (-l) must be specified.") parser.print_help() sys.exit(3) # Checks required license level if product_license.upper() == "ARCVIEW" or product_license.upper() == 'ENGINE': print "\n" + product_license + " license found!" + " Enabling enterprise geodatabase functionality 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 enabling an enterprise geodatabase.") else: print "\n" + product_license + " license available! Continuing to enable..." arcpy.AddMessage("+++++++++") # Local variables instance_temp = instance.replace("\\","_") instance_temp = instance_temp.replace("/","_") instance_temp = instance_temp.replace(":","_") Conn_File_NameT = instance_temp + "_" + database + "_" + username 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) 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(out_folder_path=temp, out_name=Connection_File_Name, database_platform=database_type, instance=instance, database=database, account_authentication=account_authentication, username=username, password=password, 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") # Process: Enable geodatabase... try: print "Enabling Enterprise Geodatabase...\n" arcpy.EnableEnterpriseGeodatabase_management(input_database=Connection_File_Name_full_path, 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) if os.path.exists(Connection_File_Name_full_path): os.remove(Connection_File_Name_full_path) #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)
- 拡張子 .py を付けてファイルを保存します。
- ユーザーの環境に固有のオプションと情報を指定して、スクリプトを実行します。
以下の例では、enable_gdb.py ファイルを、インスタンス ssprod 上のデータベース spdata に対して実行しています。パスワード Tgdbst@rtsh3r3 を使用して sde ログインで接続が確立されます。ジオデータベースを認証するために、ArcGIS Server のデフォルトの場所の keycodes ファイルが指定されます。
enable_gdb.py --DBMS SQL_SERVER -i ssprod --auth DATABASE_AUTH -u sde -p Tgdbst@rtsh3r3 -D spdata -l \\Program Files\ESRI\License10.3\sysgen\keycodes
これで、ジオデータベースが SQL Server データベースに作成されました。
ジオデータベース作成のログ ファイル (GDBCreateGeodatabase<#>.log) が、コンピューター上の %TEMP% 変数で指定された、スクリプトを実行したディレクトリに書き込まれます。
次に、データをジオデータベースに読み込む権限のあるユーザーを作成できます。