ورود

View Full Version : مشکل با Local Database



Shahab_H
سه شنبه 16 اسفند 1390, 22:21 عصر
با سلام
من از VS 2010 و Sql Server 2008 R2 استفاده می کنم.
یک دیتابیس با SQL Server ساختم و Detach کردم و به پروژه به عنوان Local Database اضافه ش کردم و با LINQ باهاش کار می کنم. مشکلی نداشت یدفعه این 2 ارور رو داد
Error 1 Unable to copy file "C:\Users\Shahab\documents\visual studio 2010\Projects\PhoneBook2\PhoneBook2\Phone Book.mdf" to "bin\Debug\Phone Book.mdf". The process cannot access the file 'bin\Debug\Phone Book.mdf' because it is being used by another process. PhoneBook2

Error 2 Unable to copy file "C:\Users\Shahab\documents\visual studio 2010\Projects\PhoneBook2\PhoneBook2\Phone Book_log.ldf" to "bin\Debug\Phone Book_log.ldf". The process cannot access the file 'bin\Debug\Phone Book_log.ldf' because it is being used by another process. PhoneBook2

وقتی دیتابیس رو پاک می کنم و دوباره Add می کنم مشکل حل می شه ولی بعد از 1-2 بار اجرا کردن دوباره به همین مشکل می رسم. لطفا راهنمایی کنید.

وقتی هم روی local db می رم و مقدار copy to output direcotory رو never می کنم درست میشه.
کلا اگر ممکنه راه صحیح اضافه کردن local db به پروژه رو توضیح بدین. من از رو دیتا بیسم یه کپی گرفتم گذاشتم تو یه درایو دیگه و دوباره به SQL Server اضافه ش کردم و برنامه از کار میفته می گه این تو sql server بازه! آخه مگه کپی ها با هم فرق ندارن؟ من که گیج شدم! برنامه داره از اون کپی دیتا بیس ها که در دایرکتوری خود برنامه درست کرده استفاده می کنه؟ از اونی که اد شه؟ ...

با تشکر

aghayex
پنج شنبه 18 اسفند 1390, 15:56 عصر
دوست عزیز کلا اتصال در اس کیو ال به دو صورت هستش یکی اینه بری دیتابیستو تو مدیریت اس کیو ال اتچ کنی و فقط در برنامت میری از اون استفاده می کنی موقعی که برنامتو هم می بندی این نیست که دیتابیست دی اتچ شده و تا زمانی که نری در مدیریت اس کیو ال دیتابیستو دی اتچ نکنی همچنان اتچ هست .
دومی به این صورت هست که شما از نسخه اکسپرس اس کیو ال استفاده کنی که نیازی به اتچ و دی اتچ دستی شما نداره و وقتی که برنامت اجرا شد دیتابیس اتچ می شه و و وقتی برنامت بسته شد دیتابیست دی اتچ میشه .
حلا شما از کدوم طریق به دیتابیست وصل شدی ؟
پیغام های بالا هم اینو میگه که دیتابیس توسط یه برنامه در حال استفاده هست.

Shahab_H
پنج شنبه 18 اسفند 1390, 22:52 عصر
ممنون از توجهتون
من اول Database رو باید Microsoft SQL Server ساختم و Detach کردم و بعد رفتم تو Visual Studio از طریق Server Explorer به پروژه اضافه ش کردم
Data Source= Microsoft SQL Server (Client)
Data Server: SQLSERVER
و بعد گزینه ی Attach a database file رو انتخاب کردم و فایل MDF رو انتخاب کردم.

این کدوم روشه؟ :بامزه:

کلا کدوم روش بهتره؟ و راه درستش چیه؟ من برای این که دیگه با کدهای SQL و DataAdapter و ... کار نکنم و بتونم راحت با LINQ کار کنم این کارو کردم.

aghayex
جمعه 19 اسفند 1390, 23:14 عصر
ببین دوست عزیز اگه وقت به اندازه کافی داری بتونی بری سراغ تکنولوِی entity کارت خیلی خیلی راحت می شه و دیگه با این ابزار که گفتید سروکار ندارید . این تکنولوژی که گفتم جدید تر از لینک تو اس کیو ال هست و کلا شما در اونجا با اشیاء سروکار دارید .
فیلم های آموزشیش تو اینترنت هست بتونی دانلود کنی عالی هست .
در مورد دیتابیس صحبت های زیادی تو این سایت شده که از چه دیتابیسی استفاده بشه که چیزی که من از سر جمعشون فهمیدم اینه که شما بسته حداکثر حجم اطلاعاتتون که در برنامه دارید یه دیتا بیس انتخاب می کنید که این دیتابیس می تونه به ترتیب حجم اطلاعات به صورت زیر و از حجم کم به بالا باشه :
یه فایل باینری یا تکس باشه
یه فایل xaml
یه دیتابیس اکسس یا اس کیو ال کامپکت و ...
یه دیتابیس اس کیو ال (‌ این نوع دیتابیس دارای مدیریت هست یعنی توست برنامه اس کیو ال مدیریت میشه و اگه بخاهی از این نوع دیتابیس استفاده کنی باید قبلا اس کیو ال متناسب با اونو در سیستمت نصب کنی )
یه دیتابیس اوراکل باشه(‌ این نوع دیتابیس دارای مدیریت هست یعنی توست برنامه اوراکل مدیریت میشه و اگه بخاهی از این نوع دیتابیس استفاده کنی باید قبلا اوراکل متناسب با اونو در سیستمت نصب کنی )
سه مورد اول که نیاز به پیش نصب ندارن .
حالا فرضا شما خواستید از دیتابیس اس کیو ال استفاده کنید می تونید از نسخه اکسپرس اون استفاده کنید و یا از نسخه های دیگه که تا حالا من خودم از نسخه اکسپرس استفاده می کنم به چند دلیل :
1 - نیاز به اتچ و یا دی اتچ کردن دستی نداره
2 - نصب اون از یه برنامه ساده هم آسون تره
اما محدودیت هایی هم داره :
1 - یک سری سرویس ها رو در اون قرار ندادن که در نسخه های دیگه هست اما ما هیعنی خودم تا حالا به اون سرویس ها نیاز نداشتم و نخواهم داشت.

Shahab_H
یک شنبه 21 اسفند 1390, 12:01 عصر
خیلی خیلی خیلی ممنون به خاطر توضیحاتتون و وقنی که گذاشتید :)
من معمولا فیلم های آموزشی رو از شرکت http://www.farinsoft.com/shop می گیرم ولی سرچ کردم برای entity frameworks خیلی محصول داره با سرفصل های متفاوت! شما فیلم آموزشی چه موسسه ای را توصیه می کنید؟
برای استفاده از express باید چی کار کنم دقیقا؟ همون کاری که می کردم data source رو sql express انتخاب کنم؟ باید Database رو داخل برنامه باید ساخت دیگه؟

با تشکر فراوان

aghayex
یک شنبه 21 اسفند 1390, 21:54 عصر
کانکشن استرینگ اتصال به اکسپرس به صورت زیر است .

SqlConnection sqlcon = new SqlConnection("Data Source=.\\SQLEXPRESS AttachDbFilename=|DataDirectory|\\db\\Database1.md f;Integrated Security=True")
DataTable rad = new DataTable();
SqlDataAdapter sqldb = new SqlDataAdapter();
sqldb.SelectCommand = new SqlCommand();
sqldb.SelectCommand.Connection = sqlcon;
sqldb.SelectCommand.CommandText = "read_id";
sqldb.SelectCommand.CommandType = CommandType.StoredProcedure;
sqldb.SelectCommand.Parameters.AddWithValue("@id", id.Content);
sqlcon.Open();
sqldb.SelectCommand.ExecuteNonQuery();
sqldb.Fill(rad);
sqlcon.Close();