>백엔드 개발 >C++ >C#에서 GO 명령을 사용하여 대규모 SQL 스크립트를 효율적으로 실행하려면 어떻게 해야 합니까?

C#에서 GO 명령을 사용하여 대규모 SQL 스크립트를 효율적으로 실행하려면 어떻게 해야 합니까?

Linda Hamilton
Linda Hamilton원래의
2025-01-20 01:42:11519검색

How Can I Execute Large SQL Scripts with GO Commands in C# Efficiently?

C#에서 GO 명령이 포함된 대규모 SQL 스크립트를 효율적으로 실행

질문:

SqlCommand.ExecuteNonQuery()을 사용하여 GO 문으로 구분된 여러 배치가 포함된 대규모 SQL 스크립트를 실행하는 것은 GO를 잘못된 구문으로 해석하기 때문에 어렵습니다.

해결책 1: 다중 일괄 처리

한 가지 방법은 SQL 스크립트를 GO 라인을 기준으로 개별 배치로 분할하고 각 배치를 별도로 실행하는 것입니다. 이 방법은 효과가 있지만 대규모 스크립트의 경우 지루하고 오류가 발생하기 쉽습니다.

해결책 2: SQL Server 관리 개체(SMO)

보다 효율적인 솔루션은 기본적으로 GO 명령 구분 기호를 지원하는 SMO(SQL Server Management Objects)를 활용하는 것입니다.

샘플 코드:

<code class="language-csharp">public static void Main()
{
    // SQL连接字符串
    string sqlConnectionString = "Integrated Security=SSPI;" +
                                  "Persist Security Info=True;Initial Catalog=Northwind;Data Source=(local)";

    // 从目录获取SQL脚本
    DirectoryInfo di = new DirectoryInfo("c:\temp\sqltest\");
    FileInfo[] rgFiles = di.GetFiles("*.sql");

    // 使用SMO执行每个脚本
    foreach (FileInfo fi in rgFiles)
    {
        string script = File.ReadAllText(fi.FullName);
        using (SqlConnection connection = new SqlConnection(sqlConnectionString))
        {
            Server server = new Server(new ServerConnection(connection));
            server.ConnectionContext.ExecuteNonQuery(script);
        }
    }
}</code>

추가 라이브러리:

또 다른 옵션은 GO 구분 기호를 사용하여 SQL 스크립트 실행 기능을 캡슐화하는 Phil Haack의 라이브러리를 사용하는 것입니다. https://www.php.cn/link/3cdad14c5d7c1e1fa307772a876b42d7

위 내용은 C#에서 GO 명령을 사용하여 대규모 SQL 스크립트를 효율적으로 실행하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.