程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle教程 >> ArcSDE 數據遷移 Exception from HRESULT: 0x80041538問題及解決方案,arcsde0x80041538

ArcSDE 數據遷移 Exception from HRESULT: 0x80041538問題及解決方案,arcsde0x80041538

編輯:Oracle教程

ArcSDE 數據遷移 Exception from HRESULT: 0x80041538問題及解決方案,arcsde0x80041538


一、問題描述

  1、采用gdb模板文件,在ArcSDE(數據服務器)中批量創建數據庫表(數據遷移)時,用到接口ESRI.ArcGIS.Geodatabase.IGeoDBDataTransfer的方法Transfer時,報錯,錯誤為:Exception from HRESULT: 0x80041538;

  2、在自己電腦上試驗沒問題,數據服務器上會有該問題;

  3、由於GIS相關問題,相關幫助手冊及網上搜了一會,發現幾乎沒這個問題的相關資料。

二、解決方案

  1、只能從本機環境和數據服務器環境對比上著手,本機環境:Win7 旗艦中文版,Oracle 11g中文版;數據服務器環境:WinServer 2008 R2標准版(別人裝的,貌似是英文版的,後來裝了中文補丁包,未修改其他設置,輸入中文漢字總感覺顯示怪怪的),Oracle 11g英文版;

  2、懷疑是編碼的問題,便拿ArcCatalog在數據服務器上創建名稱為中文的表時,直接報錯ORA-00911Invalid Character。於是,便可以斷定是字符編碼的問題。從兩方面著手:

  A、操作系統問題

  windows的問題,在區域和語言設置,把非unicode編碼設置為簡體中文(設置完成後,重啟電腦即可,再輸入中文漢字就不覺得怪了)。

  

  B、Oracle數據庫問題

  (1)首先查看Oracle的編碼,兩種方式可以查看(注冊表或者sqlplus查詢),這兩種方式均是借鑒轉載別人寫的內容

  注冊表查看:

  32位在:HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432NODE\ORACLE\HOMExx\NLS_LANG
  (這裡是32位的應用程序在64位windows系統中,注冊表位置在"WOW6432NODE"下。)
  64位在:HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\NLS_LANG
  (這裡是64位的應用程序在64位windows系統中,注冊表位置直接在"SOFTWARE"下。)

  Sqlplus查詢:

      數據庫服務器字符集select * from nls_database_parameters,其來源於props$,是表示數據庫的字符集。
  客戶端字符集環境select * from nls_instance_parameters,其來源於v$parameter,
  會話字符集環境select * from nls_session_parameters,其來源於v$nls_parameters,表示會話自己的設置,可能是會話的環境變量或者是alter session完成,如果會話沒有特殊的設置,將與nls_instance_parameters一致。

  以上兩種方式,可得知數據服務器上的Oracle編碼為:WE8MSWIN1252(不支持中文)

  

  (2)既然知道了編碼WE8MSWIN1252的問題,下面就好解決了,可參考http://blog.itpub.net/22871478/viewspace-1116638/,為了大家看的方法,我把原文轉載過來了,如下:

  修改字符集為ZHS16GBK   SQL> shutdown immediate;   Database closed.   Database dismounted.   ORACLE instance shut down.   SQL> startup mount   ORACLE instance started.       Total System Global Area  523108352 bytes   Fixed Size                  1337632 bytes   Variable Size             356517600 bytes   Database Buffers          159383552 bytes   Redo Buffers                5869568 bytes   Database mounted.   SQL> alter session set sql_trace=true;     Session altered.     SQL> alter system enable restricted session;     System altered.     SQL> alter system set job_queue_processes=0;     System altered.     SQL> alter system set aq_tm_processes=0;     System altered.     SQL> alter database open;     Database altered.     SQL> alter database character set ZHS16GBK;   alter database character set ZHS16GBK   *   ERROR at line 1:   ORA-12712: new character set must be a superset of old character set       SQL> alter database character set internal_use ZHS16GBK;     Database altered.     紅色部分的錯誤不影響   到此修改成功,重啟服務,支持中文。     3、問題得以解決。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved