1398-04-27 00:44 اتچ دیتابیس به SQL Server
zahmah

 
سلام
آیا راهی هست که دیتابیس رو پس از نصب نرم افزار ، به صورت خودکار به اس کیو ال سرور اتچ کند؟
زبان: سی شارپ 2013
دیتابیس: اس کیو ال سرور 2014
روش اتصال به دیتابیس: Entity model
1398-04-27 15:42
حاجی شریفی
مؤسس سایت
 
سلام
1) اگر از EF-CodeFirst استفاده کنید، این امکان را دارید که خود برنامه به طور خودکار در اولین اجرا کل دیتابیس را ایجاد کند.
یعنی حتی نمیخواهد فایل mdf داشته باشید که بخواهید Attach کنید.

2) نسخه های SQL Server Express و SQL Server LocalDB برای برنامه های کوچک و جمع و جور و غیر شبکه ای مناسب هستند.
این نسخه ها توانایی کارکرد مستقیم با فایل mdf را بدون Attach دارند (در واقع نوعی Attach/Detach خودکار انجام میشود)

3) درهرصورت امکان Attach دستی فایل mdf موجود هم وجود دارد.
هم با تابع sp_attach_db و هم با فرمان CREATE DATABASE در SQL Server میتوانید دیتابیس خود را Attach کنید.
برای اطلاعات بیشتر میتوانید به لینک های روی کلمات فوق، مراجعه کنید.

البته باید فایل در جایی باشد که مجوز های NTFS لازم را داشته باشد و SQL Server بتواند به فایل دسترسی کامل داشته باشد.
بطور معمول Desktop یا MyDocument شما ، فضای خصوص شما هستند و نسخه های SQL Server Standard/Developer/Enterprise که از اکانت های مجزایی اجرا میشوند به این مسیرهای خصوصی دسترسی ندارند.
برای آزمایش راحت ، فایل mdf را به ریشه درایو D کپی کنید و آزمایشات تان را انجام دهید تا با خطاهای کمتری روبرو شوید.

نمونه پروژه بسیار قدیمی زیر میتواند دیتابیس را Attach کند.
http://support.h02.ir/fwlink/?LinkId=1001158667



کد به زبان VB.Net است و پروژه قدیمی است.
ولی کد خاصی ندارد و اصل کار ساده است، کافی است فرمانی مانند این را روی SQL Server اجرا کنید.
EXEC sp_attach_db
@dbname = N'DBNAME',
@filename1 = N'D:\FILE.MDF',
@filename2 = N'D:\FILE.LDF' ;


موفق باشید.
1398-04-30 21:41
zahmah

 
سلام
کدهای زیرمخصوص اجرا روی SQL هستند. چطوری توی سی شارپ ازشون استفاده کنم؟
EXEC sp_attach_db
@dbname = N'DBNAME',
@filename1 = N'D:\FILE.MDF',
@filename2 = N'D:\FILE.LDF' ;
1398-04-31 00:48
حاجی شریفی
مؤسس سایت
 
سلام
نقل قول نوشته شده توسط: zahmah
کدهای زیرمخصوص اجرا روی SQL هستند. چطوری توی سی شارپ ازشون استفاده کنم

با SqlCommand میتوانید دستورات SQL را برای اجرا و پاسخ به دیتابیس ارسال کنید !

using  (var  con = new  System.Data.SqlClient.SqlConnection( "---CONNECTIONSTRING---" ))
using (var com = new System.Data.SqlClient.SqlCommand( "---SQL---", con ))
{
con.Open() ;
com.ExecuteNonQuery() ;
}