使用批处理文件执行一组SQL查询?

时间:2014-02-04 13:37:30

标签: sql-server database batch-file cmd

我正在使用SQL Server数据库。我有这些SQL查询:

Delete from TableA;
Delete from TableB;
Delete from TableC;
Delete from TableD;
Delete from TableE;

是否可以使用批处理文件运行这些脚本?该数据库是一个远程数据库。

谢谢!

4 个答案:

答案 0 :(得分:54)

将命令保存在.SQL文件中,例如:ClearTables.sql,例如在C:\temp文件夹中。

C:\Temp\ClearTables.sql

的内容
Delete from TableA;
Delete from TableB;
Delete from TableC;
Delete from TableD;
Delete from TableE;

然后使用sqlcmd执行如下操作。由于您说数据库是远程的,请使用以下语法(在更新服务器和数据库实例名称之后)。

sqlcmd -S <ComputerName>\<InstanceName> -i C:\Temp\ClearTables.sql

例如,如果远程计算机名称为SQLSVRBOSTON1且数据库实例名称为MyDB1,则命令为。

sqlcmd -E -S SQLSVRBOSTON1\MyDB1 -i C:\Temp\ClearTables.sql

另请注意,-E指定默认身份验证。如果您有要连接的用户名和密码,请使用-U-P开关。

您将通过打开CMD命令窗口来执行所有这些操作。

使用批处理文件。

如果要将其保存在批处理文件中并双击以运行它,请按以下步骤操作。

创建并保存ClearTables.bat,如此。

echo off
sqlcmd -E -S SQLSVRBOSTON1\MyDB1 -i C:\Temp\ClearTables.sql
set /p delExit=Press the ENTER key to exit...:

然后双击它以运行它。它将执行命令并等待,直到您按一个键退出,这样您就可以看到命令输出。

答案 1 :(得分:5)

查看SQL Server附带的SQLCMD命令行工具。 http://technet.microsoft.com/en-us/library/ms162773.aspx

答案 2 :(得分:2)

使用 SQLCMD 实用程序。

http://technet.microsoft.com/en-us/library/ms162773.aspx

有一个connect语句,允许您在同一批次中从数据库服务器A转移到服务器B.

:连接server_name [\ instance_name] [-l timeout] [-U user_name [-P password]] 连接到SQL Server实例。同时关闭当前连接。

另一方面,如果您熟悉 PowerShell ,则可以通过编程方式执行此操作。

http://technet.microsoft.com/en-us/library/cc281954(v=sql.105).aspx

答案 3 :(得分:0)

不同的方式:

  1. 使用SQL Server代理(如果是本地实例)
    使用类型为“T-SQL”的新步骤在sql server代理中安排作业,然后运行该作业。

  2. 使用SQLCMD
    要使用SQLCMD,请参阅http://technet.microsoft.com/en-us/library/ms162773.aspx

  3. 使用SQLPS
    要使用SQLPS,请参阅http://technet.microsoft.com/en-us/library/cc280450.aspx