Browse by Tags

【茶包射手日記】不限條件選項之SQL組裝與資料庫OR運算特性驗證
在設計查詢介面時,下拉式選單是很常見的條件選取方式,而往往我們都會再加上一個"不限條件"選項,允許使用者不限制條件,列出所有項頁。舉例來說: 在設定查詢地區的下拉選單(例如: ddlArea),除了列出基隆市、台北市、台北縣、桃園縣...等各縣市Option外,常會再多一個"所有地區"選項,將Option Value設定='*',選取時表示不限定地區。在Server端,便要將這些篩選條件轉為SQL指令,如何將'*'視為不限地區...
MEMO-Procedure Transaction: SQL Server vs Oracle
同事詢問關於Procedure內是否會自動包成Transaction的問題,我的認知是SQL要額外下SET XACT_ABORT ON,但Oracle則預設會自動包成Transaction。記憶有些模糊,所以索性做個實驗最準。 分別在SQL, Oracle寫了Procedure,先塞入兩筆資料,第三筆故意產生PK重覆錯誤,觀察資料庫是否有前兩筆資料來判別是否有Transaction保護。實驗證明,原先的認知沒錯,二者行為不同。 SQL Server Procedure要將操作包成Transaction的話...
取代DTCPing的新工具-DTCTester
今天要設定Windows 2008防火牆使用SQL分散式交易,查資料時 發現了 檢測MSDTC連線的新工具-- DTCTester 。 簡單來說,它是用以取代DTCPing的改良版。主要優點是只需在Client執行,不像DTCPing得在Client,Server都跑互連,而且由於它會真的連線SQL Server進行一些讀寫測試,相較於DTCPing只檢查網路傳輸層,更能正確反應SQL連線的真實狀態。換句話說,過去DTCPing成功但SQL分散交易不通的"偽陽性"失真情況可望改善...
小心駛得萬年船--SQL指令保險栓
手動對資料庫下指令是一件恐怖的事,稍一操作不慎,就有可能把整個系統給毁了。 理論上,吾人應該極力避免手工更動資料這等可恥行徑。只要系統考慮得夠周詳,預先料想到所有可能出現的詭異狀況,一一提供相關的介面,經過程式邏輯檢查後才對資料進行處置或修正,不可能出現需要手動改資料的狀況。這是一個好的系統應有的嚴謹度!! 好,官冕堂皇的屁話說完了,現在來聊聊怎麼做好這件"可恥的事"? (道德感強烈者或軟體工程基本教義派請略過本文) 當我們萬不得已,必須使用T-SQL指令直接對資料庫進行操作時...
SQL Server, 請幫我從1數到100
今天看到 保哥 一篇 關於LINQ to SQL分頁問題 的文章,裡面有一段範例是利用'User ' + cast(cast(rand() * 100 as int) as varchar(3))的技巧連續執行十次產生十筆測試用的資料。 這讓我想起之前在做 CSV字串分割成陣列UDF 時 意外學到 的技巧,可以借用鮮為人知的master.dbo.spt_values系統資料表,讓SQL產生一段連號數字,這樣就能一口氣塞入連號的"User 1”, "User 2...
KB-再探Windows Update後SSRS不能列印問題
【2008-10-30更新】依本文做法仍無法更新RSClientPrint.cab的朋友,請參考我的 第三帖藥方 。 自從貼出 安裝KB956391後SSRS不能列印問題 後,陸續又接獲同事及網友的回報,才慢慢釐清這個事件的始未... SSRS不能網頁列印的原因源於RSClient Print這顆元件被ActiveX KillBit封殺,而封殺的理由是基於安全考量,RSClientPrint Class存在一個 GDI+漏洞 ,讓駭客可以透過惡意的BMP發動溢位攻擊。換句話說, KB956391...
TIPS-SqlConnection的ConnectionString保密機制
在設計資料庫相關程式時,連線字串最好能以加密方式存在config檔案裡;再進一步,最好連解密字串的機制都封裝在特定的資料存取元件中,開發人員及呼叫端程式只需傳入SqlCommand或更高階的抽象化資料物件,就可以完成資料庫存取作業,不必也不能得知連線字串的相關細節。 只是依我自己的實務經驗,有時直接傳連線物件(SqlConnection)給呼叫端是較省事的做法(丟一個連線給你自己玩,別來煩我! 是有點不負責任,但元件開發者未必有時間陪著在每個案子中抱著各式不同的需求打滾),連線丟出去了,呼叫端來個SqlConnection...
KB-SQL 2000 BULK INSERT Error
今天在一台SQL 2000上做BULK INSERT,語法是 BULK INSERT PicLibrary FROM 'C:\Output\PicInfo.txt' WITH ( BATCHSIZE = 1000, FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n', TABLOCK ) 我之前在SQL 2005上做過 同樣的事 ,但這回在SQL 2000上卻一直爆出錯誤: 訊息 4866,層級 16,狀態 1...
BULK INSERT Performance
一直以為BULK INSERT就不會記Log,結果今天跌了一跤... 我下的語法如下(錯誤示範,小朋友不要學) TRUNCATE TABLE RESD BULK INSERT RESDE FROM 'C:\DataProc\Output\RESD.txt' WITH ( FIELDTERMINATOR = '\t', ROWTERMINATOR = '\n' ) RESD.txt約1.4G,結果BULK INSERT花了30分鐘還沒做完,Log檔就長到20G...
Two Database Tips
#別用浮點數算錢 Don't use float in currency calculation DECLARE @f1 FLOAT , @f2 FLOAT DECLARE @f3 FLOAT , @f4 FLOAT SET @f1=6481.45 SET @f2=6000 SET @f3=0.1 SET @f4=(@f1-@f2)*@f3 SELECT (6481.45-6000)*0.1 AS V1 SELECT @f4 AS V2 SELECT ROUND(@f4, 2) AS V3 SELECT...
TIPS-Calculating Percentage In SQL Query
有一個資料表,內有四筆資料,數量分別是2, 3, 5, 10,我希望用SQL查出如下包含百分比10%,15%, 25%, 50%的結果: ID AMT PERC ----- ------ ------- 1 2 10% 2 3 15% 3 5 25% 4 10 50% 同事出了這個考題給我,算是讓我學會 SUM() OVER (PARTITION BY ...)的用法。以上問題的解法如下: --FOR ORACLE SELECT ID, AMT, AMT * 100 / SUM (AMT) OVER...
KB-Deadlock Detection And Retrial Sample
最近在處理表單引擎的Deadlock問題,由於引擎核心以物件導向方式開發,很難為了資料庫的更新問題去挪動物件的呼叫順序。但還是努力做了調整,每天Deadlock的發生次數終於壓到個位數,但要100%避免看來是不可能的(至少以我的能力來說是如此)。既然逃不掉,就乖乖面對吧! 一般處理Deadlock的準則是Wait And Retrial,換句話說,程式邏輯本身並沒有任何錯誤,純粹是運氣不好,跟其他Process的資料庫更新作業強碰且被SQL Server挑中變成犠牲品,在絕大部份的情況下,在我們接到Exception的同時...
Posted 23 August 2007 01:57 PMJeffrey | with no comments
Filed under: , , ,
TOOL-UrlEncode Function For SQL Server (Support Unicode)
朋友想在SQL Server中進行UrlEncode,原本想用SQLCLR包 System.Web.HttpUtility.UrlEncode ,但似乎SQLCLR裡不能匯入System.Web[ 註 ],後來雖然找到了Peter DeBetta用T-SQL寫的 UrlEncode UDF ,但處理中文有問題。 一時技癢,就改寫出以下的UDF,最大的改良是可以將Unicode文字轉成%u nnnn 的格式。 有需要的朋友可以參考看看(SQL 2000也可以用)。 -- =============...
數大便不美
奈米(nanometer)科技最有趣的一點在於當物質的粒子小到一定程度時,物質的特性會迥異於原本巨觀尺度下的物理、化學及生物特性。以無人不愛的黃金為例,當它被製成金奈米粒子(nanoparticle)時,顏色不再是金黃色而呈紅色,說明了光學性質因尺度的不同而有所變化。又如石墨因質地柔軟而被用來製作鉛筆筆芯,但同樣由碳元素構成、結構相似的碳奈米管,強度竟然遠高於不銹鋼,又具有良好的彈性,因此成為顯微探針及微電極的絕佳材料。 from http://nano.nchc.org.tw/aboutnano...
KB-T-SQL找最大值方法的效能比較
今天跟同事討論用T-SQL查資料表中最大值的方法,一群人總共想出三種: SELECT TOP 1 + ORDER BY, SELECT MAX, 再來是用CURSOR的FETCH LAST。三種做法,哪一個最有效率呢? 初步想起來,用CURSOR是最笨重的,肯定最慢。剩下的兩種,MAX()是Aggregate Function,依據我過去寫SQLCLR自訂Aggregate Function的經驗,每一列的資料都要送入Funtion中比較,應該會輸給內建的ORDER BY吧? 找來一個有150萬筆資料的Table...
Posted 29 March 2007 06:04 PMJeffrey | with no comments
Filed under: , ,
更多文章 下一頁 »

搜尋

Go

<March 2010>
SunMonTueWedThuFriSat
28123456
78910111213
14151617181920
21222324252627
28293031123
45678910
 
RSS
【工商服務】
最新回應

Tags 分類檢視
關於作者

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

文章典藏
其他功能

這個部落格


BlogLook Score and Rank

Syndication