PDA

View Full Version : مشکل احراز هویت در هنگام اتصال به SQL Server



Mbr
سه شنبه 02 تیر 1383, 10:38 صبح
با سلام به دوستان عزیز
یک سوال داشتم و آن اینست که من از کامپوننت SDAC برای متصل شدن به SQL Server استفاده کرده ام ولی زمانی که می خواهم با استفاده از این کامپوننت به SQL Server همراه با username و password یک پیغام داده می شود و اتصال برقرار نمی شود در حالی که به راحتی با این username و password در خود محیط sql می توانم کار کنم . اگر می شود کمکم کنید . پیغام اینست که :

login failed for user 'saeed. reason : not associated with a trusted sql server connection.

A.VAHID
سه شنبه 02 تیر 1383, 21:01 عصر
سلام
من با برنامه SDAC کار نکردم ولی یک بار نام کاربر و یک بار نام دیتابیس در SQL را همراه فاصله و نقطه گذاشتم در اتصال به دیتابیس مشکل داشت شاید مال شما هم همین باشد
ع.و

مهدی کرامتی
سه شنبه 02 تیر 1383, 23:31 عصر
در SQL Server رویه احراز هویت (Authentication) را بر روی Windows + SQL Server قرار دهید.

Mbr
چهارشنبه 03 تیر 1383, 08:18 صبح
با سلام
من زمانی که در sdac در قسمت احراز هویت Authentication را بر روی windows قرار می دهم بدون هیچ مشکلی به sql متصل می شوم ولی می خواهم با username و password اینکار انجام گیرد نه بوسیله log خود ویندوز و زمانی که در احراز هویت قسمت sql server را انتخاب می کنم و username و Password را می زنم با پیغام خطا بالا مواجهه می شوم .
متشکرم اگر کمکم کنید .

مهدی کرامتی
چهارشنبه 03 تیر 1383, 17:00 عصر
تغییری که شما باید بدهید در تنظیمات SQL Server‌ است، نه SDAC.

مراحل زیر را طی کنید:

1- در Enterprise Manager‌ روی نام سرورتان رایت کلیک کنید.

2- از منویی که ظاهر میشود گزینه Properties‌ را انتخاب کنید.

3- در صفحه SQL Server Properties صفحه Security را انتخاب کنید.

4- در بخش Authentication گزینه SQL Server and Windows را انتخاب کنید.

میتوانید مراحل را در تصاویر دنبال کنید.

nasr
پنج شنبه 04 تیر 1383, 11:32 صبح
ممنون از آقای کرامتی عزیز :flower:

hr110
جمعه 05 تیر 1383, 12:38 عصر
با سلام
به خودم جسارت داده و بروی تاپیک جناب کرامتی حاشیه ایی میزنم که امیدوارم به کارتون بیاد.

برای اتصال به اسکیوال و از طریق ADO شما باید به سرور لاگین کرده باشید و در غیر اینصورت نمیتوان به بانک اطلاعاتی دسترسی داشت، لازمه اینکار نیز اینست که در هنگام استفاده از نرم افزار سمت client شما باید ابتدا با یکی از userهای سرور به سرور لاگین کرده (که میتوان اینکار کار را با تنظیمات به طور خودکار و هنگام ورود به ویندوز نیز انجام داده که مفصلاً جای بحث داره) و سپس نرم افزارتان را اجرا نمایید. این کار میتونه مشکل ساز باشه و اونهم اینکه یک کاربر برنامه نویسی میتونه با استفاده از این کاربر به بانک اطلاعاتی شما دسترسی پیدا کرده و خرابکاری کنه :(
به نظر شما برای این مشکل چه باید کرد :متفکر: ؟؟؟؟؟

مهدی کرامتی
جمعه 05 تیر 1383, 12:57 عصر
من دقیقا متوجه نمیشم در مورد شما چه اتفاقی میافته.

من بدون این مشکل و راحت به سرور متصل میشم.

hr110
جمعه 05 تیر 1383, 14:33 عصر
با سلام
منظور من اینست که نمیتوان به اسکیوال اتصال پیدا کرد، شاید دیده باشید وقتی که قرار است به اسکیوال متصل شوید دانستن یک شناسه از اسکیوال کافی نیست و باید ابتدا به سرور لاگین نمایید(همانطور که در تنظیمات بالا نمایش داده اید) یعنی علاوه بر شناسه اسکیوال باید یک شناسه از شناسه‌های تعریف شده در ویندوز سرور را هم داشته باشید. همین مسئله کافی است که هر کاربر با دانستن شناسه ویندوز به اطلاعات دسترسی داشته باشد ، معمولاٌ هم در سازمانها کسی حال ندارد که پسورد sa را ایجاد یا تغییر دهد و شما با دانستن همان شناسه به اطلاعات ان سازمان دسترسی داشته باشید.

امیدوارم که منظورم را متوجه شده باشید

مهدی کرامتی
جمعه 05 تیر 1383, 15:53 عصر
خیر.

نیازی نیست که حتما از طریق ویندوز نیز در آن سیستم به سرور SQL دسترسی پیدا کنید.

وقتی سیستم ویندوز اجرا میشود حتی اگر به سیستم لوگین نکرده باشید (فرض کنید این سیستم سرور باشد) کاربران میتوانند به سرور متصل شده و عملیات خود را انجام دهند، زیرا سرور SQL بصورت یک سرویس بر روی ویندوز اجرا میشود و بنابراین نیازی نیست برای اتصال به آن حتی به ویندوز لوگین کنید.

MFCGalaxy
سه شنبه 16 تیر 1383, 23:24 عصر
مشکل من هم دقیقا همان چیزی ست که آقای ربیعی مطرح نمودند ...
شرمنده !! ولی پاسخ جناب کرامتی را درست متوجه نشدم ...
اگه ممکنه کمی بیشتر توضیح بفرمایین...

ممنون..

JavanSoft
چهارشنبه 17 تیر 1383, 10:19 صبح
دقیقا حرف آقای کرامتی درست است
SqlServer شناسایی کاربر را از Windows مجزا می نماید
در این حالت می توان بدون Login کردن در Windows هم با User/Pass در SqlServer عمل LogIn را انجام داد

Mohammad S
شنبه 20 تیر 1383, 14:13 عصر
در این حالت می توان بدون Login کردن در Windows هم با User/Pass در SqlServer عمل LogIn را انجام داد
و این یعنی خطر!
چطور می توان این مساله را رفع کرد؟ :idea:

مهدی کرامتی
شنبه 20 تیر 1383, 15:19 عصر
در این حالت می توان بدون Login کردن در Windows هم با User/Pass در SqlServer عمل LogIn را انجام داد
و این یعنی خطر!
چطور می توان این مساله را رفع کرد؟ :idea:
میشه بفرمایید این چه خطری داره؟!؟

در یک سیستم سرور مانند سرور شبکه یا وب معمولا هیچ کاربری (بغیر از Administrator، آنهم بندرت و برای انجام مقاصد خاص) با اکانت ویندوز به سرور لوگین نمیکند.
در این موارد که اصولا SQL Server برای آن طراحی شده است بصورت یک سرویس روی کامپیوتر سرور اجرا میشود، یعنی حتی قبل از لوگین کردن با استفاده از اکانت ویندوز (که اصولا با توجه به مورد فوق الذکر غیر ضروری است) SQL Server اجرا شده و آماده ارائه سرویس است و کاربران مجاز میتوانند پس از احراز هویت از آن استفاده کنند.

حالا شما میفرمایید که برای استفاده از SQL Server باید به ازای هر کاربر یک اکانت در سرور تعریف شود؟!؟!؟

درست برعکس مورد مطرح شده توسط شما، لوگین کردن توسط اکانت ویندوز به سرور خطرناک است، نه لوگین کردن با استفاده از اکانت SQL Server .

delphi developer
دوشنبه 04 آبان 1383, 21:13 عصر
من برای انجام یک پروژه احتیاج به لیست Error Code های BDE یا ADO دارم.

ممنون می شم اگه کمکم کنید.

hmm
سه شنبه 05 آبان 1383, 07:10 صبح
با اجازه از آقای کرامتی
همون طور که ایشان فرمودند اگه در موقع نصب گفته باشید که sqlserver شما با یک یوزر داخلی سرویس بدهد دیگه لازم نیست هر بار که سرور رو restart میکنید به آن حتما لاگین کنید تا بتوانید از سرویسش استفاده کنید
اما در مورد کلاینت که دو راه دارید یکی احراز هویت توسط ویندوزه که در این روش شما باید برای هر کاربر تحت شبکه یک یوزر در sqlserver تعریف کنید یا اینکه از A.D استفاده نمایید (که به نظر من زیاد منطقی نیست)
و در روش دوم که احراز هویت توسط خود sqlserver هستش شما کافیه یک یوزر با حداقل دسترسی (به نسبت اینکه چکارهایی رو میخواهید برنامه انجام دهد) بسازید و در برنامه از طریق آن یوزر به دیتابیس متصل بشید
حتما هم برای sa یک رمز در نظر بگیرید که قابل حدس زدن نباشه

MH2538
پنج شنبه 03 آذر 1384, 13:32 عصر
سلام
به طور کل برای اتصال به SQLServer دو راه وجود دارد
1 - Windowsauthentication ‌که خیلی نا امن است
2 - SQLServerAuthentication
در حالت دوم که روش امن و رایجی است می توان username و password ذخیره و به کانکشن پاس داد
مثل این نمونه که در vb نوشته شده است:
ددر

cMe.CntSaveUsers.ConnectionString = "workstation id=" & WorkStationID & ";packet size=4096;user id=" & UserName & "; password =" & Password & "; data source=" & Source & ";persist se" & _
"curity info=False;initial catalog="&DatabaseName

کلماتی را که باید بعنوان پارامتر ارسال کرد با رنگ قرمز مشخص شده است