日期:2014-05-17  浏览次数:20585 次

asp.net 执行.sql文件
Process sqlprocess = new Process();
  sqlprocess.StartInfo.FileName ="C:\\Program Files\\Microsoft SQL Server\\100\\Tools\\Binn\\SQLPS.exe";
  sqlprocess.StartInfo.Arguments = String.Format("-U {0} -P {1} -S {2} -i {3}", "sa", "yyb", "192.168.1.111", @localFile); //U为用户名,P为密码,S为目标服务器的ip,infile为数据库脚本所在的路径
  sqlprocess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
  //sqlprocess.StartInfo.UseShellExecute = false;
  //sqlprocess.StartInfo.RedirectStandardOutput = true; //重定向输出
  sqlprocess.Start();

  //System.IO.StreamReader sr = sqlprocess.StandardOutput;
  //Console.WriteLine(sr.ReadToEnd());
   
  sqlprocess.WaitForExit(); //等待程序执行.Sql脚本
  sqlprocess.Close();

我的程序执行这段代码,执行是没有报错,但我查看数据库中没有新建的表。
我的.sql文件是创建表的语句。
请哪位大哥大姐帮帮忙

------解决方案--------------------
asp.net默认运行帐号是匿名帐户,是没有权限执行exe程序的
------解决方案--------------------
如果是iis6以上,你可以看

若是iis6之前的版本,你可以把aspnet帐户加入到管理员组测试
------解决方案--------------------
干嘛这么麻烦呀,你直接把.sql放到服务器上,然后filestream读取.sql跟执行普通sql一样,ExecuteNonQuery
------解决方案--------------------
你可以循环一下.sql呀,
提出一个变量 string
然后每次遇到go的时候执行上次截取的变量string,然后清空,再开始读取,再遇到go的时候,再执行,再清空

直到执行完成,执行过程中,如果速度不慢的话sqlconnection可以不关闭,另外建议增加超时时间,已完成执行.sql的操作