2014-09-29 118 views
0

執行任何 「ALT」 命令,我試圖找到一種方式來運行Alt鍵 + Q + 中號通過T-SQL命令切換到SQLCMD模式。客戶不想使用PowerShell。SQL - 在T-SQL

我試過以下,但我卡住了。有什麼建議麼?

DECLARE @smtp VARCHAR(MAX) 
SET @smtp = CHAR(65) + CHAR(76) + CHAR(84) + CHAR(43) + CHAR(77) + CHAR(43) + CHAR(81) 
SELECT @smtp 
EXEC(@smtp) 
+0

'Alt + M + Q'不是有效的SQL語句,因此'執行'...好吧,不會。 Alt + Q + M是一個IDE的鍵盤組合,它實現了在按下組合鍵時執行某些操作的功能。首先找到執行「切換到SQMCMD」的SQL功能,然後將其綁定到您的IDE鍵盤快捷鍵。沒有SQL命令可以用ALT + M + Q來執行,因爲TSQL沒有鍵盤。 – 2014-09-29 15:27:28

+0

不確定我是否明白你的要求。但我認爲你在找什麼在這裏:http://msdn.microsoft.com/en-us/library/ms174187.aspx – Arun 2014-09-29 15:31:01

+0

這是一個DBA SE問題的重複,[「我可以從內部啓用SQLCMD模式一個腳本?「](http://dba.stackexchange.com/questions/5468/can-i-enable-sqlcmd-mode-from-inside-a-script)。 – stakx 2014-09-29 16:20:50

回答

0

參見DBA堆棧交易所此相關的問題:Can I enable SQLCMD mode from inside a script?

問題的答案鏈接到的問題:你不能從腳本中切換到SQLCMD模式。在運行腳本之前,必須在SQL Server Management Studio 內手動啓用此模式。但是,您可以從腳本內部檢測它是否在SQLCMD模式下運行,如果沒有,則會中止。

這就是說,你的腳本有什麼問題?

根本問題是,您試圖通過EXEC與IDE(SQL Server Management Studio)進行交談,這不是該語句的作用:它與SQL Server實例交談(並在其上運行)。

當您執行T-SQL腳本時,您大多數情況下直接與SQL Server實例交談;也就是說,沒有任何用戶界面的服務過程。因此,SQL Server對鍵盤一無所知,也不瞭解任何鍵盤快捷鍵。

(在SQL Server Management Studio或SQLCMD處理的腳本中,實際上存在某些「元命令」和指令,例如GO,而不是SQL Server實例本身。沒有這樣的指令將IDE置於SQLCMD模式。)

EXEC/EXECUTE是在SQL Server實例上處理的SQL語句。它執行存儲在文本變量中的SQL語句。它的功能不是 do是模擬IDE內部的按鍵。無論如何,它無法執行,因爲它執行時,IDE已將其發送到服務器。 IDE不再可用。這就是您的腳本失敗的原因:Alt+M+Q不是有效的SQL。 (順便說一句,如果你正在SQL Server Management Studio內部工作,你甚至不能確定該鍵盤組合分配了什麼功能,因爲用戶可以將鍵盤組合重新分配給不同的命令。)

可能的替代:

  • 如果你要自動運行的IDE,看看模板和宏(如果它有這樣的功能)。
  • 放棄IDE並直接使用SQLCMD命令行實用程序執行您的腳本(儘管這似乎是不可能的,因爲您已被告知避免Powershell,也許還有CMD)。
  • 向腳本中添加一些前綴代碼,檢查它是否在SQLCMD模式下運行,如果不是這種情況,則會中止。請參閱this answer以解決上述問題。