2021年6月23日 星期三

[SQL]基本宣告 與 取得字串

 變數使用@

宣告:DECLARE + @Name +型態

賦值:SET @Name = ' ';

ex: 

DECLARE @test INT;

SET @test = 123;

綜合為 DECLARE @test INT = 123;


也可以用Select 取值

ex:

DECLARE @test INT = 0;

SELECT @test = 某表格.欄位 From 表格

=============================我是分隔線============================

字串宣告

DECLARE @Test  VARCHAR(20) = 'Hello world';

DECLARE @Test2 VARCHAR(20) = '';

SET @Test2 = SUBSTRING(@Test,1,5);

則結果為: @Test2 = Hello

2021年6月15日 星期二

[SQL]查詢交易機制鎖定與強制解鎖

 程式碼如以下:


SELECT request_session_id AS spid, resource_type AS rt, resource_databASe_id AS rdb, (CASE resource_type WHEN 'OBJECT' then object_name(resource_ASsociated_entity_id) WHEN 'DATABASE' then '<db_name>' ELSE (SELECT object_name(object_id) FROM sys.partitions WHERE hobt_id = resource_ASsociated_entity_id) END) AS objname, resource_description AS rd, request_mode AS rm, request_status AS rs FROM sys.dm_tran_locks


找到被鎖定的spid名稱 (rm狀態為 X,IX)

假設是spid  61  

直接下 kill  61 即可!


===========狀態==========

spid:該次Request的編號。
objname:該次Request處理的物件,從圖中可以看到Customers。
rm/rs:該次Request的鎖定狀態。

rm = X 表示 dead lock,一般就是我們需要處理的。
rm = IX 表示 wait lock ,這種是因為前一個Request已經dead lock,而被pending的狀態。
rm = S or IS 表示 shared lock,一般的長時間查詢就會顯示這種狀態。



參考來源


[SQL]顯示千分位與小數顯示

  CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) CONVERT style參數說明 1  (expression為 money 或 smallmoney型別): 0 : 預設,保留小數位後兩位,並四捨...