我想运行一个调用多个* .sql脚本的脚本 我在子办公室有很多服务器 如果* .sql崩溃,将需要对脚本进行错误控制 也喜欢使用配置文件,所以我可以编辑每个网站
TA 杰拉德
这里有一些我找到的源代码
using System.Data.SqlClient;
using System.IO;
using Microsoft.SqlServer.Management.Common;
using Microsoft.SqlServer.Management.Smo;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string sqlConnectionString = "Data Source=TECHSUP4\\SQLEXPRESS;Initial Catalog=TESTCU;Integrated Security=True";
FileInfo file = new FileInfo("C:\\Database\\Scripts\\test.sql");
string script = file.OpenText().ReadToEnd();
SqlConnection conn = new SqlConnection(sqlConnectionString);
Server server = new Server(new ServerConnection(conn));
server.ConnectionContext.ExecuteNonQuery(script);
}
}
}
答案 0 :(得分:0)
使用PowerShell运行它怎么样?
$ cmd = get-content“C:\ temp \ CombinedScripts.sql”
foreach($ svr in get-content“C:\ temp \ ServerList.txt”)
{
$ con =“server = $ svr; database = master; Integrated Security = sspi”
$ da = new-object System.Data.SqlClient.SqlDataAdapter($ cmd,$ con)
$ dt = new-object System.Data.DataTable
$ da.fill($ dt)|外空
$ SVR
$ dt |格式表
}
答案 1 :(得分:0)
如果test.sql文件中的某一行遇到问题,那么您发布的代码将抛出异常并使数据库处于未知状态。
我个人会解析文件中的每个SQL语句,并一次执行一条语句。在每次执行时,我会包装一个异常处理程序,记录异常和导致异常的行。根据您正在尝试执行的操作,您可能能够继续执行语句,或者您可能希望在那里终止执行。
应该注意的是,它确实取决于“test.sql”中的内容。如果它的简单单行命令彼此独立,那么你应该能够像我所描述的那样一次执行一个命令。如果它的命令串创建变量,执行存储过程等,这可能不是正确的方法。在这种情况下,您可能希望将更多逻辑移动到.sql文件中以执行需要执行的操作。
答案 2 :(得分:0)
如果您的服务器是MS SQL Server 2005或更高版本,则可以使用 sqlcmd 实用程序来运行sql语句。它还可以充当脚本语言并将一组sql语句作为脚本运行。
sqlcmd实用程序可让您输入 Transact-SQL语句,系统 程序和脚本文件 命令提示符,在查询编辑器中 SQLCMD模式,在Windows脚本文件中 或在操作系统(Cmd.exe)中 SQL Server代理作业的作业步骤。 此实用程序使用OLE DB执行 Transact-SQL批处理。
其余的就在这里:sqlcmd Utility