Sql-Server

SSMS 如何使用目前視窗的相同連接實例打開一個新的查詢視窗

  • January 8, 2020

來自 Oracle,我發現 SSMS 連接與 Oracle 的 SQL Developer 略有不同。Oracle 您點擊一個連接,然後您打開的所有選項卡都使用該連接。SSMS 為我打開的每個視窗/選項卡創建一個全新的連接/實例。 我不想要這個。我試圖解決的這種行為讓我想到了兩個討厭的問題。

  1. 在另一個視窗中查看 COMMIT 之前腳本的影響

我希望能夠在一個視窗中執行腳本……並且在另一個視窗中能夠查詢未送出的數據以簡單地查看結果……目前我必須使用執行腳本的相同視窗為了簡單地查看影響。(我想到了送出/回滾按鈕 - Oracle 我有時會想念你)。

  1. 從另一個視窗查看儲存在#TempTable 中的數據

我正在使用腳本創建#TempTable …但想從另一個視窗查詢它的數據。目前,當我打開另一個視窗(與 Oracle 的 SQL Developer 不同)時,它會使用新的連接/實例打開視窗。如何從另一個視窗而不是我執行腳本的視窗查詢#TempTable 中的數據?

以上只是出於組織原因……執行腳本非常痛苦……然後當我不想編輯/添加任何其他程式碼時,必須從同一個選項卡中寫入其他程式碼包含我執行的腳本的頁面。

如果我做錯了什麼或遺漏了一些要點,請告訴我。

在另一個視窗中查看 COMMIT 之前腳本的影響

您可以使用諸如 WITH (NOLOCK) 或 WITH (READUNCOMMITTED) 之類的表提示在 SSMS 中的兩個視窗之間執行未送出數據的髒讀。

從另一個視窗查看儲存在#TempTable 中的數據

您可以使用全域臨時表(##Table 而不是#Table)跨會話查詢臨時表。請注意,您必須首先將臨時表創建為全域臨時表。

以上只是出於組織原因……執行腳本非常痛苦……然後當我不想編輯/添加任何其他程式碼時,必須從同一個選項卡中寫入其他程式碼包含我執行的腳本的頁面。

如果我做錯了什麼或遺漏了一些要點,請告訴我。

一種簡單的方法是編寫整個腳本,包括檢查/測試數據更改的查詢,並實際突出顯示您要執行和執行它們的各個部分。

採取下面的程式碼範例。我想在表中插入兩條記錄,驗證結果,如果我滿意則送出,否則回滾:

BEGIN TRANSACTION

INSERT INTO TableA (ID, Value)
VALUES (1, 'Value 1'),
 (2, 'Value 2')

SELECT * FROM TableA

COMMIT

ROLLBACK

我會將整個程式碼放在一個視窗中,突出顯示第 1-5 行並點擊 Execute/F5。數據已插入但未送出,因此我突出顯示第 7 行並點擊 Execute/F5 並驗證結果。如果我很高興,我突出顯示第 9 行並點擊 Execute/F5 以送出更改,或者如果我想回滾,我突出顯示第 11 行並點擊 Execute/F5。

另外,請注意,如果IMPLICIT_TRANSACTIONS為 OFF(預設),那麼您的會話基本上使用“自動送出”,這意味著沒有顯式的 BEGIN TRANSACTION,INSERT 語句將自動送出。

引用自:https://dba.stackexchange.com/questions/256788