본문 바로가기
개발언어/C#.NET

C# 에서 MSSQL Script 실행하기

by 엔돌슨 2013. 12. 20.
반응형
C# 에서 MSSQL Script 실행하기

간단한 방법이 있지만, 프로시저의 경우 실행시 오류가 발생한다.


How do I execute a large SQL script (with GO commands) from c#?
http://stackoverflow.com/questions/40814/how-do-i-execute-a-large-sql-script-with-go-commands-from-c 

How do I execute a large SQL script (with GO commands) from c#?의 소스를 조금 변경했다.
실제로 MSSQL에 줄바꿈으로 들어 갈때는 
"\r\n"을 넣어 주면 보기 좋게 프로시저의 줄바꿈 처리가 된다.

char(10) + char(13)이라고 누가 인터넷에 적었는 데 이건 좀..


private void ExecuteBatchNonQuery(string sql, SqlConnection conn) {
    string sqlBatch = string.Empty;
    SqlCommand cmd = new SqlCommand(string.Empty, conn);
    conn.Open();
    sql += "\nGO";   // make sure last batch is executed.
    try {
        foreach (string line in sql.Split(new string[2] { "\n", "\r" }, StringSplitOptions.RemoveEmptyEntries)) {
            if (line.ToUpperInvariant().Trim() == "GO") {
                cmd.CommandText = sqlBatch;
                cmd.ExecuteNonQuery();
                sqlBatch = string.Empty;
            } else {
                sqlBatch += line + "\r\n";
            }
        }            
    } finally {
        conn.Close();
    } 
}