in

Darkthread

黑暗執行緒
All Tags » SQL 2005 (RSS)

Browse by Tags

  • 對SQL XML節點進行JOIN查詢

    今天遇到的隨堂測驗,考題如下: SQL Server有一資料表,其中Records欄為XML型別,其中包含多筆記錄,目標要將記錄展開成多筆查詢結果: .xmljoin-tab td { padding: 3px; } 001 Jeffrey 2014-01-01 9999 001 Jeffrey 2014-04-01 32767 002 Darkthread 2014-06-10 65535 要實現以上需求,關鍵在於兩項SQL功能: SQL XML nodes() 將XML型別轉成關聯式資料 CROSS APPLY 以結果列的特定欄位當成參數傳給函式得到資料表後與原結果列進行JOIN 二者結合成以下語法...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 06-10-2014
  • 【茶包射手日記】只涉及單一資料表的Deadlock

    在我原本狹隘的SQL知識裡,Deadlock發生情境需要兩個Process A與B跟兩個Table X與Y搭配演出: A鎖定住X想更新Y,B鎖定Y等著要更新X,產生無解的僵持,再由SQL二者擇一選為犠牲者,令其失敗來成立另一個Process。 直到最近處理一起Deadlock案例,才又長了見識。一個處理流水序號的Stored Procedure,讀取與更新對象只限同一Table,並不構成井底之蛙心中的Deadlock成立要件: 兩個鎖定對象、相反的讀取/更新順序,但Deadlock卻硬生生地發生了! 試著用以下方式模擬重現問題。以下的SQL指令,會在一個Transaction中先讀取LockLab的特定計數欄位...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 12-20-2012
  • 筆記-在SQL查詢中計算所佔百分比

    最近遇到的小需求,要計算資料表中某一數字欄位所佔百分比,例如: ItemId GroupId CostAmt ------ ------- -------- X1000 A 50 X1001 A 250 X1002 A 200 X1003 B 200 X1004 B 300 目標是要由以上資料算出X1000佔全部成本5%,X1001佔25%... 等百分比資訊。另外則還要再進一步分組,算出各ItemId佔該組總成本的百分比,例如: X1000佔A群組成本總和的10%,X1001佔50%,X1002佔40%、而X1003佔B群組的40%,X1004佔60%。 發現Oracle有個好用的函數 ratio_to_report...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 02-13-2012
  • 【茶包射手日記】SqlDataReader讀取FOR XML結果發生字元截斷

    一段使用很久的程式今天忽然出錯,追查原因,是一段古早寫的 FOR XML 查詢出了問題。 程式用SqlCommand執行"SELECT ... FROM ... FOR XML RAW('Boo’)”,最近因資料異動,結果傳回超長的字串,透過SqlDataReader讀取時,只得到最前端的2,033個字元,XML內容被不正常截斷。 微軟有一篇KB310378 The XML data row is truncated at 2,033 characters when you use the SqlDataReader object 描述了這個問題,並建議 改用ExecuteXmlReader...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 06-10-2011
  • SSMS Intellisense強化工具-dbForge SQL Complete

    在查SSMS的Intellisense 為何失效 時,無意看到demo的 介紹文 ,發現好物一枚— dbForge SQL Complete ! 好東西的推薦文永遠不嫌多,故特別PO文一篇介紹給讀者朋友們周知。 dbForge的構想與SSMS 2008相同,就是在輸入T-SQL時給予提示及自動完成,但dbForge SQL Complete支援的項目更多範圍更廣,整理幾點我認為值得一提的特色: (產品分為免費的SQL Complete Express及付費版SQL Complete Standard,有些功能標準版才有或較完整) SSMS 2008的Intellisense只適用於SQL 2008...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 06-03-2011
  • CODE-批次清除SQL資料庫的孤兒使用者

    要快速把資料庫掛上另一台SQL Server,我最常用的作法是複製mdf檔案過去,再直接Attach上去。不過,後續在新SQL上建立與原SQL相同帳號並設定權限的過程,常會遇到以下錯誤訊息: Microsoft SQL-DMO (ODBC SQLState: 42000) 錯誤 15023: 使用者或角色 '%s' 在目前的資料庫中已經存在。 Microsoft SQL-DMO (ODBC SQLState: 42000) Error 15023: User or role '%s' already exists in the current database....
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 03-17-2010
  • 【茶包射手日記】不限條件選項之SQL組裝與資料庫OR運算特性驗證

    在設計查詢介面時,下拉式選單是很常見的條件選取方式,而往往我們都會再加上一個"不限條件"選項,允許使用者不限制條件,列出所有項頁。舉例來說: 在設定查詢地區的下拉選單(例如: ddlArea),除了列出基隆市、台北市、台北縣、桃園縣...等各縣市Option外,常會再多一個"所有地區"選項,將Option Value設定='*',選取時表示不限定地區。在Server端,便要將這些篩選條件轉為SQL指令,如何將'*'視為不限地區? 我過去都用條件式動態組裝: if (ddlArea.Text != "*"...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 03-01-2010
  • CODE-在SQL Server XQuery中使用欄位或變數值當條件

    今天處理到一個需求,要在SQL 2005中用Table1 JOIN Table2,Table2中有個XML欄位,裡面有多筆資料,JOIN時要用Table1的某個欄位當條件在XML中挑出特定XmlNode。 聽起來很模糊對吧? 我用來實例來比喻,假設有個Player資料表跟Team資料表,Team資料表中有個MemberListXml欄位,其中有該球隊成員的相關資料。我今天要用Player資料表去JOIN Team資料表,先找出Player所屬球隊,再從該球隊MemberListXml中用XPath語法調出該名球員的資料。 XQuery 允許我們在SQL Server中使用熟悉的XPath,由於PlayerNo是變數...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 01-08-2010
  • 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的話,記得要加上 BEGIN TRAN / COMMIT TRAN 及 SET XACT_ABORT...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 11-05-2009
  • 取代DTCPing的新工具-DTCTester

    今天要設定Windows 2008防火牆使用SQL分散式交易,查資料時 發現了 檢測MSDTC連線的新工具-- DTCTester 。 簡單來說,它是用以取代DTCPing的改良版。主要優點是只需在Client執行,不像DTCPing得在Client,Server都跑互連,而且由於它會真的連線SQL Server進行一些讀寫測試,相較於DTCPing只檢查網路傳輸層,更能正確反應SQL連線的真實狀態。換句話說,過去DTCPing成功但SQL分散交易不通的"偽陽性"失真情況可望改善。 使用時要先在ODBC設定DSN(注意: x64 OS要記得 設定32bit的ODBC ),然後傳入DSN名稱...
    公佈在 黑暗執行緒 (Weblog)Jeffrey 發表於 10-14-2009
第1頁,共6頁 (58個項目) 1 2 3 4 5 下一頁 > ... 最後一頁 »
Powered by Community Server (Non-Commercial Edition), by Telligent Systems