Browse by Tags

組件繫結重新導向功能的實地觀察--以ODP.NET為例
有個網站專案,原本使用ODP.NET 9.2,在主機安裝ODP.NET 10.2後,出現了"ORA-12154: TNS: 無法解析指定的連線ID"錯誤,訊息很單純,一定因為新增ODP.NET 10.2後還沒設定NETWORK\ADMIN\TNSNAMES.ORA檔案的緣故。 不過,等一下! 網站專案元件用的是ODP.NET 9.2並沒有重新編譯,為什麼會自動改用ODP.NET 10.2呢? 原來這是.NET的 組件繫結重新導向 功能,意指我們可以透過以下三種方式之一強迫特定組件改用指定版本...
Posted 31 March 2011 06:21 AMJeffrey | with no comments 11,014
Filed under: ,
為dotConnect資料類別產生器加入客製邏輯
雖然Oracle已經釋出 ODAC for Microsoft Entity Framework 11.2.0.2.30 ,但尚在Beta階段,加上平台侷限.NET 4.0,目前工作專案如需在Oracle上使用LINQ,還是以 devart的dotConnect for Oracle 為主。 最近在使用dotConnect for Oracle開發時,發現預設產生Model類別會自動抓取Oracle欄位的註解欄位,用 XML Documentation 加註在類別屬性上: /// <summary>...
Posted 20 March 2011 10:56 AMJeffrey | with no comments 7,080
Filed under: , ,
SQL與ORACLE處理IsolationLevel.Serializable的行為差異
接觸ORACLE之前,玩過好一陣子的SQL,對Serializable 隔離等級 的認知是: 在隔離範圍內,所有讀取資料的動作都會產生鎖定,將資料保護起來避免外界更動 雖然Serializable隔離等級的代價高昂,對效能殺傷力極大應盡量避免,但因其執行邏輯簡單不易出錯,還是會有其適用時機。 以下是在SQL上實現Serializable隔離的示範: 使用Visual Studio逐行偵錯功能,在兩次讀取間設定中斷點,中斷時用SSMS試圖更動同一筆資料,就可發現UPDATE指令會擋住,要等到.NET程式完成或放棄Transaction後才會繼續執行...
Posted 27 January 2011 02:30 PMJeffrey | with no comments 8,953
Filed under: , ,
讓OracleCommand.CommandText中N'...'正確被解讀
今天是值得紀念的一天!! 多年以來,我 一直以為 在非Unicode編碼ORACLE資料庫中正確塞入難字的唯一方法,只能透過OracleParameter... 手上有個應用,我寫的.NET程式要接收其他程式傳來的CommandText執行,而其中包含以N'...'方式新增難字內容的指令。無力改變這個協同運作方式,只能被逼著要解開這個謎團---到底要怎樣才能讓N'...'的難字正確送到ORACLE上執行呢? 不抱太大希望地在網路爬文,大概是多年來為了ORACLE Unicode問題煞費苦心孝感動天...
System.Data.OracleClient將走入歷史
印象中有看過微軟未來將不再建議使用System.Data.OracleClient,昨天無意翻到正式 宣告文 ,特別PO文整理一下。 主要考量是有很大比例的使用者,實務上用的都是夥伴廠商提供的ADO.NET Provider,一方面是配合Oracle改版的更新腳步較快,能較快用到資料庫的新功能,另一方面這些廠商都提供了不錯的軟體品質及客服支援。ADO.NET Team評估之後,認為即便繼續投注心力強化,也很難將使用者拉回ADO.NET OracleClient。(頗有"閃開! 讓專業的來"的感覺...
Posted 14 May 2010 09:49 AMJeffrey | 2 comment(s) 36,070
Filed under: ,
Oracle Distributed Transaction Error
寫了以下的程式做SQL與Oracle的分散式交易: using (System.Transactions.TransactionScope tx = new System.Transactions.TransactionScope()) { //... Update data on SQL Server ... using (OracleConnection cn = new OracleConnection(cnStr)) { cn.Open(); OracleCommand cmdOra =...
Posted 17 October 2009 04:36 AMJeffrey | with no comments 12,580
Filed under: , , ,
Oracle LINQ之路
自從學會LINQ to SQL後,我就愛死那種忘記SqlConnection、丟掉SqlCommand、抛下SqlParameter的簡潔,乾乾淨淨 幾行Code 就搞定查詢、新增、修改、刪除的感覺。 無奈在公司,就算先撇開專案團隊成員是否已具備LINQ技能的問題,面對Oracle林立的工作專案環境,抬出LINQ to SQL無疑是張飛打岳飛,只能乖乖回去用OracleCommand、OracleParameter行禮如儀。 不過,我還是沒有放棄在Oracle專案使用LINQ的念頭。 ADO.NET...
Posted 11 October 2009 10:23 AMJeffrey | 9 comment(s) 23,015
Filed under: , ,
OracleConnection Pooling及OracleDataReader.Close()
依過去的 經驗 ,Oracle資料庫重啟或連線中斷後,Connection Pool裡會存留一些無效連線,除了IISRESET或重啟程式外,似乎無法透過程式自行剔除Pool裡的連線。但我今天才發現,原來從.NET 2.0起,SqlConnection與OracleConnection早就新增了兩個Static Method可以用來解決類似問題: ClearPool 、 ClearAllPools 。 寫了以下範例,cnStrMonitor與cnStrTester用了是不同的Username,於是我就可以透過統計v...
Posted 12 August 2009 08:19 AMJeffrey | 7 comment(s) 20,374
Filed under: ,
MEMO-取回Oracle Procedure Ref Cursor
[MEMO系列是老人家備忘用途的貼文,可能沒什麼營養,大家請姑且看之或逕行忽略。] 好久沒跟ORACLE纏綿惹,這陣子都在跟SQL Server廝混。這幾天接手另一個連線ORACLE的專案,在呼叫ORACLE Procedure透過Ref Cursor傳回結果時,腦中已不太記得精確寫法,只記得Ref Cursor的值可以直接用來Fill DataTable或轉成OracleDataReader,胡亂湊出程式碼,系統卻一直傳回以下錯誤: ORA-06550: line 1, column 7:.PLS...
Posted 23 July 2009 01:27 PMJeffrey | with no comments 14,465
Filed under: , ,
【茶包射手專欄】OracleClient LEFT JOIN時出現ORA-01405
小熊子的 KB-當 ADO.NET 與 Oracle 問題集錦 裡有個Tip,使用System.Data.OracleClient會產生ORA-01405: fetched column value is NULL,改用Oracle.DataAccess.Client就正常。 對這個問題做了點深入的研究,原本會產生錯誤的程式很龐雜,我將程式碼簡化但仍保有可產生ORA-01405的地步。 using System; using System.IO; using System.Threading; using...
TIPS-用ADO.NET寫入BIG5罕用字到ORACLE VARCHAR
上回我們破解過" 用ADO.NET讀取ORACLE VARCHAR中的BIG5罕用字 ",今天又有人出了難題--如何將BIG5罕用字寫入ORACLE VARCHAR2欄位? 經實驗,單純用cmd.Parameters.Add("param", OracleType.VarChar).Value="含罕用字/造字的字串",則所有的罕字與造字在資料表中會變成問號。我猜與讀取時面對的問題完全相同,資料從網路接收到OracleClient解析完成的過程中...
OracleCommand.Parameters.AddWithValue
不知怎麼了,每次寫ORACLE存取程式都會在咒罵中度過"美好"時光,剛才花了半小時處理一個錯誤: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'MYSTOREDPROC' 程式碼差不多像以下這個樣子,要傳入十五個名稱又臭又長的參數給一個Procedure: OracleCommand cmd = new OracleCommand( "MyStoredProc"...
Posted 12 November 2008 03:30 PMJeffrey | 8 comment(s) 16,405
Filed under: ,
我的奮鬥-System.Data.OracleClient on Windows 2008 x64
自從家中與公司的機器分別改用Vista x64及Windows 2008 x64後,在享受爽快揮霍記憶體之餘,也一併開始體驗在新大陸拓荒的感覺。大部分的高階應用程式,多半可以x86虛擬環境執行,問題不大。但有不少涉及低階處理的程式選擇頓時劇減,例如: RamDisk因為Driver未具備簽章無法使用、能支援x64的免費防毒軟體屈指可數、之前提到重新Survey了 DVD燒錄程式 ... 這些軟體上的短缺咬一咬牙就撐過了,最讓我痛苦的是原本部門大家慣用的ODP.NET 9207完全不支援x64版本...
Unassigned Parameter in ODP.NET and System.Data.OracleClient
今天抓了一個小問題, 又是 因System.Data.OracleClient與ODP.NET行為不同所致: using (OracleConnection cn = new OracleConnection( "Data Source=MyOracle;User Id=myUser;Password=myPass;" )) { OracleCommand cmd = new OracleCommand( "SELECT * FROM UserTable WHERE...
Posted 19 May 2008 05:35 PMJeffrey | with no comments 6,019
Filed under: ,
.NET分散式交易程式開發FAQ
當系統存取的資料庫伺服器超過一台,或涉及異種資料庫平台間的資料整合,常常就會伴隨分散式交易(Distributed Transaction)的需求。這門進階的學問,在運用的實務上,瑣碎曲折的小細節還挺多的。 以下是我在RUN!PC發表過的文章,整理了使用.NET程式整合MSDTC做分散式交易的一些經驗分享,內容包含了: 常見的疑難雜症及排除方法、分散式交易狀況的偵測、SQL 2005的LTM與OleTx模式、不同做法的效能比較... 等等,在此提供大家參考。 文章下載 【其他相關文章】 KB-.NET...
更多文章 « 上一頁 - 下一頁 »

搜尋

Go

<March 2023>
SunMonTueWedThuFriSat
2627281234
567891011
12131415161718
19202122232425
2627282930311
2345678
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication