# Native Code > برنامه نویسی در 6 VB > برنامه نویسی مرتبط با شبکه و وب در VB6 >  تحت شبکه کردن برنامه با بانک اطلاعات sql server

## mahmood_s

با سلام به اساتيد محترم 


اگه ممكنه طرز نوشتن يك برنامه تحت شبكه با وي بي و بانك اطلاعاتي sql رو راهنمايي بفرماييد 

فقط اگه ممكنه  روش كار رو توضيح بديد و در صورت امكان يك مثال بذاريد

چه طوري ميتونم برنامه رو بنويسم و چه طوري و تو كدوم كامپيوتر بانك رو قرار بديم و چه طوري در برنامه sql اجازه دسترسي بديم  و چگونه براي كامپيوترهاي ديگه برنامه رو نصب كنيم و تو شبكه تعريف كنيم 


خواهشي كه دارم اينكه دوستان لطف كنن و مثل تاپيكهاي قبلي  در مورد يك ابزار خاص فقط توضيح ندن مثل winsok اگه بشه توي يك مثال همگي كمك كنيم و قدم به قدم طرز نوشتن يه همچنين برنامه اي رو آموزش بديدم تا همه بتونن اطلاعات و راهنمايي كافي بدست بيارن

*باز هم از همه ي دوستان تشكر ميكنم*


اگه سوالي بود بفرماييد تا جواب بدم

----------


## mahmood_s

فكر كنم در اين زمينه تمامي دوستان استاد هستند و كسي مشكلي نداره 

و 

تمام اساتيد هم به خاطر مشغله كاري نميتونن راهنمايي بكنن 


مشكلي نيست ما هنوز اميد داريم به راهنمايي

----------


## reza_mn

دوست عزیز ، کافیه شما استفاده از ms sql رو بلد باشین ، و بتونین از وی بی بهش متصل بشین . در اینصورت به هیچ کار اضافی دیگه ای نیازی نیست ، حتی Winsok.
شما در این رابطه یک کامپیوتر رو به عنوان سرور انتخاب میکنید ، و نرم افزار ms SQL رو روش نصب میکنی ، بانک اطلاعاتی رو روش میسازی ( یا اتچ میکنی )، بعد کارتون با سرور تموم شده.
برنامه ای که نوشتین رو کلاینتها نصب میکنید . آماده برای استفاده است .
نکته ای که اینجا میمونه ریزه کاریهای مربوط به کانکشنهای مربوط به SQL و استفاده از ADO تو وی بی هست که چندین بار تو انجمن در موردشون بحث شده ، باز توضیحی نیاز بود در خدمتیم.

----------


## mahmood_s

> دوست عزیز ، کافیه شما استفاده از ms sql رو بلد باشین ، و بتونین از وی بی بهش متصل بشین . در اینصورت به هیچ کار اضافی دیگه ای نیازی نیست ، حتی Winsok.
> شما در این رابطه یک کامپیوتر رو به عنوان سرور انتخاب میکنید ، و نرم افزار ms SQL رو روش نصب میکنی ، بانک اطلاعاتی رو روش میسازی ( یا اتچ میکنی )، بعد کارتون با سرور تموم شده.
> برنامه ای که نوشتین رو کلاینتها نصب میکنید . آماده برای استفاده است .
> نکته ای که اینجا میمونه ریزه کاریهای مربوط به کانکشنهای مربوط به SQL و استفاده از ADO تو وی بی هست که چندین بار تو انجمن در موردشون بحث شده ، باز توضیحی نیاز بود در خدمتیم.


 با تشكر از شما


در مورد sql نسبتا مشكلي ندارم
د رمورد stringconction  در adodc و ارتباطش با sql  هم فكر كنم مشكلي نباشه 
من اين جوري متصل ميشم

constr = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=dbusers ;Data Source=192.168.0.1" 

 به نظر شما همين كافيه

----------


## Naghibi

آره این دستور درسته. فقط من زمانی که برنامه رو رو کلاینت نصب کردم با همین دستور برنامه نمی تونست به سرور وصل بشه بعد از کلی دردسر فهمیدم که کاربر روی کلاینت علاوه بر تعریف روی سرور، باید خاصیت owner روی Database برنامه داشته باشه. این نکته رو حتما یادت نشه.

----------


## j.farazani

پس ديگه مشكل كجاست عزيز ؟

----------


## HjSoft

يه سوال اين عبارت كافيه براي اتصال يا بايد نام Instance هم بزنيم ؟

Data Source=192.168.0.1"

----------


## Naghibi

فرقی نداره هم می تونه با نام instance و هم می تونه با آدرس IP به شبکه وصل بشه

----------


## mahmood_s

> آره این دستور درسته. فقط من زمانی که برنامه رو رو کلاینت نصب کردم با همین دستور برنامه نمی تونست به سرور وصل بشه بعد از کلی دردسر فهمیدم که کاربر روی کلاینت علاوه بر تعریف روی سرور، باید خاصیت owner روی Database برنامه داشته باشه. این نکته رو حتما یادت نشه.


اگه امكان داره در مورد owner توضيح بديد

----------


## Naghibi

وقتی کاربر خاصیت owner نداشته باشه خطای Login Failed میده و به بانک وصل نمیشه. برای جلوگیری از این خطا اول اون کاربر رو تو خود SQL تعریف کنی (تو SQL 2000 باید از قسمت Security>Login استفاده کنی) بعد توی پوشه دیتابیس خودت اون کاربر رو اضافه می کنی و خاصیت db_owner اون رو فعال می کنی.("Database Name">Users>New Database User)

----------


## mahmood_s

> وقتی کاربر خاصیت owner نداشته باشه خطای Login Failed میده و به بانک وصل نمیشه. برای جلوگیری از این خطا اول اون کاربر رو تو خود SQL تعریف کنی (تو SQL 2000 باید از قسمت Security>Login استفاده کنی) بعد توی پوشه دیتابیس خودت اون کاربر رو اضافه می کنی و خاصیت db_owner اون رو فعال می کنی.("Database Name">Users>New Database User)



تعريف ip كاربر يا اسم كاربر

----------


## Naghibi

خودش Search داره اسم کاربر یا گروهی رو که بخوای از روی شبکه پیدا می کنه نیازی به IP نیست

----------


## HjSoft

ميشه يكم بيشتر توضيح بدين. براي كانكت شدن كلاينت ما نياز داريم كه كاربر تعريف شده باشه يا نه ؟ . يعني ما ميتونيم قبل از ارائه برنامه به مشتري كاربر ها رو تعريف كنيم و مشتري فقط بياد و آيپي سرور رو بده و وصل بشه ؟
يه سوال ديگه User SA چيست . من بدون اون هم روي سيستم خودم به sql وصل مي شم ، پس چه نيازي به اون هست ؟

----------


## HjSoft

لطفا اگر ميشه ، اين سوالات رو كه دوستمون مطرح كردن رو جواب بدين .



> كدوم كامپيوتر بانك رو قرار بدي





> چه طوري در برنامه sql اجازه دسترسي بديم  و چگونه براي كامپيوترهاي ديگه برنامه رو نصب كنيم و تو شبكه تعريف كنيم

----------


## Naghibi

اگه منظورتون از دادن سطح دسترسی ، دادن مجوز به کاربر روی بانک اطلاعاتی است باید وقتی کاربر رو تو بانک اطلاعاتی تعریف کردین بعدش روی اسم کاربر Properties بگیرین و هر مجوزی رو که خواستین بهش بدین.

----------


## HjSoft

ممنون از اينكه پاسخ دادين . اما نه _،_ ما دونوع اتصال به ديتابيس داريم ، يكي با استفاده از يوزر Sa و ديگري بدون استفاده از يوزر ، خوب فرق اين دوتا چيه ؟ كدام بهتره ؟ ، اما اگر ما نيازمنديم با يوزر sa به سرور وصل بشيم ، خوب همه ميتوننن با همين يوزر وصل بشن يا نه و بايد براي هر كدوم يك يوزر تعريف بشه ؟_ و اگر آره ، ميتونيم اين يوزر ها رو قبل از تحويل برنامه به كاربر براش تعريف كنيم يا نه ؟_

----------


## hamidrah

سلام
لطفا بیشتر در مورد owner توضیح بدید منم با خطای Login Failed مواجهم
من یه برنامه دفترچه تلفن نوشتم که بانکش sql و روی سرور است مشکلم اینجاست که از روی کامپیوترهایی که admin هستند یا سطح دسترسی بیشتری رو admin بهشون داده(مثل خودم) می تونند به بانک وصل شوند ولی بقیه که سطح دسترسی محدودتری دارند نمی تونند لطفا راهنماییم کنید. :متفکر:

----------


## mahmood_s

چند راه ديگه من پيدا كردم

يكي اينه كه در كامپيوتر Client بياين ip اون كامپيوتر رو كه sql روش نصب هست رو ريجستر كنيد

----------


## hamidrah

سلام آقا محمود
عکس ها نشاندهنده تنظیمات در SQLSERVER است که SQLSERVER روی سرور نصب شده
و روی کلاینت SQLSERVR نداریم میشه واضح تر توضیح بدین!؟لطفا اگه ممکنه راه های دیگه رو هم بگین.
راستی من  خیلی وقته تو پست های مختلف این مشکل رو سؤال کردم و کسی جوابم نداد ولی با اطلاعاتی که از جستجو در این سایت و پست کاربر نقیبی که گفته بودن خطای 
Login Failed  به علت تعریف نشدن کاربر در SQL است و همچنین جستجو در سایت های دیگر و تعریف کاربران در SQL تونستم مشکل رو حل کنم و الان همه کلاینت ها به SQL دسترسی دارند.
با تشکر

----------


## mahmood_s

> سلام آقا محمود
> عکس ها نشاندهنده تنظیمات در SQLSERVER است که SQLSERVER روی سرور نصب شده
> و روی کلاینت SQLSERVR نداریم میشه واضح تر توضیح بدین!؟لطفا اگه ممکنه راه های دیگه رو هم بگین.
> راستی من  خیلی وقته تو پست های مختلف این مشکل رو سؤال کردم و کسی جوابم نداد ولی با اطلاعاتی که از جستجو در این سایت و پست کاربر نقیبی که گفته بودن خطای 
> Login Failed  به علت تعریف نشدن کاربر در SQL است و همچنین جستجو در سایت های دیگر و تعریف کاربران در SQL تونستم مشکل رو حل کنم و الان همه کلاینت ها به SQL دسترسی دارند.
> با تشکر


روش اول همون طور كه خودتون گفتيد بايد روي سيستم كلاينت  SQLSERVER نصب باشه


اما در روش دوم بايد شما ipسيستم كلاينت رو براي سيستم سرور معرفي و اجازه دسترسي بدين 



مي تونيد در قسمت login name اين عبارت رو قرار بديد

NT AUTHORITY\NETWORK SERVICE

----------


## makh000f

با این کار باید جواب گرفته باشین !!!!!!

----------


## mahmood_s

> با این کار باید جواب گرفته باشین !!!!!!


بله 

يك برنامه تحت شبكه نوشتم كه فعلا داره كارميكنه

----------


## HjSoft

اين رو در چه صورت بايد انجام داد ؟ 
چون من هر چه قدر در يك سيستم بدون شبكه تست ميكنم ، ارور ميده  . در ضمن نميشه اين رو از طريق كد نويسي انجام دارد ؟
و سوال آخر اينكه همين رو بزنيم هر تعداد كاربر مي تونن ، Login بشن ؟

----------


## mahmood_s

مي تونيد در قسمت login name اين عبارت رو قرار بديد

NT AUTHORITY\NETWORK SERVICE

د رمورد قسمت بالا بايد حتما به شبكه وصل باشيد  تا همه كاربران به sql دسترسي داشته باشند

----------


## hamidrah

سلام
راهی بیاین روی انجام این کار از طریق کد نویسی صحبت کنیم
کسی اطلاعاتی راجع به این کار داره؟ :متفکر:

----------


## majjjj

ببینید دوستان ما دونوع سطح دسترسی به یک sql سرور داریم یکی از طریق اعتبار سنجی توسط sql و دیگر 
توسط  یک یوزر ویندوزی user sa  در sql server2000 بصورت پیش فرض فاقد پسورد هست و یک یوزر sql محصوب میشه اما در ورژنهای بالاتر اینجوری نیست مثلا روی 2008 شما میتونید  موقع نصب تنظیم کنید که فقط یوزرهای sql مجاز به استفاده از سرور باشن  و یوزرهای ویندوزی مجاز نباشن 
اینکه چرا دو نمونه سطح دسترسی یا پرمیژن تعریف میشه بخاطر ایجاد امنیت  هست مثلا چون مجوز سطح دسترسی ویندوز در داخل sql تعریف شده پس امنیت بیشتری داره تا برنامه هایی که درون خودشون یوزر و پسورد رو قرار میدن 
اما بخاطر راحتی کار و اینکه برنامه هایی که در شبکه کار میکنن احتیاجی نباشه برای هر کامپیوتر یک یوزر در sql server تعریف بشه کانکشن رو بصورت sql تعریف میکنن تا ستاپ برنامه روی هر کامپوتر شبکه به راحتی نصب و اجرا بشه
در ضمن روی یوزر sa پسورد بزارین تا افراد غیر مجاز نتونن تو sql نفوذ کنن

----------


## ashvazdangah

سلام
یک گروه کامپیوتر به هم شبکه شده اند و روی همه آنها sql server 2000 نصب شده است
من میخواهم از طریق یکی از کامپیوتر ها data base به data base یک سیستم دیگر دسترسی پیدا کنم و از آن استفاده کنم
لطفا اگر امکان دارد مراحل اینکار را دقیقا بگویید 
ممنونم

----------


## alirezah

سلام دوستان
اين كار بسيار ساده است

اين كدها در برنامه بنويسيد
Public Const SCnn = "Provider=MicroSoft.Jet.Oledb.4.0;Data Source"
Public Cnn As ADODB.Connection

Dim CNST_CONNECTION_STRING As String

CNST_CONNECTION_STRING = "FILE NAME=" & App.Path & "\inv_center.udl"
If Cnn.State <> 1 Then
    Cnn.ConnectionString = CNST_CONNECTION_STRING
    Cnn.ConnectionTimeout = 30
    Cnn.CommandTimeout = 120
    Cnn.CursorLocation = adUseClient
    Cnn.Open
End If
سپس فايل با پسوند udl را در مسير برنامه قرار دهيد.
اين كد به طور اتوماتيك سرور را پيدا نموده و اتصال به بانك مورد نظر را مهيا ميسازد.
جهت پيدا نمودن سرور كافي است روي فايل udl مورد نظر دبل كليك نماييد تا فرم مورد نظر را ويندوز باز نمايد. سپس پسورد و سرور شبكه و جدول مورد نظر را انتخاب نماييدو سپس سيو كنيد مابقي كار اتوماتيك انجام ميشود.اين نمونه حرفه اي ترين نحوه اتصال از طريق شبكه به اس كيو ال ميباشد.من جهت شركتهاي بزرگ از اين طريق استفاده مينمايم.چنانچه مايل بوديد برايتان يك كد به عنوان مثال بگذارم.
اميد وارم موفق باشيد.

----------


## juve2008

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

----------


## ghasedak_zb

> آره این دستور درسته. فقط من زمانی که برنامه رو رو کلاینت نصب کردم با همین دستور برنامه نمی تونست به سرور وصل بشه بعد از کلی دردسر فهمیدم که کاربر روی کلاینت علاوه بر تعریف روی سرور، باید خاصیت owner روی Database برنامه داشته باشه. این نکته رو حتما یادت نشه.


سلام من یه برنامه  تحت شبکه نوشتم اما روی سرور جواب می ده و روی کلاینت ها نه پیغام Timeout expired  میده به دنبال راه حل بودم که این تاپیک را دیدم من هیچ تنظیم خاصی روی  دیتا بیس ندادم و فقط یه کاربر پیش فرض خودشه را داره اگه ممکنه راهنمایی کنید چه شکلی کابران رو روی سرور تعریف کنم و خاصیت owner را بهشوم بدم البته شبکه ما یه شبکه ساده هستش و سرور به اوش شکل خاصش نیست به صورت قراردادی یکی از کامپیوترها را سرور تعریف کردیم و دیتابس روی اون نصب شده و برنامه انجا جواب میده خواهشا کمک کنید.

----------


## nima_8m

> سلام دوستان
> اين كار بسيار ساده است
> 
> اين كدها در برنامه بنويسيد
>            "=Public Const SCnn = "Provider=MicroSoft.Jet.Oledb.4.0;Data Source
>                                                                Public Cnn   As ADODB.Connection 
>                                                   Dim CNST_CONNECTION_STRING As String
> "CNST_CONNECTION_STRING = "FILE NAME=" & App.Path & "\inv_center.udl
>                                                                               If Cnn.State <> 1 Then
> ...


با سلام و ممنون از راهنمایی شما
اگه بانک ما اکسس باشه فقط پرو وایدر تغییر میکنه چطوری روی کلاینت از udl استفاده کنیم شما درست میگید به نظر منم استفاده از udl میتونه یکی از بهترینا باشه البته ODBC هم گزینه خوبی هستش
منتظر جوابتون هستم

----------


## somayeh66

سلام.
خوب دوستان چرا کسی یه نمونه کد عملی آپلود نمیکنه تا همه استفاده کنن ؟

----------


## nima_8m

سلام 
اینجا یه دونه پروژه تقریبا کامل گذاشتم
http://www.barnamenevis.org/showthread.php?t=244000
پست6
فقط کافی UDL رو تنظیم کنی بانک هرجا میخواد باشه

----------


## baamol

سلام.برنامه پایگاه داده sql server رو  میخوام تحت شبکه اجرا کنم.اما خطای bd net lib conection open میده.لطفا راهنمایی بفرمایید

----------


## ali190

دوستان برای استفاده از sql srever در شبکه از چه نسخه ای باید استفاده کنیم؟

----------


## ali190

سلام
دوستان ، جواب سئوال بالام رو بدست آوردم ، باید از نسخه Enterprise استفاده کرد
فقط یه سئوال مهم دیگه : 
برای اینکه بتونیم از sql server تحت شبکه استفاده کنیم ویندوز xp جواب میده یا باید از ویندوز WinServer200X استفاده نمود؟
ممنون و متشکر 
یاعلی

----------


## javadt

من توي xp تست كردم جواب داده

----------


## ali190

سلام
ممنون از شما
میشه بگید با چند کاربر تست کردید؟

----------


## javadt

با 4 كاربر يكي هم كه سرور بود
روي هر 5 تاش xp2006 نصب بود

----------


## mamoor

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

----------


## 2delboro

> سلام خدمت همه ... آقا لطفا از اول توضیح بدید که دقیقا باید از کجا شروع کنیم و به کجا ختم مثل فایل های اموزشی همراه با تصویر.  لطف اگر می شود فایلی آموزشی برای آن قرار دهید.خیلی ممنون


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

----------

