امروز يكي از برنامهها (برنامه ASP.Net) با مشكل زير مواجه شده بود:
پيغام خطا:
اتصال با سرور اس كيوال قطع شده است. لطفا با مسئول مربوطه هماهنگ نمائيد.
SQLErr:4060
اين خطا به معناي عدم امكان باز كردن ديتابيس است.
در طي اين مدت با موارد زيادي از اين دست (مشكلات مختلف عدم امكان برقراري ارتباط با اس كيوال سرور) برخورد داشتم كه خلاصه تمام آنها تابع زير شده است:
public void CheckSQLServerStat(Exception ex)
{
try
{
SqlException ar = (SqlException) ex;
switch (ar.Number)
{
case 2:
case 11:
case 17:
case 40:
case 4060:
case 1326:
case 17142:
case 18456:
HttpContext.Current.Response.Write("<br/>" + "اتصال با سرور اس كيوال قطع شده است. لطفا با مسئول مربوطه هماهنگ نمائيد." + "<br/> SQLErr:" + ar.Number + "<br/>");
break;
}
}catch{}
}
به management studio اس كيوال سرور كه مراجعه كردم، علامت خاصي كنار نام ديتابيس نبود فقط برخلاف ساير ديتابيسها كه آيكون + مربوط به باز شدن tree آن وجود دارد، اين يك مورد آنرا نداشت. بر روي نام ديتابيس كليك راست كردم و انتخاب خواص، خطاي زير نمايش داده شد:
------------------------------
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
Database 'dbName' cannot be opened due to inaccessible files or insufficient memory or disk space. See the SQL Server errorlog for details. (Microsoft SQL Server, Error: 945)
------------------------------
use master;
alter database dbName set OFFLINE;
alter database dbName set online;