2010-07-15 61 views
8

Tôi muốn có tệp BAT mở tập lệnh máy chủ sql. Hiện tại tôi có mã này trong tệp sql:Làm cách nào để chạy tập lệnh bằng tệp BAT?

declare @path varchar(255), @mydb varchar(50) 
SELECT @mydb = 'timeclockplus' 
select @path = 'C:\Program Files\Microsoft SQL Server\MSSQL.2\MSSQL\Backup\' 
      + @mydb + '-' + convert(varchar(8),getdate(),112) + '.bak' 
BACKUP DATABASE @mydb TO DISK = @path 

Làm cách nào để mở tệp SQL này từ tệp BAT?

Tôi hiện đang cố gắng chạy nó như thế này:

C:\Program Files\Microsoft SQL Server\80\Tools\Binn\osql -E 
    -S Sql server-hl7\timeclockplus timeclockplus.sql -oresults.txt 

nhưng OSQL không tồn tại trong thư mục Binn,

Trả lời

16

Bạn nên gọi công cụ sqlcmd dòng lệnh từ tập tin thực thi của bạn. Giả sử tập tin sql của bạn là "backup.sql", dòng lệnh sẽ là một cái gì đó như:

sqlcmd -E -S yoursqlinstance -i backup.sql 

-E sử dụng kết nối đáng tin cậy, thay thế với -U-P nếu bạn cần phải xác định một tên người dùng và mật khẩu SQL. Xem thêm this article with examples.

+0

+1: Tôi quá chậm, liên kết bổ sung: http://msdn.microsoft.com/en-us/library/ms165702.aspx –

+0

Liên kết tốt, thêm nó vào câu trả lời. – driis

+0

Ngày tốt lành thưa ông, Nhưng làm thế nào là toàn bộ mã hóa về cách tạo tập tin thực thi? – WTFZane

0

Bắt đầu> Chạy> Loại Cmd.

MyDrive: \ Mypath \ Mybat.bat

=)

4
sqlcmd -S 127.0.0.1 /E -i MySqlScript.sql 

Thay thế/E với/U và/P nếu bạn không có kết nối đáng tin cậy

3

Nếu bạn muốn có một câu trả lời tốt hơn, ở đây là:

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 
:: batch file for sql query 
SET FIELDVAL=Empty 
SET DBNAME=MYDB 
SET SQLSTRING=SELECT column_name(s)^ 
FROM table_name1^ 
INNER JOIN table_name2^ 
ON table_name1.column_name=table_name2.column_name^ 
AND table_name2.field=%FIELDVAL% 
ECHO !SQLSTRING! 

ECHO. 
sqlcmd.exe -b -S localhost -E -d !DBNAME! -Q "!SQLSTRING!" -W 
ECHO Query is done. Hit any key to close this window.... 
pause>nul 
Các vấn đề liên quan