直接來先看報錯的代碼:
這是很普通的連接配接Sql Server SDE的代碼操作,
<code>/// <summary></code>
<code>/// 擷取工作空間</code>
<code>public</code> <code>static</code> <code>IWorkspace GetWorkspace(IPropertySet pPropertySet)</code>
<code>{</code>
<code> </code><code>if</code> <code>(pPropertySet == </code><code>null</code><code>) {</code>
<code> </code><code>return</code> <code>null</code><code>;</code>
<code> </code><code>}</code>
<code> </code><code>// 建立 SDE 工作空間工廠,并打開工作空間 </code>
<code> </code><code>//Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory"); </code>
<code> </code><code>//var workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType); </code>
<code> </code><code>IWorkspaceFactory workspaceFactory = </code><code>new</code> <code>SdeWorkspaceFactoryClass();</code>
<code> </code><code>IWorkspace workspace = workspaceFactory.Open(pPropertySet, 0);</code>
<code> </code><code>return</code> <code>workspace;</code>
<code>}</code>
<code>/// 轉換成屬性設定</code>
<code>/// </summary></code>
<code>public</code> <code>static</code> <code>IPropertySet GePropertySet()</code>
<code> </code><code>IPropertySet pPropertySet = </code><code>new</code> <code>PropertySetClass();</code>
<code> </code><code>pPropertySet.SetProperty(</code><code>"SERVER"</code><code>, </code><code>"伺服器IP"</code><code>);</code>
<code> </code><code>pPropertySet.SetProperty(</code><code>"INSTANCE"</code><code>, </code><code>string</code><code>.Format(</code><code>"sde:SQLServer:{0}"</code><code>, </code><code>"伺服器IP"</code><code>));</code>
<code> </code><code>pPropertySet.SetProperty(</code><code>"DATABASE"</code><code>, </code><code>"資料庫名稱"</code><code>);</code>
<code> </code><code>pPropertySet.SetProperty(</code><code>"USER"</code><code>, </code><code>"sa"</code><code>);</code>
<code> </code><code>pPropertySet.SetProperty(</code><code>"PASSWORD"</code><code>, </code><code>"密碼"</code><code>);</code>
<code> </code><code>//pPropertySet.SetProperty("VERSION", "SDE.DEFAULT");</code>
<code> </code><code>pPropertySet.SetProperty(</code><code>"AUTHENTICATION_MODE"</code><code>, </code><code>"DBMS"</code><code>);</code>
<code> </code><code>return</code> <code>pPropertySet;</code>
經測試SDE連接配接參數正常,可在Open方法時,報錯"The Product License has not been initialized"(産品許可未初始化),程式是用代碼初始化許可的,運作綁定Desktop,産品許可類别是Advanced(進階版)
在相同的環境下,另外一套程式又可以,比較兩者的不同,似乎與MapControl控件存在某種關聯,經反複測試,得出以下結果:使用AO的sample作對比,隻要是先拖放MapControl控件,代碼就不會報許可問題(先拖放許可、或不拖MapControl都不行)。
暫時是解決了這個問題,我們姑且認為是10.4的bug,雖然沒有使用MapControl,但也拖放了這個控件(隐藏)。
我一直在想,既然它都能報這個錯,肯定不是什麼bug,而不是我們不知道錯在哪裡,經過一番測試,最終于不是通過許可方式解決它了。即在代碼初始化許可是除了添加Advanced許可,還添加了ArcServer許可。

<a href="http://gis.stackexchange.com/questions/2090/product-license-not-initialized-error-when-trying-to-open-an-sde-connection-in-a">http://gis.stackexchange.com/questions/2090/product-license-not-initialized-error-when-trying-to-open-an-sde-connection-in-a</a>
<a href="http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html">http://resources.arcgis.com/en/help/arcobjects-net/componenthelp/index.html#/LicenseInitializer/004800000005000000/</a>
本文轉自我也是個傻瓜51CTO部落格,原文連結:http://www.cnblogs.com/liweis/p/6666563.html ,如需轉載請自行聯系原作者