通过OSQL命令执行SQL SERVER批SQL

通过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



posted on 2008-01-25 13:48  edobnet  阅读(4526)  评论(5编辑  收藏  举报