PDA

View Full Version : استفاده از بانک sql در نرم افزار بدون نیاز به اتچ کردن



maktab
دوشنبه 09 اردیبهشت 1392, 11:45 صبح
سلام
من برنامه ای با دات نت 4 و sql 2008 نوشتم. حالا چون میخوام آن را بصورت نصبی کنم. نیاز دارم بانکم دیگه نیاز به اتچ شدن نداشته باشه. کانکشن را باید چی تنظیم کنم که دیگه نیاز به اتچ شدن نداشته باشه؟
من از Entity Framework استفاده میکنم.

اگر تنظیمات دیگه ای هم میخواد لطفا بگید.
ممنون

ali_up1
دوشنبه 09 اردیبهشت 1392, 12:00 عصر
سلام
من برنامه ای با دات نت 4 و sql 2008 نوشتم. حالا چون میخوام آن را بصورت نصبی کنم. نیاز دارم بانکم دیگه نیاز به اتچ شدن نداشته باشه. کانکشن را باید چی تنظیم کنم که دیگه نیاز به اتچ شدن نداشته باشه؟
من از Entity Framework استفاده میکنم.

اگر تنظیمات دیگه ای هم میخواد لطفا بگید.
ممنون

سلام رفیق
من ی بار این کارو کردم نمیدونم تو چیکار کردی ولی من
توی خوده solution امدم یه localdatabase اضافه کردم تنظیماتشم همونجا ازم گرفت
اینو تست کردی؟

maktab
دوشنبه 09 اردیبهشت 1392, 12:24 عصر
من وقتی که در حال نوشتن برنامه بودم. بانکم داخل sql اتچ شده بود و بخاطر همین کانکشن استرینگم به این شکله:



<add name="Connection1" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.;Initial Catalog=DBP1;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />


که این کانکشن داره به بانک DBP1 داخل sql اشاره میکنه. حالا من میخوام این بانک را داخل پوشه ای بذارم و هنگام نصب این بانک پیش برنامه اصلی قرار بگیره و دیگه نیازی به اتچ کردن آن نباشه. کانکشن را بایه به چی تغییر بدم؟

ali_up1
دوشنبه 09 اردیبهشت 1392, 12:36 عصر
من وقتی که در حال نوشتن برنامه بودم. بانکم داخل sql اتچ شده بود و بخاطر همین کانکشن استرینگم به این شکله:



<add name="Connection1" connectionString="metadata=res://*/Model.csdl|res://*/Model.ssdl|res://*/Model.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.;Initial Catalog=DBP1;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />


که این کانکشن داره به بانک DBP1 داخل sql اشاره میکنه. حالا من میخوام این بانک را داخل پوشه ای بذارم و هنگام نصب این بانک پیش برنامه اصلی قرار بگیره و دیگه نیازی به اتچ کردن آن نباشه. کانکشن را بایه به چی تغییر بدم؟

اره connetion string منم اون موقع تقریبا این شکلی بود.
من اگه جای شما بودم راحت ترین راه رو انتخواب میکردم یعنی توی پروژه فولدرمو میساختم توی فولدر new item و database رو اضافه میکردم حالا دوباره تنظیمش میکردم که خودش connation string رو درست کنه
البته ناگفته نمونه من جایی خوندم که نوشته بود این کار فقط توی sql express جواب میده

Mahmoud.Afrad
دوشنبه 09 اردیبهشت 1392, 13:34 عصر
اگر میخواهید اتچ اتومایک باشه باید از نسخه express استفاده کنید.(میتونید به پیش نیازها اضافه کنید)
کانکشن رو به اینصورت تنظیم کنید
<add name="Database1Entities" connectionString="metadata=res://*/Model.Model1.csdl|res://*/Model.Model1.ssdl|res://*/Model.Model1.msl;provider=System.Data.SqlClient;pr ovider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;initial catalog=Database1;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
نام دیتابیس(در دو جا) و مسیر رو مطابق نام دیتابیس و مسیرش تغییر بدید.

در هنگام ساخت نسخه نصب نیازی نیست دیتابیس رو به ستاپ اضافه کنید. میتونید از طریق EF دیتابیس رو با کدنویسی ایجاد کنید. در کلاس Program میتونید اینکار رو انجام بدید. چک کنید اگر دیتابیس موجود نبود بسازیدش.
مثال:

[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);

// Create Database if it is not exist
using (Database1Entities context = new Database1Entities())
{
if (!context.DatabaseExists())
{
context.CreateDatabase();
}
}

Application.Run(new Forms.FrmMain());
}

mohammad2407
دوشنبه 09 اردیبهشت 1392, 13:45 عصر
اقا محمود کد بالا به صورت استاندارد و اصولی خیلی خوبه ولی اگر یک وقت مشکلی پیش بیاد که فایل های بانک از مسیر sql express حذف بشن نرم افزار دیگه نمیتونه بانک ایجاد کنه

حتی اگر sql express پاک بشه و از دوباره نصب بشه

Mahmoud.Afrad
دوشنبه 09 اردیبهشت 1392, 14:03 عصر
اقا محمود کد بالا به صورت استاندارد و اصولی خیلی خوبه ولی اگر یک وقت مشکلی پیش بیاد که فایل های بانک از مسیر sql express حذف بشن نرم افزار دیگه نمیتونه بانک ایجاد کنه

حتی اگر sql express پاک بشه و از دوباره نصب بشه
اگر منظورت کاربر نهایی هست که با این کار اطلاعاتش از بین میره و عواقبش به عهده خودشه.
اگر هم در زمان برنامه نویسی منظورت هست Copy to output دیتابیس را روی Copy always قرار بدید تا در زمان دیباگ مشکلی نباشه.

mohammad2407
دوشنبه 09 اردیبهشت 1392, 14:08 عصر
اگر هم در زمان برنامه نویسی منظورت هست Copy to output دیتابیس را روی Copy always قرار بدید تا در زمان دیباگ مشکلی نباشه.

اره . الان من دیتا بیسم خیلی تغییرات داشته ولی وقتی برنامه جدید اجرا میکنم روی دیتا بیس قبلی مشکل داره

اقا محمود این Copy alwaysکجا هست ؟ و به چه صورت عمل میکنه :متفکر:

maktab
دوشنبه 09 اردیبهشت 1392, 14:31 عصر
اگر میخواهید اتچ اتومایک باشه باید از نسخه express استفاده کنید.(میتونید به پیش نیازها اضافه کنید)


در هنگام ساخت نسخه نصب نیازی نیست دیتابیس رو به ستاپ اضافه کنید. میتونید از طریق EF دیتابیس رو با کدنویسی ایجاد کنید. در کلاس Program میتونید اینکار رو انجام بدید. چک کنید اگر دیتابیس موجود نبود


نسخه express را هنگام نصب باید استفاده کنم (بر روی سیستم کاربر) یا اینکه هنگام برنامه نویسی؟
چرا تاکید دارید که دیتابیس را به ستاپ اضافه نکنیم؟ اگر این کار را بکنیم مشکلی ایجاد میشه؟

Mahmoud.Afrad
دوشنبه 09 اردیبهشت 1392, 14:42 عصر
نسخه express را هنگام نصب باید استفاده کنم (بر روی سیستم کاربر) یا اینکه هنگام برنامه نویسی؟
چرا تاکید دارید که دیتابیس را به ستاپ اضافه نکنیم؟ اگر این کار را بکنیم مشکلی ایجاد میشه؟
هر دو.
چون اگر دیتابیس جزئی از ستاپ باشه احتمالش هست کاربر به هر دلیلی برنامه رو مجدد نصب کنه(برای repairو...) که در اینصورت دیتتابیس قبلی از بین میره. در ضمن با استفاده از کدنویسی میتونید به کاربر این اجازه رو بدید دیتابیس رو هر جا خواست ایجاد کنه(البته در اینحالت کانکشن رو باید بسازید و در App.config جایگذین کنید.

راه دیگه هم اینه که کانکشن رو به همون صورت بالا اصلاح کنید. منتها دیتابیس رو باید در Sqlserver express بسازید و به پروژه منتقل کنید.

maktab
دوشنبه 09 اردیبهشت 1392, 14:50 عصر
راه دیگه هم اینه که کانکشن رو به همون صورت بالا اصلاح کنید. منتها دیتابیس رو باید در Sqlserver express بسازید و به پروژه منتقل کنید.

برای غیر express باید چکار کرد؟
من نمیخوام کل sql server را در سیستم کاربر نصب کنم و بعد کاربر بره دیتابیس را اتچ کنه. راه پیشنهادی شما چیه؟

tahamishebaran
دوشنبه 09 اردیبهشت 1392, 17:05 عصر
سلام دوستان
من توی کارهام از خود ویژوال استدیو استفاده میکنم . دیتا بیس رو همونجا تعریف میکنم و بدون هیچ اتچ کردنی تنها با تعریف کانکشن استرینگ در web.config از دیتا بیس استفاده مکنم .
این هم چیزی که توی وب کانفیگ اضافه میکنم

<connectionStrings>
<add name="ConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
</connectionStrings>

Mahmoud.Afrad
دوشنبه 09 اردیبهشت 1392, 18:28 عصر
برای غیر express باید چکار کرد؟
من نمیخوام کل sql server را در سیستم کاربر نصب کنم و بعد کاربر بره دیتابیس را اتچ کنه. راه پیشنهادی شما چیه؟
برای express یکبار توسط خود ویژوال استادیو دیتابیس رو ایجاد و مدل رو از روی اون بسازید.کانکشن استرینگ قبلی رو پاک کنید.

برای غیر express باید نسخه MSsqlserver مناسب نصب بشه ولی اتچ رو توسط کد میتونی انجام بدی.

maktab
شنبه 19 مرداد 1392, 19:37 عصر
برای غیر express باید نسخه MSsqlserver مناسب نصب بشه ولی اتچ رو توسط کد میتونی انجام بدی.

من دیتابیسم را در نسخه استاندارد ساختم برای همین کانکشن من "." هست. خب برای این، باید چکار کنم؟ چطور میشه از طریق کد نویسی اتچ کنم؟
به صرفه تره بیام و دیتابیسم را به SQLEXPRESS تبدیل کنم؟ روشش چطوریه؟

هدف اول: دیتابیس کم حجم بر روی سیستم مشتری

ویرایش:
الان چک کردم فکر کنم نمیشه از بک آپ های استاندارد در SQLEXPRESS استفاده کرد و چون مشتری ممکنه چندتا بک آپ داشته باشه پس اگر نتیجه ی من درست باشه بهتره آن را تبدیل نکنم و از همان روش کدنویسی برای اتچ کردن استفاده کنم. خب حالا باید چه ورژنی را با ستاپ نصب کنم؟ استاندارد؟ در ستاپ وجود داره؟ از طریق کد نویسی چطور میشه اتچ کرد؟

Mahmoud.Afrad
شنبه 19 مرداد 1392, 19:56 عصر
نسخه Express محدودیت حجم 4گیگ داره. اگر کارتون رو راه میندازه ازش استفاده کنید.

برای تبدیل دیتابیس، از جداول ، ویوها ، استوپروسیجرها و هر آنچه در دیتابیس تعریف کردی اسکریپت بگیر. حالا کافیه به نسخه express متصل بشی و یک دیتابیس بسازی. و بعد این اسکریپت را روش اجرا کنی.

maktab
شنبه 19 مرداد 1392, 20:05 عصر
سوال قبلی ویرایش شد...
بهتره من از نسخه استاندارد استفاده کنم. چطور میشه از طریق کدنویسی اتچ کرد؟ و نیازه چه نسخه ای در نصب اضافه بشه؟

Mahmoud.Afrad
شنبه 19 مرداد 1392, 21:56 عصر
از sp سیستمی sp_attach_db میتونی استفاده کنی.

SqlConnection con = new SqlConnection(@"Data Source=(local);Initial Catalog=master;Integrated Security=True");
SqlCommand cmd = new SqlCommand
{
Connection = con,
CommandText = @"use master exec sp_attach_db @DataBaseName , @DataBaseAddress"
};
cmd.Parameters.AddWithValue("@DataBaseName", "dbname");
cmd.Parameters.AddWithValue("@DataBaseAddress", @"database file (.mdf) address");
try
{
if (con.State != System.Data.ConnectionState.Open)
con.Open();

cmd.ExecuteNonQuery();
MessageBox.Show("دیتابیس با موفقیت اتچ شد");
}
catch (SqlException sqlex)
{
if (sqlex.Number == 1801)
MessageBox.Show("دیتابیسی با همین نام از قبل موجود است");
else
MessageBox.Show(sqlex.Message);
}
finally
{
if (con.State != System.Data.ConnectionState.Closed)
con.Close();
}

dbname نامی هست که دیتابیس با اون قابل شناسایی هست و برای اتصال به دیتابیس باید این نام رو در کانکشن به کار ببرید.
database file (.mdf) address باید آدرس فایل دیتابیس رو بهش بدید.

maktab
شنبه 19 مرداد 1392, 22:58 عصر
خب در هنگام نصب باید چه چیزی به فایل نصب اضافه کنم؟ چه نسخه ای از sql؟

maktab
شنبه 19 مرداد 1392, 23:14 عصر
من در ساخت دیتابیسم همانطور که گفتم از sql server 2008 r2 نسخه استاندارد استفاده کردم. حالا میخوام یک فایل ستاپ برای آن درست کنم. تا اکنون دسترسی مستقیم بر روی سیستم های مشتری داشتم و نسخه r2 را بر روی آنها نصب میکردم و دیتابیس را دستی اتچ میکردم و... ولی دیگه دسترسی به آنها ندارم و باید فایل نصبی تحویل بدم. خب در این حالت راهنمایی کنید باید چکار کنم؟

1- چه نسخه ای بر روی سیستم کاربر نصب بشه؟ نسخه کامل sql؟ (همانی که در هنگام طراحی من از آن استفاده کردم؟ sql server 2008 r2؟)
2- چون دسترسی مستقیم به سیستم ندارم برای اتچ باید چکار کنم؟ واقعا مناسب نیست کار اتچ کردن را مشتری انجام بده. بعضیها حتی با این کار هم مشکل دارن!

maktab
یک شنبه 20 مرداد 1392, 10:57 صبح
من از چنین کدی استفاده کردم و در سیستم من مشکلی نداشت. این را هم بگم که بر روی سیستم من sql server 2008 r2 نسخه استاندارد نصبه. ولی الان بر روی سیستم مشتری میخوام تست کنم. بر روی سیستم مشتری هم SqlExpress2008 نصبه (همان که در قسمت ایجاد برنامه نصبی ویژوال وجود داره). ولی در هنگام اجرا و تست بر روی سیستم مشتری این اخطار داده میشه:



a network-retated or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error:40 -Could not open a connection to SQL Server)

esafb52
یک شنبه 20 مرداد 1392, 11:25 صبح
اگر میخواهید اتچ اتومایک باشه باید از نسخه express استفاده کنید.(میتونید به پیش نیازها اضافه کنید)
کانکشن رو به اینصورت تنظیم کنید
<add name="Database1Entities" connectionString="metadata=res://*/Model.Model1.csdl|res://*/Model.Model1.ssdl|res://*/Model.Model1.msl;provider=System.Data.SqlClient;pr ovider connection string=&quot;Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;initial catalog=Database1;Integrated Security=True;User Instance=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
نام دیتابیس(در دو جا) و مسیر رو مطابق نام دیتابیس و مسیرش تغییر بدید.

در هنگام ساخت نسخه نصب نیازی نیست دیتابیس رو به ستاپ اضافه کنید. میتونید از طریق EF دیتابیس رو با کدنویسی ایجاد کنید. در کلاس Program میتونید اینکار رو انجام بدید. چک کنید اگر دیتابیس موجود نبود بسازیدش.
مثال:

[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);

// Create Database if it is not exist
using (Database1Entities context = new Database1Entities())
{
if (!context.DatabaseExists())
{
context.CreateDatabase();
}
}

Application.Run(new Forms.FrmMain());
}

با سلام جناب افراد
من وقتی میخواهم چک کنه که اگه دیتابیس نیست،اون رو بسازه خطا میده ""Unable to complete operation. The supplied SqlConnection does not specify an initial catalog.""
دقیقا از همین روش شما استفاده کردم مشکل چیه؟
کد من :
using System;
using System.Windows.Forms;

namespace fule_manger
{
internal static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(fals e);
using (fuleEntities1 contex = new fuleEntities1())
{
if (!contex.DatabaseExists())
{
contex.CreateDatabase();
}
}
Application.Run(new frmmain());
}
}
}

maktab
یک شنبه 20 مرداد 1392, 21:10 عصر
از دوستان کسی نیست نرم افزاری با بانک sql به غیر از EXPRESS طراحی کرده باشه؟
من الان با نسخه استاندارد طراحی کردم. برای روی سیستم مشتری باید چی نصب کنم؟ مطمئنا نیاز به نصب کل sql server 2008 r2 نسخه استاندارد نیست!! من نسخه EXPRESS که در قسمت نصبی وجود داره را استفاده کردم ولی جوابگو نبود. لطفا راهنمایی کنید.

plus
یک شنبه 20 مرداد 1392, 21:17 عصر
شما باید بتونید در Sql Server Express 2008 از دیتابیسی که در Sql Server Standard 2008 ساختین استفاده کنید.اگه مشکلی در این زمینه دارین مشکل رو مطرح کنید.

maktab
دوشنبه 21 مرداد 1392, 01:05 صبح
شما باید بتونید در Sql Server Express 2008 از دیتابیسی که در Sql Server Standard 2008 ساختین استفاده کنید.اگه مشکلی در این زمینه دارین مشکل رو مطرح کنید.

مشکلم همان اخطاریست که بالا به آن اشاره کردم. (پست شماره 20)
ضمنا من مثلا در هنگام برنامه نویسی سرورم برابر لوکال یا "." قرار داده بودم ولی وقتی قراره از Server Express استفاده کنم چنین سروری وجود نداره و باید SQLEXPRESS/. باشه.

plus
دوشنبه 21 مرداد 1392, 02:45 صبح
مشکلم همان اخطاریست که بالا به آن اشاره کردم. (پست شماره 20)
ضمنا من مثلا در هنگام برنامه نویسی سرورم برابر لوکال یا "." قرار داده بودم ولی وقتی قراره از Server Express استفاده کنم چنین سروری وجود نداره و باید SQLEXPRESS/. باشه.

خطایی که نوشتین، ربطی به خود دیتابیس نداره، خطا کلی هست و مربوط به پیدا کردن دیتابیس در Instance مشخص.همینطور که گفتین، Instance پیشفرض در Sql Express، مقدار SQLEXPRESS هست.باید بررسی کنید ببینین مشکل از چی هست.اسم Instance توی سیستم مشتری همین SQLEXPRESS هست؟ اگه از Remote به Sql Express بخواین وصل شین باید تنظیمات انجام بدین.
خلاصه خطا کلی هست و یک سری موارد هست که وقتی این خطا رخ میده، بررسی میکنن ببینن مشکل از چیه.الان همش تو ذهنم نیست.شاید دوستان بدونن و البته با جستجو هم حتما پیدا میکنید.

maktab
دوشنبه 21 مرداد 1392, 10:15 صبح
من که گیج شدم :گیج: :لبخندساده:
جستجو کردم بعضی جاها گفته شده که باید همان نسخه استاندارد را بر روی سیستم مشتری نصب کنم. بعضی جاها هم گفته شده که نه نیازی نیست و همین SQLEXPRESS کفایت میکنه! ولی توضیح خاصی داده نشده. خب همانطور که گفتم سرور SQLEXPRESS با سروری که من در نرم افزار خود استفاده کردم همخوانی نداره. مگه میشه من با "." بتونم به SQLEXPRESS/. وصل بشم!؟

plus
دوشنبه 21 مرداد 1392, 18:58 عصر
در مورد اینکه Instance در SQL Server چیه، نحوه آدرس دهی چطوریه، چرا شما واسه SQL Server از . استفاده کردین و بعد در SQL EXPRESS از SQLEXPRESS، تحقیق کنید تا اینطوری گیج نشید.

maktab
دوشنبه 21 مرداد 1392, 21:25 عصر
در مورد اینکه Instance در SQL Server چیه، نحوه آدرس دهی چطوریه، چرا شما واسه SQL Server از . استفاده کردین و بعد در SQL EXPRESS از SQLEXPRESS، تحقیق کنید تا اینطوری گیج نشید.

خب اگر ممکن است بفرمایید الان من در آدرس دهی برنامم از چه سروری استفاده کنم که هم بتونم در ساخت برنامه (نسخه استاندارد) و هم در سیستم مشتری (نسخه SQLEXPRESS) از آن استفاده کنم.

maktab
سه شنبه 22 مرداد 1392, 09:32 صبح
ببینید من مشکلم در ادرس دهی نیست. خب وقتی دارم از نسخه استاندارد استفاده میکنم باید ادرس سرور من یا لوکال باشه یا "." ولی دوستان فرمودن که برای اجرا هم میشه از نسخه SQLEXPRESS استفاده کرد اما این نسخه که برای اجرا نیاز به سروری با ادرس دهی SQLEXPRESS/. یا local/SQLEXPRESS یا nameserver/SQLEXPRESS یا... داره.
مشکل من اینجاست که چطور میشه من نرم افزارم را با نسخه استاندارد طراحی و تست کنم و با نسخه SQLEXPRESS اجرا کنم. البته اگر این کار امکان پذیر باشه

rayangostar_co
سه شنبه 22 مرداد 1392, 13:12 عصر
دوست عزیز بهتره شما به صورت اتوماتیک وقتی برنامتون لود میشه دیتابیس و attach کنید. حتما نیازی به sqlexpress نیست

maktab
سه شنبه 22 مرداد 1392, 17:00 عصر
دوست عزیز بهتره شما به صورت اتوماتیک وقتی برنامتون لود میشه دیتابیس و attach کنید. حتما نیازی به sqlexpress نیست

دوست عزیز نمیدونم شما متوجه مشکل من شده اید یا نه!! لطفا پست های آخر را با دقت بخوانید اگر متوجه نشدید بفرمایید من دوباره توضیح میدم.

plus
سه شنبه 22 مرداد 1392, 17:59 عصر
ببینید من مشکلم در ادرس دهی نیست. خب وقتی دارم از نسخه استاندارد استفاده میکنم باید ادرس سرور من یا لوکال باشه یا "." ولی دوستان فرمودن که برای اجرا هم میشه از نسخه SQLEXPRESS استفاده کرد اما این نسخه که برای اجرا نیاز به سروری با ادرس دهی SQLEXPRESS/. یا local/SQLEXPRESS یا nameserver/SQLEXPRESS یا... داره.
مشکل من اینجاست که چطور میشه من نرم افزارم را با نسخه استاندارد طراحی و تست کنم و با نسخه SQLEXPRESS اجرا کنم. البته اگر این کار امکان پذیر باشه
من اطلاعاتم کامل نیست، فکر هم نمیکنم فروم جایی باشه که مطالب طولانی که توی کتاب ها راحت پیدا میشه توسط کاربران نوشته بشه، به هر حال...:

منظور من از آدرس، مقدار کاملی هست که (تا اونجا که من میدونم) شامل
1) آدرس کامپیوتر سرور. (همونطور که گفتین، اگه در همون کامپیوتر باشیم میتونید از . استفاده کنید.)
2) پورتی مربوط به Instance ی که دیتابیس شما در اون وجود داره. (در نسخه Standard مقدار پیشفرض 1433 هست، در نسخه Express، به صورت پیشفرض پورت از نوع داینامیک هست و ثابت نیست.)
3) نام Instance ی که دیتابیس شما در اون وجود داره. (در نسخه Standard موقع نصب تعیین میشه.پیشفرض فکر کنم "MSSQLSERVER" هست. در نسخه Express پیشفرض SQLEXPRESS هست، ولی میتونه تعیین بشه)
4) و در نهایت نام دیتابیس.
اگه شما تا الان بعضی ازین مقادیر، مثلا پورت رو مشخص نمیکردین و مشکلی نداشتین به این دلیل بوده که از مقدار پیشفرض استفاده میشده ولی اگه در جایی مشکلی هست، ممکنه از تعیین نشدن یا غلط بودن یکی ازین مقادیر باشه.
شما باید نرم افزارتون رو طوری طراحی کنید که پارامتر هایی که گفتم، در اون قابل تغییر باشه یا حداقل دقیقا مشخص باشه.برای مثال باید طوری باشه که شما بهش بگین از چه Instance ی استفاده کن، تا هنگامی که دارین از نسخه Standard یا نام Instance برابر با MSSQLSERVER استفاده میکنید، برنامه بتونه به این Instance وصل بشه، و هنگامی که میخواین توی محیط، با Sql Express کار کنید، بهش بگین از SQLEXPRESS (یا هر نام دیگه ای که موقع نصب SQLEXPRESS در مقصد تعیین شده) استفاده کنه تا بتونه دیتابیس رو پیدا کنه.
خلاصه این میشه که نرم افزار باید Connection String رو بسته به شرایط ایجاد کنه.

maktab
سه شنبه 22 مرداد 1392, 18:14 عصر
من اطلاعاتم کامل نیست، فکر هم نمیکنم فروم جایی باشه که مطالب طولانی که توی کتاب ها راحت پیدا میشه توسط کاربران نوشته بشه، به هر حال...:


باز هم ممنون. ولی واقعا تا جایی که من مطالعه داشتم در اکثر سایت ها و کتاب ها کانکشن را به این شکل تعریف میکردن (تحت ویندوزای که دیتابیس در لوکال وجود داشته باشه).
حالا اگر شما و دوستان اطلاعی دارند که امکانش هست که کانشکن را با شرایطی که شما میفرمایید درست کنم منبعی به من معرفی کنید یا شما یک مثالی بزنید.