在c#中从sql文件运行现有数据库上的脚本
本文关键字:数据库 脚本 运行 中从 sql 文件 | 更新日期: 2023-09-27 18:03:09
我创建了一个空数据库。我需要在这个空数据库上运行脚本。到目前为止,我已经从一个网站找到了代码:
public bool RunScript()
{
try
{
SqlConnection con = new SqlConnection(@"Data Source=DESKTOP-PCEOPRM'SQLEXPRESS;Initial Catalog=" + DbName + ";Integrated Security=True");
con.Open();
string script = File.ReadAllText(@"C:'inetpub'wwwroot'MetisTemplateDBScript'MetisEmptyDBScript.sql");
IEnumerable<string> commandStrings = Regex.Split(script, @"^'s*GO's*$",
RegexOptions.Multiline | RegexOptions.IgnoreCase);
foreach (string commandString in commandStrings)
{
if (commandString.Trim() != "")
{
using (var command = new SqlCommand(commandString, con))
{
command.ExecuteNonQuery();
}
}
}
con.Close();
return true;
}catch(Exception exc)
{
return false;
}
}
但是当我运行它时,它抛出一些异常,由于''n',''r'或简单的斜杠等。是否有一些适当的方法从sql文件运行一个大的脚本?我的文件也包含GO语句。
这不是一个重复的问题,因为它有两个东西1)Go命令和2)转义字符。
谢谢提前!
SQL Server附带了一个名为SqlCmd (https://msdn.microsoft.com/en-us/library/ms162773.aspx)的命令行SQL执行实用程序。您可以使用它来执行任何有效的脚本。如果你真的需要在c#中运行它,你可以使用System.Diagnostics.Process命名空间类来启动一个执行SqlCmd的进程。