14

我有一个案例,我有 10+ SQL script

我不想一个接一个地运行我的所有脚本。

有没有一种方法可以让我在SQL Management studio.

我找到了这篇文章。创建批处理文件似乎更容易。

这就是你所需要的:

@echo off
ECHO %USERNAME% started the batch process at %TIME%  >output.txt


for %%f in (*.sql) do (
 (
sqlcmd.exe  -S servername -E   -d databasename -i %%f >>output.txt
)


pause

替换 servername 和 databasename,但它似乎不起作用。

有任何想法吗?

4

7 回答 7

9

你有一个无与伦比的括号,那里。尝试

对于 (*.sql) 中的 %%f 执行 sqlcmd.exe -S 服务器名 -E -d 数据库名 -i %%f >>output.txt

我刚刚将它保存在一个 .cmd 文件中,它似乎正在工作。

于 2012-02-07T18:39:09.390 回答
5

是的,这是可能的。您可以使用 :r 命令来完成SQLCMD

我强烈建议您阅读这篇文章并使用SQLCMD

http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/

于 2012-01-13T07:30:08.773 回答
3

您可以创建一个 Stred Procedure 来调用您的所有脚本。您还可以创建一个计划来自动运行脚本。

http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx

于 2012-01-13T07:33:39.147 回答
2

这是一个带有源代码的开源实用程序http://scriptzrunner.codeplex.com/

该实用程序是用 c# 编写的,允许您拖放许多 sql 文件并开始针对数据库运行它们。

于 2012-03-05T08:05:16.420 回答
0

一些批处理技巧

cd %~dp0 //use this if you use 'for xxx in', it solved most of my problems 

ECHO %USERNAME% started the batch process at %TIME%  >output.txt


for %%f in (*.sql) do (
(
sqlcmd.exe  -S servername -E -d databasename -i %%f >>output.txt
)
echo %errorlevel%
pause
于 2015-07-07T12:30:16.680 回答
0

您可以使用SMSS 的Batch Compiler插件,它可以让您一次运行多个脚本、创建 SQLCMD 脚本或将它们合并到一个 *.sql 文件中。

于 2015-07-20T17:12:53.977 回答
0

如果您想通过批处理程序运行 Oracle SQL 文件,那么下面的代码将很有用。只需复制和更改数据库凭据和数据库名称

@echo off
for %%i in ("%~dp0"*.sql) do echo @"%%~fi" >> "%~dp0all.sql"

echo exit | sqlplus scott/tiger@orcl @"c:\users\all.sql"
pause

基本上,您需要将此批处理文件放在拥有所有 SQL 文件的文件夹中。它将首先获取目录中的所有 sql 文件名,并使用 sql 文件名加载它们的完整路径。然后,它将写入一个文件all.sql,然后 sqlplus 将调用该all.sql文件来执行您在该目录中拥有的所有 sql 文件。

于 2020-10-06T04:05:12.230 回答