2010-04-21 44 views
96

Tôi cố gắng để tạo ra một số biến kịch bản trong T-SQL như sau:SQL Server ': setvar' Lỗi

/* 
    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" 

Tuy nhiên, khi tôi chạy này, tôi nhận được một lỗi nêu 'cú pháp sai gần': '. Tôi đang làm gì sai?

Trả lời

175

: setvar chỉ hoạt động trong chế độ lệnh SQL, vì vậy bạn có thể trong thực thi SQL bình thường trong studio quản lý và không đổi sang chế độ lệnh.

Điều này có thể được thực hiện thông qua giao diện người dùng trong SQL Server Management Studio bằng cách chuyển đến menu "Truy vấn" và chọn "Chế độ SQLCMD".

+16

Đây cũng là vấn đề khi sử dụng tiện ích So sánh giản đồ: Dữ liệu> Visual Studio. Nếu bạn chạy kịch bản thay đổi kết quả từ bên trong tiện ích, bạn sẽ ổn, nhưng nếu bạn quyết định xuất/xcopy tập lệnh thay đổi sau khi so sánh và sau đó thử nhập/dán tập lệnh thay đổi kết quả vào SSMS thì như trên sẽ thất bại. Rõ ràng đây cũng có thể là một vấn đề nếu bạn đã bao gồm kịch bản thay đổi db trong một triển khai kèm theo. Vì vậy, bạn cần phải bật chế độ lệnh SQL trước khi chạy tập lệnh hoặc thông qua trình đơn như trên hoặc đảm bảo tập lệnh cài đặt tùy chỉnh của bạn hoạt động trước khi chạy. – rism

+3

Trong Visual Studio (2013): SQL menu-> Execution Settings-> Chế độ SQLCMD – larsts

+0

Tôi đang gặp vấn đề khi cố gắng sử dụng scema so sánh kịch bản được tạo để xây dựng cơ sở dữ liệu từ ứng dụng của tôi khi khởi động đầu tiên sau khi cài đặt. đến một executenonquery(). Tôi hoặc là sẽ cần phải tìm một cách để thực hiện điều này thông qua chế độ SQLCMD hoặc hack lên kịch bản thay thế tất cả các biến cho một bắt đầu. – Scott

1

thử thay thế :setvar DatabaseName "MesProduction_Preloaded_KLM_MesSap"

với:

USE [MesProduction_Preloaded_KLM_MesSap] 
GO 
+0

Không giúp đánh giá biến trong phần còn lại của tập lệnh? $ (Tên cơ sở dữ liệu). [Dbo]. [Dù] – CRice

1

Chỉ cần kích hoạt chế độ sqlcmd trong SQL Server Management Studio như mô tả trong sau hình ảnh.

enter image description here