PDA

View Full Version : Connection string



pooyansystem
شنبه 17 اسفند 1387, 11:03 صبح
سلام
من تو يه شركت كار ميكنم تو شركت كار ما با يه سروره چند نفر از بچه ها از جمله من مي تونيم تو سرور database بسازيم يعني user ما توسط سرور شناسايي ميشه ولي بقيه اين اجازه رو ندارن ما يه برنامه نوشتيم و تو اون سرور رو شناسايي مي كنيم براي بچه هايي كه اجازه ساخت db دارن مشكلي نيست و با user و pass خودشون وارد ميشن و db شناسايي ميشه يا ساخته ميشه ولي براي بچه هايي كه اجازه دسترسي نداردن نمي تونن وارد برنامه بشن در واقع نمي تونن db رو بشناسن يا ايجاد كنن حتي وقتي ما user وpass خودمون رو وارد ميكنيم حالا بايد connection string رو چي بديم تا مشكل حل بشه

__H2__
شنبه 17 اسفند 1387, 13:35 عصر
سلام
مشکل شما مربوط به اجازه نامه ها و مجوزهای خود SQLServer میشود.

شما باید مجوزهای لازم را برای بقیه کاربران هم اعتإ کنید.
مثلاً، حداقل مجوز db_dataread و db_datawrite را برای بانک اطلاعاتی و کاربر مربوطه.

pooyansystem
یک شنبه 18 اسفند 1387, 12:23 عصر
دوست عزيز ممنون از جوابتون ولي آيا راه حلي نيست كه من بتونم با user هايي كه تو sql تعريف شدن و اجازه دسترسي دارن به بقيه هم اجازه ارتباط با برنامم رو بدم

__H2__
دوشنبه 19 اسفند 1387, 01:12 صبح
سلام

راه حلي نيست كه من بتونم با user هايي كه تو sql تعريف شدن و اجازه دسترسي دارن به بقيه هم اجازه ارتباط با برنامم رو بدم
خوب چرا!!! از همان user و pass هایی که اجازه و مجوز دارند برای همه کاربران استفاده کنید!!!!!!!!!!
مگه مجبورید حتماً برای هر نفر از یک user و pass مجزا و جدید استفاده کنید؟
اگر میخواهید امنیت کامل را پیاده سازی کنید و هر فردی فقط به بخشی از دیتابیس دسترسی داشته باشد، باید برای هر فرد یا گروهی از معیارهای امنیتی جداگانه استفاده کنید و گرنه اجباری نیست!

pooyansystem
دوشنبه 19 اسفند 1387, 08:49 صبح
دوست عزيز وقتي با User5 و پسور اون كه اجازه دسترسي به db را دارن از طريق سيستم user3 مي خوام وارد برنامه بشم پيغام خطا ميده كه كه User3 اجازه دسترسي به db رو نداره حتي با وجود اينكه من از User5 براي اجراي برنامه استفاده ميكنم شايد Connection string من درست نباشه ميشه يه نمونه connection string كه از User, pass استفاده ميشه و برنامه داخل سرور هست برام بذاريد

__H2__
دوشنبه 19 اسفند 1387, 11:43 صبح
سلام
یک کمی بخشی از جملات فوق را متوجه نشدم ... !
ولی بهر حال شما اگر رشته ConnectionString را صحیح و بنابر کاربرانی که اجازه دارند تنظیم کنید مشکلی نخواهید داشت.


يه نمونه connection string كه از User, pass استفاده ميشه و برنامه داخل سرور هست برام بذاريد

شما از این رشته استفاده کنید و ip سرور یا نام سرور و سپس نام دیتابیس و در آخر user و pass را صحیح جایگزین کنید.


Data Source=192.168.1.10;Initial Catalog=Databasename;Persist Security Info=True;Connect Timeout=45;User ID=Username;Password=Password


ضمناً مشکل شبکه و SQLServer که ندارید؟ یعنی حداقل توانسته اید از یک رایانه در شبکه به سرور وصل شوید؟ ولی بقیه رایانه ها با user و pass وصل نمیشوند؟
(اگر تمام رایانه های در شبکه نتوانند به سرور وصل شوند و فقط از داخل خود رایانه سرور بتوان به آن وصل شد، برخی دیگر از تنظیمات را باید ست کنید)

موفق باشید.

pooyansystem
سه شنبه 20 اسفند 1387, 08:23 صبح
دوست عزیز وقتی من از پشت سیستم User3 برنامه رو اجرا می کنم و User5 و Pass اون رو وارد می کنم پیغام خطای زیر رو میده

login failed for User5. the user is not associated with a trusted sql server connection


ضمناً مشکل شبکه و SQLServer که ندارید؟ یعنی حداقل توانسته اید از یک رایانه در شبکه به سرور وصل شوید؟ ولی بقیه رایانه ها با user و pass وصل نمیشوند؟

من از طریق سیستم کاربرانی که اجازه دسترسی به db رو دارن میتونم برنامم رو اجرا کنم ÷س طبق گفته شما نباید مشکل شبکه باشه

__H2__
سه شنبه 20 اسفند 1387, 22:03 عصر
سلام

... پشت سیستم User3 برنامه رو اجرا می کنم و User5 و Pass اون رو وارد می کنم ...
همین را درک نمیکنم... در User3 با User5 وصل میشوید؟؟؟ یعنی چه؟؟؟
User3 یک کلاینت یا اکانت ویندوز است و User5 یک اکانت sqlserver ؟

دوست دارم کمکتان کنم ولی ...

=====

دو سوال واضح با جواب آری/خیر !
1) آیا همه کلاینت های شما از یک User و Pass و ConnectionString واحد و یکسان و کاملاً برابر استفاده میکنند؟
2) ولی یکی از رایانه های کلاینت در شبکه شما وصل میشود و دیگری وصل نمیشود؟

جواب سوال دومتان که "بله" است! پس می ماند دو حالت ...

حالت اول، جواب سوال 1) خیر است ...
راه حل این مسئله قبلاً در پست 2 و 4 بیان شده، مجدداً مرور کنید.

حالت دوم، جواب سوال 1) بله است ...
راه حل در همان رایانه کلاینت مشکل دارد است، و ایراد از خود کلاینت است، شاید یک firewall یا برنامه ای مشابه جلوی ارتباط سوکتهای TCP/IP (و مخصوصاً پورت 1433) را صد میکند.

pooyansystem
چهارشنبه 21 اسفند 1387, 07:51 صبح
دوست عزیز ممنون از جوابتون
ببینید من نمی دونم چه طور منظورم را بیان کنم کلاینت های ما تو شرکت هر کدوم User و pass مختص خودشون رو دارن که با استفاده از اون وارد سرور میشن حالا هر کس متناسب با کاری که انجام میده به قسمت های مختلف دسترسی داره مثلا User5 اجازه کار با Db رو داره و User3 این امکان رو نداره وقتی من پشت سیستم User3 میشینم و با user و Pass اون وارد محیط سرور میشم و می خوام برنامم رو که روی سرور نصب شده اجرا کنم اول باید Connectionstring بسازم من User و pass مربوط به User5 رو بهش میدم ولی همونطور که گفتم خطا میده

__H2__
پنج شنبه 22 اسفند 1387, 01:20 صبح
سلام
متاسفم و شرمنده، من واقعاً در درک جمله زیر مشکل دارم:


وقتی من پشت سیستم User3 میشینم و با user و Pass اون وارد محیط سرور میشم و می خوام برنامم رو که روی سرور نصب شده اجرا کنم اول باید Connectionstring بسازم من User و pass مربوط به User5 رو بهش میدم

چهار سوال بسیار مهم:
1) شما خودتان برنامه نویس آن برنامه هستید؟
2) یعنی چی، وارد محیط سرور میشوید؟؟؟
3) یعنی میروید توی پوشه ای Share شده در سرور؟؟؟ ؟؟؟
4) یعنی برنامه شما فقط روی سرور نصب است؟؟؟ ؟؟؟ ؟؟؟

pooyansystem
پنج شنبه 22 اسفند 1387, 07:03 صبح
1) شما خودتان برنامه نویس آن برنامه هستید؟
من خودم این برنامه رو نوشتم ابتدا که برنامه اجرا میشه سعی میکنه با استفاده از Connectionstringپیش فرض موجود در Setting با DB ارتباط برقرار کنه اگر نتونست یک فرم جدید باز میشه که تو اون فرم نام سرور و User و Pass برای ارتباط پرسیده میشه با استفاده از این سه پارامتر یک Connectionstring جدید ساخته میشه و ارتباط با DB برقرار میشه.


2) یعنی چی، وارد محیط سرور میشوید؟؟؟
3) یعنی میروید توی پوشه ای Share شده در سرور؟؟؟ ؟؟؟
راستش دوست عزیز من تو زمینه شبکه خیلی وارد نیستم ولی روی سیستم تمام کلاینتهای شرکت یه User وجود داره که ما از طریق اجرای اون و وارد کردن User و Pass مخصوص خودمون میتونیم وارد windows سیستم بشیم و اونجا کارهامون رو انجام بدیم اگه اشتباه نکنم برای ایجاد شبکه از terminal Service استفاده شده


4) یعنی برنامه شما فقط روی سرور نصب است؟؟؟ ؟؟؟ ؟؟؟
بله برنامه فقط روی سرور نصبه و ما اونو از روی سرور اجرا میکنیم

منو می بخشید اگه نمیتونم خوب منظورم رو بیان کنم فکر کنم مشکل اصلی من همینه که خیلی به شبکه وارد نیستم ولی تا اونجایی که فهمیدم مشکل اصلی من عبور از سد امنیتی Windows سرور است

aftab3000
پنج شنبه 22 اسفند 1387, 08:35 صبح
اگر شما با user5 به کامپیوتر user3 لاگین کنید، و بعد با یوزر 5 وارد برنامه شویدو اگر مشکل نداشتید مسئله مربوط به مجوز کاربر برروی خود سروری است که ویندوز برروی آن نصب شده است.90 در صد احتمال وجود دارد.

__H2__
پنج شنبه 22 اسفند 1387, 13:58 عصر
سلام

بله برنامه فقط روی سرور نصبه و ما اونو از روی سرور اجرا میکنیم
حالا فهمیدم !!!
متاسفم به همچین برنامه ای نمیگویند برنامه شبکه ای !!!!
شما وارد پوشه Share شده سرور میشوید و exe را اجرا میکنید !!!!

=====

اگر بانک اطلاعاتی شما SQLServer است ...
1) برنامه مورد نظر را کامل در همه کلاینت ها مجزا و جداگانه نصب کنید، ضمن اینکه نیازی به نصب SQLServer در کلاینت ها نیست.
2) درصورت نیاز تنظیمات SQLServer را در رایانه سرور برای کارکرد تحت شبکه بررسی کنید.
3) سپس ConnectionString را به درستی در کلاینت ها تنظیم کنید.
(البته این طور که مشخص است اطلاعات کافی در خصوص مسائل چند ریسمانی هم ندارید و شاید ... فعلاً بیخیال!)

برای هر کدام از مراحل سه گانه فوق اگر مشکلی داشته باشید میتوانم کمک کنم در غیر این صورت و غیر این مسیر و روش، من کمکی نمیتوانم بکنم.

موفق و پیروز باشید.