接下來我們将SQL Server基礎系列還剩下最後幾節内容結束,後續再來講解SQL Server性能調優,我們開始進入主題。
事務對變量影響具體是指什麼意思呢,換句話說就是當我們復原事務和送出事務之後對本地變量是否起作用呢,下面我們來看下具體例子。

通過上述圖我們能夠很清晰的知道:通過改變本地變量值,但是在復原後和送出後對變量根本不起作用,是以我們得出結論:本地變量不受事務所影響,因為其作用範圍受到限制。
我們首先建立一個臨時并插入一條資料,再來開啟事務插入一條資料并復原事務看其結果如何,具體示例如下:
從上圖觀察到當預設插入一條為 Temp Table - Outside Tran 的資料時,接下來我們開啟事務再插入一條為 Temp Table - Inside Tran 的資料,然後進行事務復原,此時復原之後的資料和預設插入的資料一緻,基于此我們得出結論:臨時表受事務影響。
當預設插入一條為 Table Var - Outside Tran 的資料後,我們開啟事務插入一條為 Table Var - Inside Tran 的資料,接下來再來進行復原發現其結果仍為 Table Var - Inside Tran ,至此我們得出結論:表變量不受事務所影響。
當日志檔案占滿時,我們可能需要收縮日志檔案到最小,那麼我們該如何做呢?我們可以通過如下三種方式收縮日志檔案,請繼續往下看。
在SQL Server 2005之前我們可以通過如下做
如果在SQL Server 2005下運作上述指令則會出現如下錯誤:
此時我們應該運作如下查詢。
此時運作成功将得到如下結果:
此時我們再右鍵資料庫屬性将得到我們收縮後最小的日志檔案大小,如下:
通過右鍵你要收縮的日志檔案對應的資料庫的任務->收縮->檔案,如下:
有時候我們完全不需要大日志檔案,此時我們需要完全移除日志檔案來釋放硬碟空間,我們通過以下四步即可達到我們所需。
(1)分離資料庫
(2)重命名日志檔案
(3)重新附加不帶日志檔案的資料庫
(4)删除日志檔案
示範如下:
本節我們詳細講解了事務對本地變量和表變量不起作用,而對臨時表起作用以及當日志檔案占滿時我們采取幾種方式來收縮日志,我們下節開始進入SQL Server基礎系列中有關死鎖的最後幾篇。