hojjat_gh
چهارشنبه 02 اردیبهشت 1388, 12:51 عصر
با سلام
دوستان من از این کدها که جناب رضوی گذاشتند برای اتچ کردن استفاده میکنم:
private void checkDB()
{
string csMaster = "Data Source=.\sqlexpress;Initial Catalog=Master;Integrated Security=True";
SqlConnection con = new SqlConnection(csMaster);
SqlCommand com = new SqlCommand("select * from sys.databases where name= 'DBx'", con);
con.Open();
object obj = com.ExecuteScalar();
if (obj == null)
{
MessageBox.Show("بانک اطلاعاتی برنامه در پایگاه داده قرار ندارد \n لطفا تا قرارگیری آن کمی مننظر بمانید","خطا",MessageBoxButtons.OK,MessageBoxIcon.Error);
string strCmd = "EXECUTE sp_attach_db @dbname,@filename1";
com.CommandText = strCmd;
com.Parameters.Clear();
com.Parameters.AddWithValue("@dbname", "DBx");
com.Parameters.AddWithValue("@filename1", Application.StartupPath + @"\DataBase\DBx.mdf");
com.ExecuteNonQuery();
com.CommandText = "select * from sys.databases where name= 'DBx'";
obj = com.ExecuteScalar();
if (obj != null)
{
MessageBox.Show("بانک اطلاعاتی با موفقیت بارگزاری شد");
}
}
con.Close();
}
واین کدها درسیستم مبدا چه با سورس و چه با ستاپ مشکلی ندارند
ولی زمانی که برنامه روی سیستم مقصد نصب میشه فایل mdf,Ldf رو کپی میکنه ولی موقع اجرا نمیتونه اون رو اتچ کنه و پیغام زیر رو میده:
CREATE FILE encountered operating system error 5(Access is denied.) while attempting to open or create the physical file 'D:\Program Files\Default Company Name\DBx\DataBase\DBx_log.LDF'.
Could not open new database 'DBx'. CREATE DATABASE is aborted.
File activation failure. The physical file name "F:\DBx 1388 01 30\bin\Debug\DataBase\DBx_log.LDF" may be incorrect.
این مسیر دومی(F:) تو پیغام خطا همون مسیر سیستم مبدا که فایل MDFبا موفقیت به دیتابیس اتچ شده
ایا کسی میدونه مشکل چیه؟
با تشکر
دوستان من از این کدها که جناب رضوی گذاشتند برای اتچ کردن استفاده میکنم:
private void checkDB()
{
string csMaster = "Data Source=.\sqlexpress;Initial Catalog=Master;Integrated Security=True";
SqlConnection con = new SqlConnection(csMaster);
SqlCommand com = new SqlCommand("select * from sys.databases where name= 'DBx'", con);
con.Open();
object obj = com.ExecuteScalar();
if (obj == null)
{
MessageBox.Show("بانک اطلاعاتی برنامه در پایگاه داده قرار ندارد \n لطفا تا قرارگیری آن کمی مننظر بمانید","خطا",MessageBoxButtons.OK,MessageBoxIcon.Error);
string strCmd = "EXECUTE sp_attach_db @dbname,@filename1";
com.CommandText = strCmd;
com.Parameters.Clear();
com.Parameters.AddWithValue("@dbname", "DBx");
com.Parameters.AddWithValue("@filename1", Application.StartupPath + @"\DataBase\DBx.mdf");
com.ExecuteNonQuery();
com.CommandText = "select * from sys.databases where name= 'DBx'";
obj = com.ExecuteScalar();
if (obj != null)
{
MessageBox.Show("بانک اطلاعاتی با موفقیت بارگزاری شد");
}
}
con.Close();
}
واین کدها درسیستم مبدا چه با سورس و چه با ستاپ مشکلی ندارند
ولی زمانی که برنامه روی سیستم مقصد نصب میشه فایل mdf,Ldf رو کپی میکنه ولی موقع اجرا نمیتونه اون رو اتچ کنه و پیغام زیر رو میده:
CREATE FILE encountered operating system error 5(Access is denied.) while attempting to open or create the physical file 'D:\Program Files\Default Company Name\DBx\DataBase\DBx_log.LDF'.
Could not open new database 'DBx'. CREATE DATABASE is aborted.
File activation failure. The physical file name "F:\DBx 1388 01 30\bin\Debug\DataBase\DBx_log.LDF" may be incorrect.
این مسیر دومی(F:) تو پیغام خطا همون مسیر سیستم مبدا که فایل MDFبا موفقیت به دیتابیس اتچ شده
ایا کسی میدونه مشکل چیه؟
با تشکر