在SQL Server的應用開發過程(尤其是二次開發)中可能由于開發人員對表的結構不夠了解,造成開發過程中使用了不合理的方式造成數據庫引擎未按預定執行,以致影響業務.這是非常值得注意的.這次為大家介紹由于隱式數據類型轉換而造成的死鎖及相應解決方案.
現實中有些程序員/數據庫開發者會根據數據庫的處理機制實現一些應用,如搶座應用,可能會對事務中的查詢加一些列的Hint以細化粒度,實現應用的同時使得影響最低,但也有可能因為一些小細節的欠缺而引發錯誤,從而造成糟糕的用戶體驗.如下面這個例子
生成測試數據
code
create table testlock(ID varchar(10) PRimary key clustered,col1 varchar(20),col2 char(200))go----------create test tabledeclare @i intset @i = 1while @i < 100begininsert into testlockselect right(replicate('0',10)+ cast(@i as varchar(10)),10),'aaa','fixchar'set @i = @i+1endgo----------generate test data
此時我們打開trace profiler 跟蹤死鎖相關信息
新聞熱點
疑難解答