PDA

View Full Version : سوال: بدست آوردن نام SQL سرور نصب شده به صورت داینامیک



masoudmok
سه شنبه 08 فروردین 1391, 00:41 صبح
سلام
خسته نباشید
من یه برنامه نوشتم و توش از sql server استفاده کردم .
چطور میتونم توی connectionstring طوری servername رو set کنم که روی هر کامپیوتری درست جواب بده ؟
مخصوصا جاهایی که چند تا سرور نصب شده .
ممنون از راهنمایی هاتون

رافعی مهدی
سه شنبه 08 فروردین 1391, 09:27 صبح
سلام

برای این کار باید از آدرس (IP) سرور در ConnectionString استفاده کنید:


StringBuilder connectionStringBuilder = new StringBuilder();

connectionStringBuilder.Append("Data Source=" + DataSourceAddress + ";");
connectionStringBuilder.Append("Initial Catalog=" + DatabaseName + ";");
connectionStringBuilder.Append("Persist Security Info=true;");
connectionStringBuilder.Append("Integrated Security=false;");
connectionStringBuilder.Append("Connection Timeout=" + TimeOut + ";");
connectionStringBuilder.Append("User ID=" + SqlUserID + ";");
connectionStringBuilder.Append("Password=" + SqlPassword + ";");

که در آن DataSourceAddress آدرس (IP) سروری است که DB روی آن نصب شده. اگر روی سیستم خودتون نصبه از مقدار (local) میتونید استفاده کنید یا localhost رو بهش بدید (مثلاً 127.0.0.1).

________________________
ویرایش:

منتها این که 4 تا رشته رو به هم میچسبونه !
آره، ولی در جواب برای شمایی که مبتدی نیستی، یک اشاره کافیه! در ضمن نکات دیگری هم داره که ممکنه به درد سایر دوستان بخوره.

masoudmok
سه شنبه 08 فروردین 1391, 10:55 صبح
سلام .
ممنون از جوابتون . منتها این که 4 تا رشته رو به هم میچسبونه !
نکته مهم همون DataSourceAddress هست . اگه مثلا هم express و هم sql server نصب بود localhost کدومه ؟

Sirwan Afifi
سه شنبه 08 فروردین 1391, 11:46 صبح
اگر به صورت Localhost باشه SQL SERVER و اگر به صورت .\SQLEXPRESS باشه EXPRESS

masoudmok
پنج شنبه 10 فروردین 1391, 00:17 صبح
خطای زیر رو میده !!!
A network-related 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)
چرا ؟

nava_2012
پنج شنبه 10 فروردین 1391, 03:52 صبح
System.Data.Sql.SqlDataSourceEnumerator inctance=System.Data.Sql.SqlDataSourceEnumeratorin ctance;
VisibleSqlDataServer.DataSource=Instance.GetDataSo urce();

دریک گریدویونمایش میدهد.موفق باشید

masoudmok
پنج شنبه 10 فروردین 1391, 16:14 عصر
ممنون .
این کاملتره فکر کنم
SqlDataSourceEnumerator instance = SqlDataSourceEnumerator.Instance;
System.Data.DataTable table = instance.GetDataSources();

// Filter the sources to just show SQL Server 2008 instances.
System.Data.DataRow[] rows = table.Select("Version LIKE '10%'");
foreach (System.Data.DataRow row in rows)
comboBox1.Items.Add(row["ServerName"]);
البته باید اینو اضافه کرده باشی
using System.Data.Sql;