در مورد کانکشن بارها و بارها در سایت بحث شده. کاش اول جستجو میکردی دوست عزیز.
بیاید با کانکشن و server ( سرویس دهنده) منطقی برخورد کنیم. به نظرتون آیا روی یک سیستم دیگه سرویس دهنده ای به نام md2008 وجود داره؟ قطعا نه!.
باید نامی رو به عنوان instance در جلوی server بنویسیم که وجود خارجی داشته باشه.
چندین راه وجود داره :
یکی اینکه روی سیستم مشتری یک sqlexpress که ورژنش حداقل مساوی با ورژنی باشه که باهاش دیتابیس رو روی سیستم خودتون ساختید.
راه دوم اینه که برای sql server ای که روی سیستم مشتری نصب میکنید یک instance خاص در نظر بگیرید. (مثل همون چیزی که روی سیستم خودتون دارید. مثلا من میتونم روی سیستم مقصد sql ای نصب کنم که نام instance اون md2008 باشه.در اینصورت برنامه بدرستی کار خواهد کرد که البته بسیار بدیهی هم هست).
راه بعدی اینه که همه instance های موجود بر روی سیستم مشتری رو با کدنویسی بدست بیارید و اونها رو یکی یکی تست کنید که کدوم instance جوابگو هست. این برای حالتی کاربرد داره که معمولا چند نسخه از sql server روی سیستم مقصد نصب هست و میخوایم ببینیم دیتابیس ما با کدوم instance کار میکنه.
نکته ای که در تمام این روش ها وجود داره اینه که ببینید دیتابیس شما روی کدوم instance نصب شده (Attach شده).
ساده ترین راه همون راه اول و استفاده از یک sqlexpress هست که در اینصورت کانکشن استرینگ رو میتونید بصورت زیر بنویسید:
server=.\\SQLEXPRESS;Database=univ;Integrated Security=True
یادتون نره کد بالا زمانی کار میکنه که دیتابیس روی سیستم مشتری Attach شده باشه. برای اتچ کردن دیتابیس هم روش های زیادی وجود داره. میتونی از اتچ خودکار استفاده کنی یا با دستورات sql دیتابیس رو اتچ کنید.
یک نمونه از اتچ خودکار و کانکشن استرینگ مربوطه بصورت زیر هست (باید دیتابیس رو در کنار فایل اجرایی برنامه در پوشه bin\debuge قرار بدید):
Data Source=(local)\\SQLEXPRESS;AttachDbFilename=|DataD irectory|\MyDatabaseName.mdf;Integrated Security=True
در این باره خیلی بحث شده که با جستجو به نتیجه خواهید رسید.
موفق باشید.