我创建了一个空数据库。我需要在这个空数据库上运行脚本。 到目前为止,我已经从网站上找到了代码:
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;
}
}
但是当我运行它时,由于&#39; \ n&#39;,&#39; \ r&#39;或简单斜线等 是否有一些从sql文件运行大型脚本的正确方法? 我的文件还包含GO语句。
这不是一个重复的问题,因为它有两件事1)Go命令和2)转义字符。
谢谢你提前!
答案 0 :(得分:1)
SQL Server附带一个名为SqlCmd(password_hash
)的命令行SQL执行实用程序。您可以使用它来执行任何有效的脚本。如果确实需要从C#运行它,可以使用System.Diagnostics.Process命名空间类来启动执行SqlCmd的进程。