با سلام
دوستان من از این کدها که جناب رضوی گذاشتند برای اتچ کردن استفاده میکنم:
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,Messag eBoxIcon.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با موفقیت به دیتابیس اتچ شده
ایا کسی میدونه مشکل چیه؟
با تشکر