2010-07-15 63 views
8

我想要一個BAT文件打開一個sql服務器腳本。目前我在sql文件中有這樣的代碼:如何使用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 

如何從BAT文件打開此SQL文件?

目前我正在試圖這樣運行的:

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

但OSQL不在BINN目錄中,

回答

16

你應該從調用批處理文件的sqlcmd命令行工具。假設你的SQL文件是「backup.sql」,命令行會是這樣的:

sqlcmd -E -S yoursqlinstance -i backup.sql 

-E使用受信任的連接,與-U-P更換,如果你需要指定SQL用戶名和密碼。另見this article with examples

+0

+1:我是太慢了,額外的鏈接:http://msdn.microsoft.com/en-us/library/ms165702.aspx – 2010-07-15 19:04:28

+0

良好的鏈接,將其添加到答案。 – driis 2010-07-15 19:09:27

+0

美好的一天先生,但如何創建批處理文件的整個編碼? – WTFZane 2017-03-15 01:01:06

0

Start> Run> Type Cmd。

MyDrive:\ mypath中\ Mybat.bat

=)

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

替換/ E與/ U和/ P,如果你沒有受信任的連接

3

如果你想有一個更好的答案,那就是:

@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 
相關問題