PDA

View Full Version : مشکل در وصل شدن به SQLServer تحت شبکه



kimia1
سه شنبه 05 تیر 1386, 09:09 صبح
سلام دوستان
من یه Database با نام Weap روی SQl Server2000 در سرور قراردادم(ویندوز 2003) . بعد یک ConnectionString بصورت زیر تعریف کردم.


inquiryconnection.ConnectionString :='Provider=SQLOLEDB.1;Password=pass;Persist Security Info=True;User ID=user1;Initial Catalog=Weap;Data Source='+ServerIP;
inquiryconnection.Connected:=TRUE;
ServerIP مقدار IP سرور هست.
یک User هم با نام User1 در قسمت SQL Server Enterprise Manager>Security>login تعریف کردم.
خاصیت Authentication را هم بصورت MixedMode قرار دادم. برنامه روی سرور خودم که طراحی شده، اجرا میشه و بخوبی جواب میده.
حالا مشکل از اینجا شروع میشه که من فایلهای بانک را روی یه سرور دیگه بر روی SQLServer اون Attach کردم و همین User1 را هم تعریف کردم و مجوزهای SELECT,INSERT,UPDATE,... را بهش دادم. حالا زمانی که برنامه روی همون سرور(سرور جدید) اجرا میشه این پیغام را میده:

[DBNETLIB][ConnectionOpen(connect()).] Sql Server Does not exist or access denied
ضمنا مقدار IP را هم IP سرور جدید قرار دادم.
حالا بنظر شما مشکل از کجاست.

Kamyar.Kimiyabeigi
سه شنبه 05 تیر 1386, 09:36 صبح
در سرور جدیدتون برای User1 در SQL آیا Login درست کردین؟

kimia1
سه شنبه 05 تیر 1386, 09:38 صبح
در سرور جدیدتون برای User1 در SQL آیا Login درست کردین؟

بله همون User1 را اینجا هم تعریف کردم

Kamyar.Kimiyabeigi
سه شنبه 05 تیر 1386, 09:50 صبح
منظورم User تنها نیست هر User در SQL باید به یک Login Name متصل باشه تا بتونه به DB وصل بشه.

kimia1
سه شنبه 05 تیر 1386, 09:56 صبح
منظورم User تنها نیست هر User در SQL باید به یک Login Name متصل باشه تا بتونه به DB وصل بشه.

متوجه منظورتون نشدم میشه لطف کنین بیشتر توضیح بدین؟ در واقع من باید چه کار دیگه ای انجام بدم؟

Kamyar.Kimiyabeigi
سه شنبه 05 تیر 1386, 10:08 صبح
در عکس شماره یک User های مربوط به Northwind مشخص شده که دو تا هستند

dbo
guest

برای dbo ما Login Name داریم که sa ولی برای guest نداریم پس با quest نمیتونیم به Northwind وصل بشیم.

اما در عکس شماره دو Login Name ها مشخص شده که یکی از این Login Name ها sa هست. من منظورم این قسمت هستش. اگر User شما Login Name نداشته باشه وقتی روش دوبار کلیک کنید قسمت Login Name اش <None> هست مثل عکس شماره سه.

Kamyar.Kimiyabeigi
سه شنبه 05 تیر 1386, 10:15 صبح
راستی یک موضوع دیگه در سرور جدید سعی کردین از طریق QA با همون User1 به DB متصل بشین؟

kimia1
سه شنبه 05 تیر 1386, 10:16 صبح
ممنون که وقت میگذارید. اما چک کردم می بینم در قسمت login name هم user1 نوشته شده و در واقع مشکل از اینجا نیست.
یه سوال دارم آیا ConnectionString من درسته یا نه؟ من یه نمونه دیگه توی سایت دیدم به این صورت:


ADOConnection1.ConnectionString := 'Server=Hostname;DataBase=DatabaseName';
ADOConnection1.Open('UserName', 'Password');
ADOConnection1.Connected := True;
end;
حالا نمیدونم مشکل از کجاست

Rezadba
سه شنبه 05 تیر 1386, 10:17 صبح
"Sql Server Does not exist or access denied" هنگامی ظاهر میشود که نام سرور شما اشتباه معرفی شود.یعنی کاربر Sql در مرحله دوم قرار دارد.برنامه اول به سرور متصل میشود و سپس مجوز دسترسی چک میشود.به نظر من مشکل Server ID میباشد.

kimia1
سه شنبه 05 تیر 1386, 10:18 صبح
راستی یک موضوع دیگه در سرور جدید سعی کردین از طریق QA با همون User1 به DB متصل بشین؟

مشکلی نداره و متصل میشه

Kamyar.Kimiyabeigi
سه شنبه 05 تیر 1386, 10:30 صبح
شما اگر بر روی AdoConnection دوبار کلیک کنین و اونجا مقادیر IP و Username و Password را وارد کنید و بعد دگمه Test Connection رو بزنید Succeeded میده؟

kimia1
سه شنبه 05 تیر 1386, 10:34 صبح
شما اگر بر روی AdoConnection دوبار کلیک کنین و اونجا مقادیر IP و Username و Password را وارد کنید و بعد دگمه Test Connection رو بزنید Succeeded میده؟

بله Test Connection Succeeded

Kamyar.Kimiyabeigi
سه شنبه 05 تیر 1386, 10:37 صبح
میشه در رشته ایی که به AdoConnection پاس میدین مقدار IP رو به صورت مستقیم بنویسید و با متغییر انتقال ندید. (این جوری ببینید جواب میده؟)

kimia1
سه شنبه 05 تیر 1386, 10:43 صبح
میشه در رشته ایی که به AdoConnection پاس میدین مقدار IP رو به صورت مستقیم بنویسید و با متغییر انتقال ندید. (این جوری ببینید جواب میده؟)

ممنون از لطفتون قبل از این که پستتون را ببینم مشکلم حل شد. و دقیقا همین مطلبی که شما فرمودین بود. سرور من دوتا کارت شبکه داره با دو IP مختلف. من در برنامه ام یه قسمت برای تنظیم IP سرور دارم که مقدار اون را توی رجیستری ثبت میکنه و از اون میخونه. نمیدونم چرا من IP اول را وارد می کنم اما در رجیستری IP دوم ثبت میشه. مقدار اون را دستی وارد کردم و مشکل حل شد. آقای کیمیابیگی از لطفتون و وقتی که گذاشتید نهایت تشکر را دارم. ممنون