2010-04-21 227 views
96

我試圖創建T-SQL的腳本變量如下:SQL服務器「:SETVAR」錯誤

/* 
    Deployment script for MesProduction_Preloaded_KLM_MesSap 
    */ 

    GO 
    SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON; 

    SET NUMERIC_ROUNDABORT OFF; 


    GO 
    :setvar DatabaseName "MesProduction_Preloaded_KLM_MesSap" 

然而,當我運行它,我得到一個錯誤,說明'附近有語法錯誤: 」。我究竟做錯了什麼?

回答

175

該setvar只能在SQL命令模式下工作,因此您可能在管理工作室中的正常SQL執行,並沒有交換到命令模式。

通過轉到「查詢」菜單並選擇「SQLCMD模式」,可以通過SQL Server Management Studio中的用戶界面完成此操作。

+16

這也是一個問題,使用Visual Studio的時候:數據>架構比較實用。如果您從該實用程序內運行生成的更改腳本,那麼您很好,但是如果您決定在比較後導出/ xcopy更改腳本,然後嘗試將生成的更改腳本導入/粘貼到SSMS中,那麼它將失敗。顯然這也可能是一個問題,如果您在捆綁部署中包含數據庫更改腳本。 因此,在運行腳本之前,需要通過上述菜單打開SQL命令模式,或者確保您的自定義安裝腳本在運行之前執行。 – rism 2012-05-20 01:39:52

+3

在Visual Studio(2013)中:SQL菜單 - >執行設置 - > SQLCMD模式 – larsts 2015-03-27 11:21:55

+0

我遇到了這個問題,嘗試使用scema比較生成的腳本,在安裝後首次啓動時從我的應用程序構建數據庫,傳遞腳本到執行查詢()。我需要找到一種方法來通過SQLCMD模式執行此操作,或者修改腳本替換所有變量以便開始。 – Scott 2016-07-19 19:47:21

1

嘗試更換:setvar DatabaseName "MesProduction_Preloaded_KLM_MesSap"

USE [MesProduction_Preloaded_KLM_MesSap] 
GO 
+0

不幫助評估腳本其餘部分的變量嗎? $(數據庫名)。[DBO]。[無論] – CRice 2015-10-23 00:53:23

1

只啓用SQLCMD模式在SQL Server Management Studio中。

enter image description here