//执行按钮事件
private void btnExec_Click(object sender, EventArgs e)
        {
            CreateDataBase(txtUserName.Text, txtUserPwd.Text, cboServerList.SelectedItem.ToString());
        }
        /// <summary>
        /// 调用Osql.exe执行建库脚本
        /// </summary>
        /// <param name="uid">数据库访问用户名</param>
        /// <param name="pwd">数据库访问密码</param>
        /// <param name="servername">本地服务器名称</param>
        private void CreateDataBase(string uid, string pwd, string servername)
        {
            Process p = new Process();
            p.StartInfo.FileName = "cmd.exe";
            p.StartInfo.UseShellExecute = false;
            p.StartInfo.RedirectStandardInput = true;
            p.StartInfo.RedirectStandardOutput = false;
            p.StartInfo.RedirectStandardError = true;
            p.StartInfo.CreateNoWindow = true;
            string Path = System.Windows.Forms.Application.StartupPath;
            string Parameter = "osql.exe -U " + uid + " -P " + pwd + " -S " + servername + " -i " + Path + @"\databaseSQL.sql";
            try
            {
                this.Cursor = System.Windows.Forms.Cursors.WaitCursor;
                p.Start();
                p.StandardInput.WriteLine(Parameter);
                p.StandardInput.WriteLine("exit");
                p.StandardInput.WriteLine("exit");
                p.WaitForExit();
                p.Close();
                //怎么确定执行完了?
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                this.Close();
            }
        }        ///   <summary>   
        ///   得到所有本地网络中可使用的SQL服务器列表   
        ///   </summary>   
        ///   <returns>服务器名称列表</returns>   
        public string[] GetServers()
        {
            string[] p_strServerList = null;
            try
            {
                SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
                SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers();
                if (sqlServers.Count > 0)
                {
                    p_strServerList = new string[sqlServers.Count];
                    for (int i = 0; i < sqlServers.Count; i++)
                    {
                        string srv = sqlServers.Item(i + 1);
                        if (srv != null)
                        {
                            p_strServerList[i] = srv;
                        }
                    }
                    for (int i = 0; i < p_strServerList.Length; i++)
                    {
                        cboServerList.Items.Add(p_strServerList[i]);
                    }
                    cboServerList.SelectedIndex = 0;
                }
                return p_strServerList;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            return p_strServerList;
        }
        //手动获取本地SqlServer服务器名称
        private void btnGetList_Click(object sender, EventArgs e)
        {
            GetServers();
        }服务器都能正常获取,点击执行后感觉就一直在等待...
数据库是SqlServer 2000
进数据库去看没有想要的数据库
高手指点一下