通过OSQL命令执行SQL SERVER批SQL

文/edobnet  出处/博客园

通过System.Data.SqlClient命名空间只能执行单条SQL,或多个内容中间用;分开,不能执行类似等命令,有没有一种方法能类似查询分析器一样执行一些批命令呢,答案是通过OSQL来执行。
OSQL详细用法:http://technet.microsoft.com/zh-cn/library/ms162806.aspx
通地进程来调用:
    /**//// <summary>
        /// 执行OSQL命令
        /// </summary>
        public static  void ExcuteOsqlCmd(string cmd, string errorFile, string filePath)
        {
            System.Diagnostics.Process p = new System.Diagnostics.Process();

            p.StartInfo.FileName = "osql";
            p.StartInfo.Arguments = cmd;
            p.StartInfo.UseShellExecute = false;

            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow=true;
            p.Start();
            p.WaitForExit();
            //p.Close();
            int exitCode = p.ExitCode;
            if (exitCode != 0)
            {
                StreamReader sr = new StreamReader(errorFile, System.Text.Encoding.Default);
                string all = sr.ReadToEnd();
                sr.Close();
                //ExcuteOtherCmd(string.Format("notepad \"{0}\"", errorFile));
                throw new StepException(all);
            }

        }

调用如下:
string comm = string.Format(" -U {5} -P {0} -S {1} -d {2} -b -e  -i \"{3}\" -o \"{4}\"", pass,
                                        conn.DataSource,
                                        conn.Database,
                                        FilePath, errorFile,user);
Process.ExcuteOsqlCmd(comm, errorFile, FilePath);//直接执行一个SQL文件,路径为FilePath

 感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
 您可能对 [SQL Server] 的这些文章也感兴趣:

SQLServer身份验证管理子程序
SQL Server 2005 SSIS 技巧:动态目的文件名
Microsoft SQL Server 2005 概述
Visual Studio 2008中的SQL数据库发布
SQL Server 7.0六种数据移动方法
SQL Server 2008中的新语句:MERGE
SQL Server存储图像数据的策略与方法
SQL Reporting Service 2000配置步骤
SQL Server 利用排序规则计算汉字笔划和取得拼音首字母
如何运用MSSQL sp自制未公开的加密函数