2009-10-03 19 views
0

使用TSQL多年後,我仍然不知道何時使用SET,WITHENABLESET,WITH和ENABLE上的SQL Server TSQL約定/模式

當你讀到喜歡TSQL語句,

ALTER TABLE Person.Person 
ENABLE CHANGE_TRACKING 
WITH (TRACK_COLUMNS_UPDATED = ON); 

,如果它是這樣寫的(下文無效查詢)它看起來更直觀,易讀,

ALTER TABLE Person.Person 
SET CHANGE_TRACKING = ON, 
    TRACK_COLUMNS_UPDATED = ON 

我總是得到時之間的混淆使用SET,ENABLEWITH選項

什麼時候在TSQL中使用那些選項? TSQL只是不一致嗎?

回答

1

集是隻使用過的:

  1. 作爲一個獨立的語句修改變量的值,或..

  2. ...修改特定連接設置。

  3. 或者,作爲DML語句的一個子句,UPDATE。

ENABLE是永遠只DDL或DAL語句

WITH始終是其他的語句依賴條款的條款(雖然這是混淆了CTE的地方是一個前綴從句)

所以,SET應該很清楚,但是,誠然,對於WITH和ENABLE似乎沒有任何一致的規則。

+0

@RBarry:謝謝,我實際上沒有看到SQL服務器命名的任何一致性。我想這是我只是吸了起來,記住......這只是令人討厭,我只是發現「ALTER DATABASE AdventureWorksLT SET ALLOW_SNAPSHOT_ISOLATION ON;」聲明在選項中使用動詞「允許」而不是「啓用」...這只是失控。 – Sung