3

我想从命令行对 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到那个提示

我尝试使用 && 但我想这仅适用于命令行命令。

4

2 回答 2

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
于 2012-11-17T11:55:17.507 回答
1

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

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

脚本.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

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

安东尼奥

于 2012-11-17T20:59:36.767 回答