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 중국어 웹사이트의 기타 관련 기사를 참조하세요!