2011-02-24 128 views
1

我有一個自定義鍵盤快捷鍵查詢在SSMS(2008)與下面的T-SQL ...SSMS自定義鍵盤快捷鍵查詢帶(NOLOCK)

SELECT TOP(50) * FROM 

這讓我只需鍵入的名稱一張桌子,然後按下我的鍵盤快捷鍵,從桌子上取得前五十件物品。我遇到的問題是我喜歡使用WITH(NOLOCK)進行查詢,因此記錄不會被鎖定。我還沒有想出如何將T-SQL輸入到鍵盤查詢快捷方式,其中輸入位於語句中間。如何在不使用存儲過程的情況下合併NoLock?

+1

你可以追加'事務隔離級別設置讀取未提交'到您的查詢的前面。這顯然會爲您的連接切換選項,直到您再次關閉它(也許另一個捷徑鍵來做到這一點!)。 – 2011-02-24 16:10:11

+0

感謝您的有益建議。這個問題的一個主要目標是確定查詢快捷方式的輸入可以在T-Sql中間的方式。SELECT TOP(1)* From(Input Here)WHERE ID = 123,所以我可以鍵入在一個表名中,按下快捷鍵,並且該記錄的ID爲123(假設ID是一個有效的字段名稱)。 – N0Alias 2011-02-24 16:15:09

+0

從來沒有真正使用過快捷鍵。你可以通過'SELECT TOP(50)* FROM [] WITH(NOLOCK)WHERE [] = 'Then CTRL + + SHIFT + M'來填補空白。 – 2011-02-24 16:28:11

回答

3

它可以變得有點凌亂,但可以使用sp_executesql,以避免依賴於一個存儲過程被定義爲:

sp_executesql N'EXEC(''SELECT TOP(50) * FROM '' + @input + '' WITH(NOLOCK)'')', N'@input varchar(max)', 
+0

我喜歡它,正是我需要的! 注意:如果您需要在與連接的不同的數據庫中運行此查詢,則需要引號 - >'otherdb..mytable'。否則,不帶引號的mytable就足夠了。 – 2011-04-21 08:01:55

0

在主服務器中創建一個存儲過程sp_Top50並將該快捷方式分配給該SP。 sp_前綴使SQL Server查找master中的存儲過程。

create procedure sp_Top50 
    @T sysname 
as 
declare @S nvarchar(200) 
set @S = 'select top(50) * from '+quotename(@T)+ ' with(nolock)' 
exec (@S) 
2

我已經開發SSMSBoost SSMS 附加 - 它具有自動更換功能。 您可以定義有:

更換令牌: 「selt50」

替換字符串: 「SELECT TOP 50 * FROM#WITH(NOLOCK)」

#告訴那裏光標將被放置後,置換完成後

所以,當你再鍵入

selt50 and_press_SPACE

selt50將由

SELECT TOP(50) * FROM # WITH(NOLOCK)

被替換爲光標閃爍,而不是#

ssmsboost帶有非標準autoreplacements:

SEL - >select * from

UPD - >update # set where

deci->declare @# int

可以certaily重新定義他們 它一般做得好附加與SSMS幾個非常有用的工具(首選連接,代碼導航等)

+0

我是SSMSBoost的大力支持者,你們做得很好!它不斷變得越來越好。最好的SSMS工具插件! – SheldonH 2012-12-14 14:16:16

+0

謝謝!!!很高興聽到它! – 2012-12-15 00:25:38