SDE For PostgreSQL資料庫改名方法
阿新 • • 發佈:2019-01-31
從ArcGIS9.3,SDE開始支援PostgreSQL,經過這麼多年的發展,SDE已經到了10.5版本了,從9.3到10.5,從功能,效能方面都發生了很多變化,但是不論是用老版本的sdesetup命令還是新版本的Create Enterprise Geodabase工具建立的Geodatabase都將資料庫的名字寫到系統表中了,因此以後如果資料庫要遷移,目標資料庫的名字是不能變更的,在實際的生產過程中會產生諸多不便,如果直接在資料庫層面講資料庫名字修改掉,會導致ArcGIS整個前端工具以及開發介面都無法使用。
但是可以通過修改系統表的方法將資料庫名字修改成別的名字,測試過程如下:
測試環境:
ArcSDE 10.5
PostgreSQL:9.4.10
資料庫名稱:SDE1
目標資料庫名稱:SDE
測試過程如下:
直接在資料庫層面將資料庫名稱修改成SDE。
postgres=# alter database sde1 rename to sde;
ALTER DATABASE
使用桌面進行連線報如下錯誤:
說明直接從資料庫上改名是行不通的。
繼續:
修改GDB_ITEMS表中的與資料庫名繫結的相關資訊
sde=# update sde.gdb_items set name='sde.sde.image',physicalname='SDE.SDE.IMAGE'
where objectid=4;
UPDATE 1
sde=# update sde.gdb_items set name='sde.sde.testpoint',physicalname='SDE.SDE.TE
STPOINT' where objectid=5;
UPDATE 1
sde=# update sde.gdb_items set name='sde.sde.subdltb',physicalname='SDE.SDE.SUBD
LTB' where objectid=6;
UPDATE 1
修改sde.sde_column_registry
sde=# update sde.sde_column_registry set database_name='sde';
ERROR: insert or update on table "sde_column_registry" violates foreign key con
straint "colregistry_fk"
描述: Key (table_name, schema, database_name)=(gdb_tables_last_modified, sde, s
de) is not present in table "sde_table_registry".
sde=# update sde.sde_table_registry set database_name='sde';
UPDATE 13
sde=# update sde.sde_column_registry set database_name='sde';
UPDATE 125
修改sde.sde_geometry_columns中的相關記錄
sde=# update sde.sde_geometry_columns set f_table_catalog='sde';
UPDATE 4
修改sde.sde_raster_columns相關資訊
sde=# update sde.sde_raster_columns set database_name='sde';
UPDATE 0
修改sde.sde_layers 中的相關資訊
sde=# update sde.sde_layers set database_name='sde';
UPDATE 4
修改完後,使用桌面成功連線。