c#重启sql服务后 sqlcommand无法执行问题

popkiki648 2010-01-07 03:36:03
程序思路:
执行一个sqlcommand
执行完,重启一次sqlserver服务
等服务重启完毕,在执行sqlcommand

循环以上

connection是以windows用户名登陆

问题:
但在第一次执行完,并重启服务后,出现
“已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。) ”
...全文
186 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
popkiki648 2010-01-08
  • 打赏
  • 举报
回复
问题已解决
每次之重启后,清空连接池,即可
SqlConnection.ClearAllPools();

那位大侠可以详解下
popkiki648 2010-01-08
  • 打赏
  • 举报
回复
cmd.bat里是重启sqlserver服务的命令
popkiki648 2010-01-08
  • 打赏
  • 举报
回复
查阅msdn得到的可能原因:
如果存在与已消失的服务器的连接,那么即使连接池管理程序未检测到已断开的连接并将其标记为无效,仍有可能将此连接从池中取出。这种情况是因为检查连接是否仍有效的系统开销将造成与服务器的另一次往返,从而抵消了池进程的优势。发生此情况时,初次尝试使用该连接将检测连接是否曾断开,并引发异常
yang3389r 2010-01-07
  • 打赏
  • 举报
回复
╮(╯▽╰)╭ 打嗝~!
xr396464010 2010-01-07
  • 打赏
  • 举报
回复
我很是郁闷, Process.Start("cmd.bat"); 这句的意义在哪呢?我也是新手不太懂好奇问下。。
kensouterry 2010-01-07
  • 打赏
  • 举报
回复
为什么要重启服务呢?不太理解!
popkiki648 2010-01-07
  • 打赏
  • 举报
回复


foreach (DirectoryInfo tt in dir.GetDirectories("xuewei(*)*"))
{

string root_dir = tt.FullName;
string temp = tt.Name;

string table_dir = table_dir_root + temp;
string table_mdb_hb = table_mdb_hb_root + temp;

mdb_dir_info();

//释放SQL内存
sqlserver_restart(service);

for (int i = 20; i > 0; i--)
{
Thread.Sleep(1000);
this.Invoke(showlabeldelegate, new object[] { i });
}



private void mdb_dir_info()
{

using (SqlConnection pubconnection = new SqlConnection("Server=" + server + ";initial catalog=" + database_out + ";Integrated Security=SSPI"))
{

pubconnection.Open();

SqlCommand cmd = new SqlCommand("", pubconnection);
cmd.CommandTimeout = 5000;



cmd.CommandText = "if exists(select name from sys.objects where name ='" + table_dir + "' and type='u') begin drop table [" + table_dir + "] end"

cmd.ExecuteNonQuery();
cmd.Dispose();
pubconnection.Close();
}
}

private void sqlserver_restart(string service_name)
{

StreamWriter text = new StreamWriter("cmd.bat", false, Encoding.Default);
text.WriteLine("net "+"stop " + service);
text.WriteLine("net "+"start " + service);
text.WriteLine("");
text.Close();

Process.Start("cmd.bat");



}

nkboy 2010-01-07
  • 打赏
  • 举报
回复
sql重启的过程是需要时间的,你可以等一段时间在连接执行、。
jackson627 2010-01-07
  • 打赏
  • 举报
回复
把代码贴出来
popkiki648 2010-01-07
  • 打赏
  • 举报
回复
重启完后,重新创建了sqlconnection,能够连接上,就是在执行sqlcommand的时候出错
jackson627 2010-01-07
  • 打赏
  • 举报
回复
你重启完sql服务后,就直接执行sqlcommand吗?那你没有重新创建sqlconnection吗?
mytimes_walker 2010-01-07
  • 打赏
  • 举报
回复
你直接把电脑砸了吧!

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧