在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)转义字符。

谢谢提前!

在c#中从sql文件运行现有数据库上的脚本

SQL Server附带了一个名为SqlCmd (https://msdn.microsoft.com/en-us/library/ms162773.aspx)的命令行SQL执行实用程序。您可以使用它来执行任何有效的脚本。如果你真的需要在c#中运行它,你可以使用System.Diagnostics.Process命名空间类来启动一个执行SqlCmd的进程。