执行大型sql脚本

时间:2014-11-01 20:40:59

标签: c# sql-server smo

我有以下代码来运行SQL文件。

string scriptDirectory = "...";
string sqlConnectionString = "...";

DirectoryInfo di = new DirectoryInfo(scriptDirectory);

FileInfo[] rgFiles = di.GetFiles("*.sql");

foreach (FileInfo fi in rgFiles)
{
    //StringCollection sc = new StringCollection();

    FileInfo fileInfo = new FileInfo(fi.FullName);
    string script = fileInfo.OpenText().ReadToEnd();

    SqlConnection connection = new SqlConnection(sqlConnectionString);
    Server server = new Server(new ServerConnection(connection));

    server.ConnectionContext.ExecuteNonQuery(script);
}

但问题是当任何文件非常大时。

解决方案将包含StringCollection中的所有命令,但问题是要划分脚本。

是否有一些方法来拆分SQL文件?

GO分割文件不是解决方案,因为文件创建了表和“INSERT”,插入之间没有GO

修改

为了更清楚,这是想要读取大文件的例外:

System.OutOfMemoryException: Exception of type 'System.OutOfMemoryException' was
 thrown.
   at System.Text.StringBuilder.ToString()
   at System.IO.StreamReader.ReadToEnd()
   at ConsoleApplication2.Program.Main(String[] args) in Program.cs:line 47

我可以逐行读取并分离文件以找到“GO”或“INSERT / DELETE / UPDATE”,但我需要知道是否存在任何工具或SQL库来执行此操作。

0 个答案:

没有答案