我有一个案例,我有10 + SQL script
。
我不想一个接一个地运行我的所有脚本。
有没有办法可以在SQL Management studio
中连续运行我的所有脚本。
我发现了this帖子。创建批处理文件似乎更容易。
这就是你所需要的:
@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,但似乎无效。
有什么想法吗?
答案 0 :(得分:9)
你有一个无与伦比的括号。 尝试
对于(* .sql)中的%% f执行sqlcmd.exe -S servername -E -d databasename -i %% f>> output.txt
我刚将它保存在.cmd文件中,似乎正在运行。
答案 1 :(得分:5)
是的,这是可能的。您可以使用:SQLCMD
的命令。
我强烈建议您阅读本文并使用SQLCMD
http://www.mssqltips.com/sqlservertip/1543/using-sqlcmd-to-execute-multiple-sql-server-scripts/
答案 2 :(得分:3)
您可以创建一个存储过程来调用所有脚本。您还可以创建计划计划以自动运行脚本。
http://msdn.microsoft.com/en-us/library/aa174792(v=sql.80).aspx
答案 3 :(得分:2)
这是一个源代码为http://scriptzrunner.codeplex.com/
的开源实用程序此实用程序是用c#编写的,允许您拖放许多sql文件并开始针对数据库运行它们。
答案 4 :(得分:1)
您可能已经知道这一点,如果不这样做,您发布的脚本将只在安装了SQL Server的计算机上运行。
答案 5 :(得分: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
答案 6 :(得分:0)
您可以使用Batch Compiler加载项用于SMSS,它允许您一次运行多个脚本,创建SQLCMD脚本或将它们合并到* .sql文件中。
答案 7 :(得分: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文件。