我想从命令行对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;但我想这只是命令行命令。
答案 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
如果您执行此测试,请报告结果......
安东尼奥