2010-09-28 36 views
22

Có thể truyền tham số cho tập lệnh SQL Server không? Tôi có một kịch bản tạo ra một cơ sở dữ liệu. Nó được gọi từ một tập tin batch sử dụng sqlcmd. Một phần của kịch bản SQL như sau:Làm cách nào để chuyển tham số vào tập lệnh SQL Server có tên là sqlcmd?

CREATE DATABASE [SAMPLE] ON PRIMARY 
(NAME = N'SAMPLE', FILENAME = N'c:\dev\SAMPLE.mdf' , SIZE = 23552KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) 
LOG ON 
(NAME = N'SAMPLE_log', FILENAME = N'c:\dev\SAMPLE_log.ldf' , SIZE = 29504KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) 

Tôi muốn để có thể vượt qua trong tên tập tin cho cơ sở dữ liệu và các bản ghi vì vậy mà tôi không cần phải hardcode 'C: \ dev \ SAMPLE.mdf 'và' C: \ dev \ SAMPLE_log.ldf '.

Có cách nào để thực hiện việc này không? Tôi đang chạy Microsoft SQL Server 2008 Express. Nói cho tôi biết nếu bạn cần nhiều thông tin khác.

Trả lời

32

Sử dụng công tắc -v để chuyển các biến.

sqlcmd -v varMDF="C:\dev\SAMPLE.mdf" varLDF="C:\dev\SAMPLE_log.ldf" 

Sau đó, trong tập tin kịch bản của bạn

CREATE DATABASE [SAMPLE] ON PRIMARY 
(NAME = N'SAMPLE', FILENAME = N'$(varMDF)' , SIZE = 23552KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB) 
LOG ON 
(NAME = N'SAMPLE_log', FILENAME = N'$(varLDF)' , SIZE = 29504KB , MAXSIZE = 2048GB , FILEGROWTH = 10%) 
+4

Trong trường hợp đó, bạn có lẽ cũng muốn xác định một biến '$ (dbname)' cho tên cơ sở dữ liệu riêng của mình .... –

+0

Tôi nhận lỗi khi tôi chạy nó: Cú pháp không chính xác gần 'C:'. Nhãn 'C' đã được khai báo. Tên nhãn phải là duy nhất trong chuỗi truy vấn hoặc thủ tục được lưu trữ. – Jeremy

+0

Tôi đang thử nhiều thứ khác nhau, chẳng hạn như thoát khỏi dấu gạch chéo hoặc dấu ngoặc kép. Bất kỳ ý tưởng làm thế nào để sửa chữa những lỗi này? – Jeremy

Các vấn đề liên quan