PDA

View Full Version : مشکل در ارتباط دیتابیسم با sql هاست!!!!



bamzi software
دوشنبه 21 مرداد 1387, 12:05 عصر
سلام

من با asp.net و sqlserver2000 وب طراحی کردم و با معماری 3 لایه هم نوشتم.

حالا هاستی که گرفتم sqlserver2005 داره...مشکلی پیش میاد؟

یه مورد دیگه:
من با sql 2000 نتونستم user & pass بدم به دیتابیسم..با کنترل پنل هاست)helm) دادم و تو connectionstring نوشتم...آیا درسته؟

merlin_vista
دوشنبه 21 مرداد 1387, 14:14 عصر
حالا هاستی که گرفتم sqlserver2005 داره...مشکلی پیش میاد؟مشكلي نداره .


من با sql 2000 نتونستم user & pass بدم به دیتابیسم..با کنترل پنل هاست)helm) دادم و تو connectionstring نوشتم...آیا درسته؟بايد از مسئول سرور بپرسي شايد اون بايد يوزر و پسورد را درست كنه و بهت بده . تا تو تو كانكشن بگزاري ولي در كل درسته .

bamzi software
دوشنبه 21 مرداد 1387, 16:45 عصر
ممنون از راهنماییتون.
یک سوال دیگه:

وقتی که وب سایتم رو تو asp.net,publish می کنم دیگه فولدر app-code که کلاسهام توش بود وجود نداره!!!اونا کجا میرن؟
آخه connection string رو تو اون کلاسها نوشتم..

merlin_vista
دوشنبه 21 مرداد 1387, 17:05 عصر
وقتی که وب سایتم رو تو asp.net,publish می کنم دیگه فولدر app-code که کلاسهام توش بود وجود نداره!!!اونا کجا میرن؟
اين فلدر در درون Bin به صورت كامپايل شده قرار دارد . نگران نباش


آخه connection string رو تو اون کلاسها نوشتم..
مشكلي نداره . بعد از پاليش تمام Cs ها و كلاس ها به صورت كامپايل در داخل Bin قرار دارد .

بهتر بود connection string را توي وب مانفيگ تعريف ميكردي .

bamzi software
دوشنبه 21 مرداد 1387, 17:23 عصر
خیالم رو راحت کردین.

تو لایه سومم که classdb هست این رو نوشتم:

public void connect()
{
string cs;
cs = @"Data Source=(LOCAL);Initial Catalog=***;User ID=***;Password=***";


con.ConnectionString = cs;
con.Open();
}
که وقتی قراره ارتباط با sql برقرار بشه فراخوانی بشه..
حالا چرا تو webconfig بنویسم بهتره؟مزیتش چیه؟

merlin_vista
دوشنبه 21 مرداد 1387, 17:29 عصر
حالا چرا تو webconfig بنویسم بهتره؟مزیتش چیه؟

مزيت ها شو كه با سرچ ميتوني پيدا كني. و همچنين روش نوشتن توي وب كانفيگ .

MehranZand
دوشنبه 21 مرداد 1387, 17:51 عصر
فقط به این نکته توجه بکن که دیتابیسی که 2000 هست و بر روی سرور 2005 الحاق میشه تغییر ساختار میده

bamzi software
دوشنبه 21 مرداد 1387, 18:06 عصر
فقط به این نکته توجه بکن که دیتابیسی که 2000 هست و بر روی سرور 2005 الحاق میشه تغییر ساختار میده

تغییر ساختار یعنی چی؟میشه واضحتر توضیح بدین؟ممنونم

MehranZand
دوشنبه 21 مرداد 1387, 18:24 عصر
تبدیل به SqlServer2005 میشه، و بعدا اون رو به آسانی نمی تونید روی 2000 SqlServer الحاق کنید.

bamzi software
دوشنبه 21 مرداد 1387, 18:44 عصر
پس به نظر شما بهتره که چیکار کنم؟
اگه قابل تبدیل به 2005 نیست پس باید تو 2005 یک db جدید بسازم؟:ناراحت:

merlin_vista
دوشنبه 21 مرداد 1387, 20:30 عصر
پس به نظر شما بهتره که چیکار کنم؟
اگه قابل تبدیل به 2005 نیست پس باید تو 2005 یک db جدید بسازم؟:ناراحت:

2000 به 2005 به آساني امكان پذير است
2005 به 2000 خير . ميشه اما با دردسر زياد .

DotNet_King
دوشنبه 21 مرداد 1387, 21:26 عصر
مزيت ها شو كه با سرچ ميتوني پيدا كني. و همچنين روش نوشتن توي وب كانفيگ .


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

m.hamidreza
دوشنبه 21 مرداد 1387, 23:27 عصر
جناب بهروزخان راد یه مقاله ی تپل در این زمینه دارن که میتونید جستجو بفرمایید.

mr_mtc
سه شنبه 22 مرداد 1387, 00:28 صبح
حداقل مزيتش بر ميگرده به اين هاست هاي ايراني

كه يكدفعه هوس ميكنن كه سرور رو جابجا كنن
اگه تو كلاس باشه اونموقعست كه بايد دوباره سايتت رو كامپايل كني
اگه تو web.Config باشه فقط بايد چند تا رشته رو عوض كني

bamzi software
سه شنبه 22 مرداد 1387, 10:15 صبح
دستورات web.config چه زمانی خونده میشه؟

در حال حاضر که connectionstring رو تو کلاسdb (که لایه سومه) نوشتم هرجا لازم باشه فراخوانی می کنمش.
اگه بخوام connectionstring رو تو web.config بنویسم چطوری باید بخونمش؟

امیدوارم منظورمو رسونده باشم:لبخندساده:

merlin_vista
سه شنبه 22 مرداد 1387, 10:40 صبح
نوشتن كانكشن در وب كانفيگ :

<connectionStrings>
<add name="CString" connectionString="Data Source=(local);Initial Catalog=[dbName];User ID=[login username];Password=[login password]" providerName="System.Data.SqlClient"/>
</connectionStrings>خواندن كانكشن از وب كانفيگ :

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["CString"].ToString());خوشحالم سر عقل اومدي و كانكشن را تو وب كانفيگ نوشتي .

bamzi software
سه شنبه 22 مرداد 1387, 17:55 عصر
لطفا ببینیداین کدها درست هستند؟
تو کلاسdb جایی که می خواد به database متصل بشه اینو بنویسم:


public void connect()
{
SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin gs["CString"].ToString());
con.Open();
}

و تو web.configاینو:


<connectionStrings>
<add name="CString" connectionString="Data Source=(LOCAL);Initial Catalog=***;User ID=***;Password=***" providerName="System.Data.SqlClient"/>
</connectionStrings>

merlin_vista
سه شنبه 22 مرداد 1387, 18:22 عصر
توي كلاس اينجوري ينويسي بهتره و كانكشن را تو كلاس DAL باز كني : (من اينجوري بهتر خوشم مياد) :

public SqlConnection GetConnection()
{
SqlConnection Cnn = new SqlConnection(System.Configuration.ConfigurationMa nager.ConnectionStrings("conString").ConnectionString);
return Cnn;
}

حالا به هر حال انتخاب با خودت هست .

bamzi software
سه شنبه 22 مرداد 1387, 18:42 عصر
پس اینطور که معلومه طرز نوشتن کدهام درسته،حالا امتحان می کنم اگه خطایی داشت میگم به شما

ممنون از توجه شما

bamzi software
چهارشنبه 23 مرداد 1387, 12:51 عصر
من کدهارو نوشتم اما error میده:

تو classdb رو خط

da.Fill(ds);تو

public DataSet select(string table, string id1, string id2)
{
string sql = "select count(*) from {0} where (user1='{1}' and pass='{2}')";
sql = string.Format(sql, table, id1, id2);
cmd.CommandText = sql;
DataSet ds = new DataSet();
da.Fill(ds);
return ds;
}
این خطا رو میده:

The ConnectionString property has not been initialized.قبلا که تو وب کانفیگ نذاشته بودم کدش این بود:(درست کار می کرد)


public void connect()
{
string cs;
cs = @"Data Source=(LOCAL);Initial Catalog=dbweb;Integrated Security=True";
con.ConnectionString = cs;

con.Open();
}
لطفا راهنماییم کنید

bamzi software
چهارشنبه 23 مرداد 1387, 16:27 عصر
با کلی search کدم رو اینطوری نوشتم درست شد:

public void connect()
{

con.ConnectionString = ConfigurationManager.ConnectionStrings["CString"].ConnectionString;
con.Open();

}

bamzi software
پنج شنبه 24 مرداد 1387, 10:27 صبح
یک چیز دیگه:
موقع آپلود خواستم واسه دیتابیسم یوزر و پسورد تعریف کنم اما نشد..
یکی به من گفت تو کانکشن استرینگ یوزر و پسورد تعریف کنی کافیه اما من فکر می کنم اینطوری درست نباشه چون دیتابیسم یوزر و پسورد رو نمیشناسه،درسته؟

یک مسئله دیگر:
sqlserver هاست 2005...من باید چیکار کنم؟اگه از دیتابیسم backup بگیرم و تو sqlserver2005 restore کنم و اونجا واسه دیتابیسم user,password تعریف کنن(طبق connectionstring) درست میشه؟

ممنون میشم راهنماییم کنید

bamzi software
سه شنبه 29 مرداد 1387, 11:50 صبح
من از دیتا بیسم در اس کیو ال2000 backup گرفتم و هاست اونو در اس کیو ال 2005 restore کرد و یوزر و پسورد گذاشت..منم اون یوزر و پسورد رو همراه با نام سرورشون تو کانکشن استرینگ در وب کانفیگ گذاشتم ...این روند درسته؟


<connectionStrings>
<add name="CString" connectionString="Data Source=***;Initial Catalog=**;User ID=***;Password=***" providerName="System.Data.SqlClient"/>
</connectionStrings>پس این error برای چیه؟


Server Error in '/' Application.

An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

m.hamidreza
سه شنبه 29 مرداد 1387, 18:39 عصر
DataSource باید IP سرور SQLت باشه! این IP رو از پشتیبانی هاست باید بگیری. IP سرور SQL نه هاست، دقت بفرمایید.

bamzi software
سه شنبه 29 مرداد 1387, 18:48 عصر
درست می فرمایید،من اشتباه نوشتم...
این رو گفتن که بنویسم:

Data Source=(**.**.**.**\sql2005)

درسته؟

با این حال همین error رو میده:ناراحت:...
دلیلش چی می تونه باشه؟

m.hamidreza
چهارشنبه 30 مرداد 1387, 19:00 عصر
اگه خودشون اینو گفتن و کار نمیکنه بسیار ریلکس با پشتیبانی هاست تماس گرفته فایل Web.Config رو تحویلشون بدین خودشون مشکل رو بگن.... شما هم به کارهای دیگت برس!