PDA

View Full Version : سوال: مشکل در دسترسی به دیتایس SQL سرور از سمت کلانت با C#



milad_tensy
شنبه 17 دی 1390, 20:02 عصر
با سلام خدمت شما دوستان گل

من یه برنامه winapplicatin با C# نوشتم که از SQL server 2000 اطلاعاتش رو میگیره ...

این برنامه باید رو سیستم هایی که با هم شبکه هستند و به یک سیسم سرور که sql روی اون هست ، نصب شه .
روی سیستم های کلاینت sql Client رو نصب کردم و از طریق Query Analayzer با کد نویسی به اطلاعان دیتابیس سرورم دسترسی دارم اما از طریق برنامه ای که نوشتم روی سیستم های کلاینت نمی تونم به SQL سرور دسترسی داشته باشم و Error می ده ...... :ناراحت:

از دوستان کسی هست بتونه کمک کنه ؟؟؟
در ضمن من خیلی از تاپیک هایی که شاید با این مشکل من یکی باشه رو خوندم ولی هیچ کدوم کمکی نکرد .......

mohammad272005
شنبه 17 دی 1390, 21:22 عصر
کاش میگفتی چه errorی؟؟؟

AliSaeedi_v
شنبه 17 دی 1390, 22:38 عصر
سلام
توی کانکشن استرینگت قسمت سرور رو اینطور بنویس.
server=local
اگه localتوی پرانتز باشه یعنی همین کامپیوتر به عنوان سرور هست.اما اگه پرانتز نداشته باشه میگرده سرور شبکه رو پیدا میکنه.

zarrinnegar
شنبه 17 دی 1390, 23:35 عصر
2 راه داره

اول اینکه اسم سرور رو بدی بعد اسم instance sql رو بدی مثلا
server\sql2000
اگر sql روی سرور بصورت پیش فرض نصب شده باشه پس instance همون نام سرور هست میشه
server

دوم اینکه از IP استفاده کنی
برای پیزهایی که بالا گفته شد میشه
192.168.1.1\sql2000
یا
192.168.1.1

البته این آی پی و اسم سرور ها نمونه است باید اسم سرور و sql خودت رو بزاری

اگر هم مشکلت با sql2008 بود و بصورت راه دور وصل میشدی یک اشکال دیگه هم میتونست داشته باشه که چون شما از 2000 استفاده میکنی به اون مربوط نمیشه

milad_tensy
یک شنبه 18 دی 1390, 08:31 صبح
کاش میگفتی چه errorی؟؟؟


والا error برنامه ی خودم رو میده چون try catch گذاشتم ولی آلان برداشتمش و این error رو میده :

80362

milad_tensy
یک شنبه 18 دی 1390, 08:35 صبح
سلام
توی کانکشن استرینگت قسمت سرور رو اینطور بنویس.
server=local
اگه localتوی پرانتز باشه یعنی همین کامپیوتر به عنوان سرور هست.اما اگه پرانتز نداشته باشه میگرده سرور شبکه رو پیدا میکنه.

ممنون ولی این راه حتی توی Query Analyzer هم جواب نداد ....!!!!

milad_tensy
یک شنبه 18 دی 1390, 08:57 صبح
2 راه داره

اول اینکه اسم سرور رو بدی بعد اسم instance sql رو بدی مثلا
server\sql2000
اگر sql روی سرور بصورت پیش فرض نصب شده باشه پس instance همون نام سرور هست میشه
server

دوم اینکه از IP استفاده کنی
برای پیزهایی که بالا گفته شد میشه
192.168.1.1\sql2000
یا
192.168.1.1

البته این آی پی و اسم سرور ها نمونه است باید اسم سرور و sql خودت رو بزاری

اگر هم مشکلت با sql2008 بود و بصورت راه دور وصل میشدی یک اشکال دیگه هم میتونست داشته باشه که چون شما از 2000 استفاده میکنی به اون مربوط نمیشه



مرسی بابت جواب باید بگم که کل راه ها رو اعمال کردم ولی هیچ کدوم متاسفانه جواب نداد . البته توی Query Analyzer توی قسمت سرور ، با اسم سیستم سرور و IPی سرورم وصل میشه ولی توی برنامه وصل نمی شه و error میده :





در حالت جستجوی سرور هم توی Query Analyzer ، اسم سرورم رو پیدا می کنه و به راحتی وصل می شه !!!

80365

zarrinnegar
یک شنبه 18 دی 1390, 10:10 صبح
خوب معلوم شد
داری با نام sa و pass وارد میشی اون رو هم به کانکشنت اضافه کن

Data Source=MILADTENSY-PC;Initial Catalog=MyDatabase;Persist Security Info=True;User ID=sa;Password=?????

milad_tensy
یک شنبه 18 دی 1390, 12:09 عصر
خوب معلوم شد
داری با نام sa و pass وارد میشی اون رو هم به کانکشنت اضافه کن

Data Source=MILADTENSY-PC;Initial Catalog=MyDatabase;Persist Security Info=True;User ID=sa;Password=?????




مرسی ، تغییرات رو اعمال کردم ولی باز متاسفانه جواب نداد و همون TimeOut Expired Error رو باز دوباره میده .......

milad_tensy
سه شنبه 20 دی 1390, 23:42 عصر
دوستان کسی ایده ی دیگه ای به ذهنش نمی رسه ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟ ؟:ناراحت::ناراحت:

zarrinnegar
سه شنبه 20 دی 1390, 23:53 عصر
یه راه دیگه هم داره

روی desktop یک فایل text بساز و اسمش رو عوض کن و پسوندش رو بزار Udl
مثلا Test.UDL
وقتی تغییر پسوند میدی باید ازت بپرسه که نوع فایل داره تغییر میکنه و تایید میکنید

بعدش وقتی دو بار کلیک کنید یک فرم باز میشه
اونجا از Tab اول شروع کن و Microsoft OLE DB Provider Sql Server رو انتخاب کن
توی Tab بعدی مسیر سرور و نام دیتابیس و use و pass رو وارد کن و تیک save password رو هم بزن
بعد دکمه Test رو بزن اگه تونستی به sql متصل بشی OK کن وگرنه اینقدر باهاش تست بگیر که گیرت رفع شه و تست جواب بده بعد OK کن

بعدش این فایل رو با ادیتور باز کن و قسمت Datasource رو تا آخر که میشه یک خط کپی کن بزار جای اون ConnectionString

مطمئن باش جواب میگیری

xcomlock
سه شنبه 20 دی 1390, 23:58 عصر
سیستم عامل سرورت حتما باید از خانواده سرورها باشه. مثل windows server2003, چون یه سری تنظیمات پورت هست که برای دسترسی NET. باید روی SQL2000 اعمال بشه. یا اینکه از sql2005 به بعد استفاده کن. در هر دوی اینها این تنظیمات به صورت پیش فرض اعمال شده.

mohammad272005
چهارشنبه 21 دی 1390, 00:04 صبح
این ConnectionString شباهت چندانی به ConnectionStringی که من مشناسم نداره. نمیدونم اینطوری هم که شما نوشتی کار میکنه یا نه.
برای مثال، من همیشه اینطوری مینویسم:Data Source=MOHAMMAD-HOMEPC\SQL2008R2;Initial Catalog=PNA;UserId=Test;Password=123

zarrinnegar
چهارشنبه 21 دی 1390, 00:15 صبح
ممکنه توی کلاینت یا سرور فایروال نصب باشه این رو هم چک کن ممکنه مال آنتی ویروس یا بهتره بگم smart security باشه
نوع sql server هم بگی کدوم نسخه است بد نیست standard? personal? enterprise?

milad_tensy
شنبه 24 دی 1390, 16:33 عصر
یه راه دیگه هم داره

روی desktop یک فایل text بساز و اسمش رو عوض کن و پسوندش رو بزار Udl
مثلا Test.UDL
وقتی تغییر پسوند میدی باید ازت بپرسه که نوع فایل داره تغییر میکنه و تایید میکنید

بعدش وقتی دو بار کلیک کنید یک فرم باز میشه
اونجا از Tab اول شروع کن و Microsoft OLE DB Provider Sql Server رو انتخاب کن
توی Tab بعدی مسیر سرور و نام دیتابیس و use و pass رو وارد کن و تیک save password رو هم بزن
بعد دکمه Test رو بزن اگه تونستی به sql متصل بشی OK کن وگرنه اینقدر باهاش تست بگیر که گیرت رفع شه و تست جواب بده بعد OK کن

بعدش این فایل رو با ادیتور باز کن و قسمت Datasource رو تا آخر که میشه یک خط کپی کن بزار جای اون ConnectionString

مطمئن باش جواب میگیری



مرسی دوست عزیز بابت راهنمایی ها و روش های جدیدی که گفتی ، این کارو تو client انجام دادم و توی این فایل به درستی جواب داد



80771


و منم هم از datasource به بعد کپی کردم توی connectionstring ولی بازم همون error قبل رو داد ......!!!!!! :ناراحت::متفکر:


.

milad_tensy
شنبه 24 دی 1390, 16:37 عصر
ممکنه توی کلاینت یا سرور فایروال نصب باشه این رو هم چک کن ممکنه مال آنتی ویروس یا بهتره بگم smart security باشه
نوع sql server هم بگی کدوم نسخه است بد نیست standard? personal? enterprise?

نسخه enterprise رو نصب کردم و همه آنتی ویروس ها رو هم disable کرده ام..... ولی بازم جواب ندادش .............................:ناراحت:

milad_tensy
شنبه 24 دی 1390, 16:46 عصر
این ConnectionString شباهت چندانی به ConnectionStringی که من مشناسم نداره. نمیدونم اینطوری هم که شما نوشتی کار میکنه یا نه.
برای مثال، من همیشه اینطوری مینویسم:Data Source=MOHAMMAD-HOMEPC\SQL2008R2;Initial Catalog=PNA;UserId=Test;Password=123


توی سرورم به درستی کار می کنه با همون connectionstringی که نوشتم ولی توی کلاینت نه .....
این مدل هم که شما می فرمایید هم دقیقاً رفتارش مثل connectionstring منه .....

توی کلاینت کار نمی کنه ...... :ناراحت:

hadis shaeidi
شنبه 24 دی 1390, 17:23 عصر
باسلام
اول باید کلا دیتابیست رو توقسمت برنامه سرورتوپوشه binمیری وسپس توپوشهdebugمیری واونجادیتابیست روکپی میکنی مثلا
university_data_log.ldfوuniversity_log.ldf
سپس درسمت کلاینت توفرمی که میخوای ازدیتابیس استفاده کنی بایدازکدزیراستفاده کنی اینجوری به دیتابیس سروروصل میشی

string connectionString = "server=" + this.serverName + ";Initial Catalog=UNIVERSITY_DATA.MDF;Integrated Security=True";

zarrinnegar
یک شنبه 25 دی 1390, 00:16 صبح
یه راه دیگه
پروژه رو یکبار clean کن دوباره rebuild کن ممکنه کامپایلر یه جا گیر باشه

امتحانش ضرری نداره

zare69
یک شنبه 25 دی 1390, 10:08 صبح
خوب یه نام کاربری و پسورد داخل سرور بساز و بهش مجوز دسترسی بده .و بعدش از کلاینت با اون نام کاربری و پسورد وصل شو به سرور


Data Source=ServerPC;Initial Catalog=MyDatabase;Persist Security Info=True;User ID=username;Password=password

milad_tensy
دوشنبه 26 دی 1390, 13:26 عصر
سیستم عامل سرورت حتما باید از خانواده سرورها باشه. مثل windows server2003, چون یه سری تنظیمات پورت هست که برای دسترسی NET. باید روی SQL2000 اعمال بشه. یا اینکه از sql2005 به بعد استفاده کن. در هر دوی اینها این تنظیمات به صورت پیش فرض اعمال شده.



سلام مرسی دوست عزیز ... ویندوزم رو server کردم و بالاخره جواب داد :لبخند:

milad_tensy
دوشنبه 26 دی 1390, 13:44 عصر
دوستای عزیز AliSaeedi_v (http://barnamenevis.org/member.php?237620-AliSaeedi_v), zare69 (http://barnamenevis.org/member.php?157935-zare69) , hadis shaeidi (http://barnamenevis.org/member.php?196521-hadis-shaeidi) , mohammad272005 (http://barnamenevis.org/member.php?43326-mohammad272005) , xcomlock (http://barnamenevis.org/member.php?29502-xcomlock) , zarrinnegar (http://barnamenevis.org/member.php?31940-zarrinnegar)
از تمامی شما بابت راهنمایی های فوق العاده عالیتون سپاس گذارم . بلاخره با استفاده ار راه کار هایی که فرمودید سیستمم جواب داد :لبخند:

بی نهایت متشکر از شما دوستان .... :قلب: