在命令行上执行一系列SQL命令

时间:2012-11-17 11:49:55

标签: sql sql-server-2005 batch-file database-backups

我想从命令行对SQL Server 2005数据库运行一系列SQL语句。

当我发布第一个声明时

osql -E -S <Server_Name>\<Instance_Name> -d <Server_Name>

在我无法继续进行脚本之后,它会从那里提示窗口1>

如何向1>提示输入我的意思是给出下一个SQL语句

BACKUP DATABASE  TO DISK = 'c:\test.bak' WITH INIT,SKIP

并最后exit到该提示

我试过&amp;&amp;但我想这只是命令行命令。

2 个答案:

答案 0 :(得分:2)

你在sqlcmd工具上寻找-Q开关(不要在sqlserver 2005或更高版本上使用osql)(输入sqlcmd /?查看所有选项)或查看msdn

sqlcmd -E -S <Server_Name>\<Instance_Name> -d <Server_Name> -Q "BACKUP DATABASE TO DISK = 'c:\test.bak' WITH INIT,SKIP"

或者,您可以创建一个sqlscript文件,在其中放置要执行的所有sql语句。假设您将文件命名为myscript.sql,则osql命令将如下所示:

 sqlcmd -E -S <Server_Name>\<Instance_Name> -d <Server_Name> -i myscript.sql

答案 1 :(得分:1)

也许你可能想尝试在这个论坛中出现的其他问题的小技巧(不幸的是被删除了)。

您可以直接在命令下面的行中插入命令的输入,然后执行文件NOT作为批处理文件,但输入为cmd.exe(这类似于 here document 在Linux中)。例如:

script.TXT:

@echo off
osql -E -S <Server_Name>\<Instance_Name> -d <Server_Name>
BACKUP DATABASE  TO DISK = 'c:\test.bak' WITH INIT,SKIP
exit

以这种方式执行上一个“脚本”:

cmd < script.TXT

如果您执行此测试,请报告结果......

安东尼奥