2012-01-13 45 views
14

Tôi có trường hợp tôi đã nhận được 10+ SQL script.Làm thế nào để chạy nhiều tập lệnh SQL bằng cách sử dụng một tập tin thực thi?

Tôi không muốn đi và chạy tất cả các kịch bản của tôi 1 bằng 1.

Có cách nào mà tôi có thể chạy tất cả các kịch bản của tôi liên tiếp trong SQL Management studio.

Tôi đã tìm thấy this bài đăng. Tạo một tập tin thực thi có vẻ dễ dàng hơn.

Đây là tất cả các bạn cần:

@echo off 
ECHO %USERNAME% started the batch process at %TIME% >output.txt 


for %%f in (*.sql) do (
(
sqlcmd.exe -S servername -E -d databasename -i %%f >>output.txt 
) 


pause 

Thay servername và databasename, nhưng nó có vẻ là không làm việc.

Bất kỳ ý tưởng nào?

+0

Điều gì xuất hiện trong tệp output.txt khi bạn chạy tệp bó? –

+0

@MarkBannister Willem bắt đầu quá trình xử lý theo lô 10: 50: 30,46. Sau đó, không có gì khác xảy ra – Willem

+0

Bạn nhận được kết quả gì nếu bạn xóa lệnh '@echo off' khỏi tệp lô và thử lại? Ngoài ra, hãy thử thêm 'ECHO% PATH%' vào đầu tệp lô và kiểm tra xem đường dẫn cho SQLCMD.EXE có được bao gồm hay không. –

Trả lời

3

Bạn có thể tạo một thủ tục Strored để gọi tất cả các kịch bản của mình. Bạn cũng có thể tạo kế hoạch lịch biểu để chạy tự động hóa tập lệnh.

http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx

+0

Vui lòng xem câu hỏi được cập nhật của tôi. – Willem

+0

Bạn có nhận được thông báo lỗi từ tập lệnh không? Bạn đã kiểm tra đường dẫn cho '* .sql', đại diện cho các tập lệnh sql bạn muốn chạy. –

+0

Không có thông báo lỗi. Đường dẫn là tất cả tốt – Willem

5

Có, có thể. Bạn có thể làm điều đó với: r lệnh SQLCMD.

tôi khuyên bạn nên đọc bài viết này và làm điều đó với SQLCMD

http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/

+0

Vui lòng xem câu hỏi được cập nhật của tôi. – Willem

+1

Có thể chạy tất cả tập lệnh trong giao dịch không? và nếu có bất kỳ lỗi nào trong bất kỳ tập lệnh nào thì hãy quay lại và ngừng thực thi. –

9

Bạn đã có một ngoặc chưa từng có, có. Hãy thử

cho %% f trong (* sql) làm sqlcmd.exe -S servername -E -d databasename -i %% f >> output.txt

Tôi chỉ lưu nó trong một .cmd và có vẻ như nó đang hoạt động.

2

Dưới đây là một tiện ích mã nguồn mở với mã nguồn http://scriptzrunner.codeplex.com/

Tiện ích này được viết bằng C# và cho phép bạn kéo và thả nhiều file sql và bắt đầu chạy chúng chống lại một cơ sở dữ liệu.

1

Bạn có thể đã biết điều này, trong trường hợp bạn không làm như vậy, tập lệnh bạn đã đăng sẽ chỉ chạy trên các máy đã cài đặt máy chủ SQL.

0

Một số batch lừa

cd %~dp0 //use this if you use 'for xxx in', it solved most of my problems 

ECHO %USERNAME% started the batch process at %TIME% >output.txt 


for %%f in (*.sql) do (
(
sqlcmd.exe -S servername -E -d databasename -i %%f >>output.txt 
) 
echo %errorlevel% 
pause 
0

Bạn có thể sử dụng Batch Compiler add-in cho SMS, nó cho phép bạn chạy nhiều kịch bản cùng một lúc, tạo ra các kịch bản SQLCMD hoặc củng cố chúng thành một tập tin * sql.

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