PDA

View Full Version : چند سوال



najeeb
پنج شنبه 19 شهریور 1383, 08:29 صبح
1) برای اتصال یه کلاینت به سرور IP سرور باید کجا تنظیم بشه.?

2) من با ADO تو دلفی کار می کنم .آیا رو کلاینت غیر از چیز دیگه ای هم لازمه ؟؟

3) sql رو روی user و pass خودش بزارم یا Win Authentication ؟؟


لطفا جواب کامل.

AminSobati
پنج شنبه 19 شهریور 1383, 11:27 صبح
دوست عزیزم،

1) برای اتصال یه کلاینت به سرور IP سرور باید کجا تنظیم بشه.?
شما کافیه تا IP سرور رو بدونین، حالا در ADO یا Query Analyzer یا Enterprise Manager به جای اسم، از IP سرور استفاده کنین.

2) من با ADO تو دلفی کار می کنم .آیا رو کلاینت غیر از چیز دیگه ای هم لازمه ؟؟
زمانیکه از ADO استفاده میکنید، پس MDAC یا Microsoft Data Access Component نصب شده و برای برقراری ارتباط با SQL Server چیز دیگه ای نیاز ندارید.

3) sql رو روی user و pass خودش بزارم یا Win Authentication ؟؟
این وابسته به شرایط شماست. اگر کاربران برنامه ای که مینویسید در هنگام ورود به برنامه نمیبایستی مجددا username و password ارایه بدن، win auth انتخاب بهتری هست ولی اگر domain مشخصی ندارید یا اصلا نمیخواید که برنامه شما به domain وابسته باشه، sql auth راحت تره.
ولی یک حسن همیشگی win auth اینه که تبادل اطلاعات security بین کلاینت و سرور encrypt میشه و اگر از Active Directory استفاده میکنید، روی password میتونین policy اعمال کنین یا همچنین Password Lockout (قفل کردن نام کاربر به خاطر سعی و خطا در پیدا کردن password) انجام بدین.
موفق باشین،
امین ثباتی MCSD

najeeb
پنج شنبه 19 شهریور 1383, 21:55 عصر
مرسی ولی بازم :(
1) MDAC را چطور نصب کنم و از کجا و آیا روی سرور هم باید نصب بشه ؟؟

2) در ضمن من سرور را روی کلاینت تنظیم میکنم ولی موقع اجرا این خطا رو میده :

login Failed for servername\Guest

najeeb
پنج شنبه 19 شهریور 1383, 21:57 عصر
معزرت :

من IP سرور را روی کلاینت تنظیم میکنم

vadood
پنج شنبه 19 شهریور 1383, 22:47 عصر
login Failed for servername\Guest


برای این که برنامه شما می خواهد با Windows Authentication به سرور وصل بشه، اما کاربری که برنامه را داره اجرا می کنه مجوز نداره.

AminSobati
جمعه 20 شهریور 1383, 00:20 صبح
درسته، شما با نام کاربری Guest به کلاینت لاگین کردین ولی برای این کاربر در SQL Server لاگین نساختین. برای هر کاربری که از برنامه شما استفاده میکنه یک لاگین در SQL Server بسازین. مشکل از IP و MDAC نیست.

najeeb
شنبه 21 شهریور 1383, 13:21 عصر
درست شد مرسی.
ولی برای کاربر خاصی تو sql server لگ این نساختم. شبکه هم بصورت workgroup کار میکنه و sql هم روی Win Ath تنظیم هست. من 7و8 کلاینت دارم. آیا اینطوری که تنظیم کردم درسته؟؟ لطثا بیشتر توضیح بدین.

AminSobati
شنبه 21 شهریور 1383, 14:46 عصر
پس لطفا دو موضوع رو کمی توضیح بدین:
1) آیا همه کاربرهای برنامه از یک UserName و Password یکسان استفاده میکنن برای لاگین کردن به ویندوز خودشون یا اینکه هر کدوم لاگین جدا دارن؟
2) دقیقا ConnectionString که در برنامه تا به حال استفاده میکردین رو اینجا Paste کنین.

najeeb
شنبه 21 شهریور 1383, 15:04 عصر
Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=transport;Data Source=10.10.10.1;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=SNA;Use Encryption for Data=False;Tag with column collation when possible=False';


آره همه با یک Login مشترک. لطفا توضیح کامل بدین
در شمن اگه Login مشترک نبود چکار کنم؟؟؟ :(

AminSobati
شنبه 21 شهریور 1383, 17:01 عصر
زمانی که شما از Integrated Security=SSPI استفاده میکنید، قید کردن User ID=sa نیازی نیست چون اصلا ازش استفاده ای نمیشه. ضمنا، IP رو که جلوی Data Source نوشتید کفایت میکنه و تمام پارامترهای بعد از اون غیر ضروری هستن.
حدس من اینه که همه کاربرهاتون از Administrator برای لاگین استفاده میکنن و شاید Password همگی blank باشه؟ لطفا توضیح بدین تا راه حل مناسب رو بشه پیشنهاد کرد.

najeeb
شنبه 21 شهریور 1383, 20:30 عصر
آره همین طوره ( Admin ).
من چطور می تونم IP رو به Data Source نسبت بدم یعنی Syntax اون چطوره؟؟؟؟ مثلا :
..... ???? =: Adoconection1.conectionstring

najeeb
شنبه 21 شهریور 1383, 20:33 عصر
لطف در مورده Integrated Security=SSPI بیشتر توضیح بدین.

AminSobati
شنبه 21 شهریور 1383, 21:38 عصر
همون کاری که انجام داده بودین درست بود:


Adoconnection1.connectionstring := "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;User ID=sa;Initial Catalog=transport;Data Source=10.10.10.1"

(البته به هر روشی که در دلفی باید انجام داد...)
Integrated Security=SSPI به SQL Server اعلام میکنه که کاربر از طریق Windows Authentication باید اجازه ورود پیدا کنه.
برای اینکه یوزرها بتونن با نامهای کاربری مختلف در workgroup از Windows Authentication استفاده کنن:
1) با هر نامی که یوزر به ویندوز خودش لاگین میکنه، روی کامپیوتری که SQL Server نصبه دقیقا یک Username و Password با همون مشخصات ایجاد کنین.
2) در SQL Server برای این کاربر جدید، یک لاگین (در حالت Windows Authentication) بسازین
الان کاربر با لاگین به کامپیوتر خودش، میتونه به SQL Server از طریق Windows Authentication لاگین کنه. تنها عیب استفاده از Windows Authentication در Workgroup اینه که اگر یوزر روی کامپیوتر خودش، Password رو عوض کنه، در کامپیوتری که SQL Server نصب شده هم روی ویندوز همین تغییر باید صورت بگیره.

najeeb
شنبه 21 شهریور 1383, 23:41 عصر
مرسی.
1) شما میگید برای هر کاربر جدید در sql یک لاگین بسازم در حالیکه من بدون ساختن هیچ لاگینی دارم از کلاینت به سرور کانکت و کار می کنم ؟؟؟؟؟؟؟؟؟؟؟؟
2) اگه همه pass ها یکی باشه (WorkGroup) بازم لاگین ساختن تو sql ضروریه؟؟؟؟
3) تفاوت یوزر ساختن و لاگین ساختن تو SQL چیه؟؟؟؟؟

آقای سباتی واقعا ار کمکتون ممنون :oops:

AminSobati
یک شنبه 22 شهریور 1383, 00:38 صبح
1) زمانی که SQL Server نصب میشه، لاگین Administrator به صورت پیش فرض ساخته شده، نیازی نیست شما بسازید. الان لاگین تمام کلاینتها به واسطه همین یک لاگین انجام میشه.
2) یکی بودن همه passwordها مهم نیست، مهم اینه که اگر در این workgroup هر یوزر لاگین خاص خودش رو داره، باید username که روی ویندوز دارای SQL Server براش ساخته میشه، همون username و همون passwork باشه که یوزر به کامپیوتر خودش لاگین میکنه. اگر کاربرها قراره سطوح دسترسی مختلف داشته باشند، بله، ساختن لاگینهای مجزا ضرورت داره.
3) لاگین در SQL Server فقط اجازه ورود به اون رو تامین میکنه(در سطح SQL Server معنی داره)، اما username در SQL Server در سطح دیتابیس مفهوم داره و مشخص کننده اختیارات یک لاگین در دیتابیس هستش.
به عنوان مثال، شما یک لاگین میسازین، یک username هم در دیتابیس و مشخص میکنید که این username به اون لاگین مربوطه. حالا هر سطح دسترسی که در دیتابیس بخواید به username میدین. حالا برای همون لاگین، یک username در دیتابیس دیگه ای میسازین و دسترسی های خاصش رو تعیین میکنین.
حسن این روش اینه که یک لاگین، در یک دیتابیس میتونه در سطح admin اختیار داشته باشه اما به همون لاگین در دیتابیس دیگه فقط در حد کاربر عادی اختیار میدین.

najeeb
یک شنبه 22 شهریور 1383, 06:54 صبح
آقای سباتی از لطفتون واقعا ممنون. فکر می کنم مشکلم حل شد.
امیدوارم همیشه موفق باشید. :flower: :flower: :flower:

AminSobati
یک شنبه 22 شهریور 1383, 10:30 صبح
:)