星期六, 7月 28, 2012

[SQL] 次序函數應用-資料分組

此論壇問題是要針對資料進行分組,分組模式有兩種
  1. 從 1 數到 3,不斷循環。
  2. 每 3 筆一個群組。
根據提問者提供資料,利用 ROW_NUMBER() 搭配除法(/)和模除(%)來進行處理
DECLARE @Temp TABLE ([Name] char(10))
INSERT INTO @Temp VALUES('A')
INSERT INTO @Temp VALUES('E')
INSERT INTO @Temp VALUES('C')
INSERT INTO @Temp VALUES('H')
INSERT INTO @Temp VALUES('G')
INSERT INTO @Temp VALUES('D')
INSERT INTO @Temp VALUES('B')
INSERT INTO @Temp VALUES('I')
INSERT INTO @Temp VALUES('J')
INSERT INTO @Temp VALUES('F')

SELECT 
  [Name] , 
  -- ROW_NUMBER() 產生的號碼排序
  ROW_NUMBER() OVER (ORDER BY [Name]) AS ROWNO ,
  -- 分組模式 1
  ((ROW_NUMBER() OVER (ORDER BY [Name]) - 1) % 3 + 1) AS Count3 ,
  -- 分組模式 2
  ((ROW_NUMBER() OVER (ORDER BY [Name]) - 1) / 3) + 1 AS Group3 
FROM @Temp
  • 邏輯說明
ROW_NUMBER() 跑出號碼排序後,利用模除(%)取餘數,可以達到分組模式 1;利用除法(/)取商數可以達到分組模式 2,因為 ROW_NUMBER() 回傳值的資料型態為 bigint,整數除整數一定會得到整數,EX:10 / 3 會得到 3,不會是 3.333333,另外分組模式 1 和 2 中,-1 和 +1 的數學邏輯處理,是為了讓數字呈現從 1 開始顯示,閱讀上更直覺。



星期五, 7月 27, 2012

[Win] 密碼複雜度

在 VPC 上建立一個 Windows Server 2008 R2 系統要來進行測試,建立帳號要打一堆密碼,嫌麻煩就把它關掉囉。

密碼複雜性原則是為了阻止暴力攻擊而設計,方法是盡可能地增加密碼數目。當強制執行密碼複雜性原則時,新的密碼必須符合下列指導方針:
  • 密碼不包含全部或部分的使用者帳戶名稱。帳戶名稱的一部分是定義為三個以上的連續英數字元,兩邊以空格 (例如空格鍵、Tab 鍵和 Return 鍵) 或下列任一字元分隔:逗號 (,)、句號 (.)、連字號 (-)、底線 (_) 或數字符號 (#) 分隔。
  • 密碼長度至少為八個字元。
  • 密碼包含下列四種字元的其中三種:
    1. 拉丁文大寫字母 (A 到 Z)。
    2. 拉丁文小寫字母 (a 到 z)。
    3. 以 10 危基底的數字 (0 到 9)。
    4. 非英數字元,例如:驚嘆號 (!)、錢幣符號 ($)、數字符號 (#) 或百分比符號 (%)。
密碼長度最多可以包含 128 個字元,您應該盡可能使用長且複雜的密碼。

星期五, 7月 20, 2012

[SQL] 利用 SQL Profile 來偵測死結

利用 SQL Profile 擷取和分析死結發生的原因。

首先要在 SQL Profile 內建立追蹤來擷取相關事件和資料行。在追蹤的[事件選取範圍]索引標籤內,預設是不會出現 Lock 相關事件,必須先勾選"顯示所有事件"和"顯示所有資料行",全部選項才會完整出現。

[SQL] 利用 SQL Profile 來偵測死結 1

勾選 Locks 事件並選擇需要的欄位資訊
  1. DeadLock graph:提供死結的 XML 描述。(SQL 2005 開始支援)
  2. Lock:DeadLock:追蹤交易何時要求鎖定已由其他交易鎖定的資源,而造成死結。
[SQL] 利用 SQL Profile 來偵測死結 2

DeadLock graph 和 Lock:DeadLock 的 LoginName 在顯示的資料上的差異
  • DeadLock graph: sa
  • Lock:DeadLock:連線使用者
[事件選取範圍] 索引標籤上選取 Deadlock graph 事件,[事件擷取設定] 索引標籤才會出現,[事件擷取設定] 索引標籤內的死結 XML 設定,可以單獨把 DeadLock graph 產生的死結圖形儲存成 xdl 檔案。

[SQL] 利用 SQL Profile 來偵測死結 3
  • 單一檔案中的所有死結 XML 批次:將所有死結圖表事件儲存在單一 XML 檔案中
  • 相異檔案中的每一個死結 XML 批次:為每一個死結圖表建立新的 XML 檔案。

星期五, 7月 13, 2012

[SQL] TDSSNIClient initialization failed

Demo 時發現 SQL Server 服務竟然沒有辦法啟動
  • 在 SQL Server Configuration Manager 啟動時,所得到的錯誤訊息
[SQL] TDSSNIClient initialization failed 1
  • SQL Server ErrorLog 檔案
[SQL] TDSSNIClient initialization failed 5
  • Windows 服務中啟動時,所得到的錯誤訊息
[SQL] TDSSNIClient initialization failed 2
  • Windows 事件檢視器中的錯誤訊息
[SQL] TDSSNIClient initialization failed 3

VIA(Virtual Interface Adapter)通訊協定為使用 VIA 硬體時使用,打開 VIA 通訊協定會導致 SQL Server 服務無法開啟,剛剛設定通訊協定時,一時手殘把它打開造成。

[SQL] TDSSNIClient initialization failed 6

星期五, 7月 06, 2012

Beyond Relational TSQL Challenge

這篇文章把 Beyond Relational TSQL Challenge 整理在這裡方便自己尋找

Beginners Challenge

Challenge