Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从C#在单个文件中执行多个SQL脚本?_C#_Sql Server - Fatal编程技术网

如何从C#在单个文件中执行多个SQL脚本?

如何从C#在单个文件中执行多个SQL脚本?,c#,sql-server,C#,Sql Server,我正试图从C#在一个文件中执行多个SQL脚本。在脚本之间,我有GO语句。这个脚本就像一个增量脚本,而且脚本会一天比一天增加。我尝试使用ExecuteReader()、ExecuteScalar()和ExecuteNonQuery(),但它抛出异常,说GO语法不正确 然后,我用GO拆分脚本,在一个循环中,我尝试在脚本有Declare@xyz DataType的地方执行脚本,并抛出异常 请建议如何从C#执行这样的脚本 我会尝试只打开一次连接来运行脚本的所有部分 伪代码: use (var conne

我正试图从C#在一个文件中执行多个SQL脚本。在脚本之间,我有
GO
语句。这个脚本就像一个增量脚本,而且脚本会一天比一天增加。我尝试使用
ExecuteReader()
ExecuteScalar()
ExecuteNonQuery()
,但它抛出异常,说
GO
语法不正确

然后,我用
GO
拆分脚本,在一个循环中,我尝试在脚本有
Declare@xyz DataType
的地方执行脚本,并抛出异常

请建议如何从C#执行这样的脚本


我会尝试只打开一次连接来运行脚本的所有部分

伪代码:

use (var connection ...)
{
  connection.Open();
  foreach (var sqlBatch in ...)
  {
    use (var command = new Command(..., connection))
    {
      command.CommandText = sqlBatch;
      ...
      command.ExecuteNonQuery();
    }
  }
}

您可以使用
SMO
SMO作为部署的额外工具(特别是当您必须支持不同的SQL Server版本时)。我不会只使用SMO来运行SQL脚本。另外,事务实现可能会有所帮助。只是一个想法@影子:很难说。大多数脚本都是自己进行事务处理的。但这确实是一个值得考虑的问题。谢谢你,Stefan Steinegger。
use (var connection ...)
{
  connection.Open();
  foreach (var sqlBatch in ...)
  {
    use (var command = new Command(..., connection))
    {
      command.CommandText = sqlBatch;
      ...
      command.ExecuteNonQuery();
    }
  }
}