According to MSDN,
GO is not a Transact-SQL statement; it is a command recognized by the sqlcmd and osql utilities and SQL Server Management Studio Code editor.
To run the SQL script file using ADO.NET, there are 3 methods. The first method is to remove all "GO" statement in the file before running them in ADO.NET. Second method is to perform a split (tokenize) the file content using "GO" as the delimiter. The third method is to make use of SQL Server Management Objects (SMO).
The below is a code snippet applying the third method - Using SMO. Do take note that references to Microsoft.SqlServer.Smo.dll and Microsoft.SqlServer.ConnectionInfo.dll are required.
using System;
using System.IO;
using System.Data.SqlClient;
using System.Collections.Generic;
using Microsoft.SqlServer.Management.Smo;
using Microsoft.SqlServer.Management.Common;
public class RunSQLScriptUsingSMO
{
public static void Main()
{
string sqlFile = @"C:\script.sql";
string connectionString = "Data Source=COM\InstanceName;Initial Catalog=TEST;Integrated Security=True";
StreamReader sr = new StreamReader(sqlFile);
string sql = sr.ReadToEnd();
SqlConnection connection = new SqlConnection(connectionString);
Server server = new Server(new ServerConnection(connection));
server.ConnectionContext.ExecuteNonQuery(script);
}
}
No comments:
Post a Comment
Do provide your constructive comment. I appreciate that.