# Native Code > برنامه نویسی در Delphi > توسعه نرم افزارهای تحت شبکه >  sql server 2000 تحت شبکه

## sara66

سلام . من یه برنامه sql server 2000 نوشتم . میخوام تحت شبکش کنم چکار کنم ؟

سرویس دهنده / سرویس گیرنده باید باشه یا نه فقط بانک باید تو سرور باشه ؟

بیشتر کار کاربران جستجو و گزارشگیری.

*لطفا کمکم کنید*

----------


## Delphi Coder

> من یه برنامه sql server 2000 نوشتم


منظورتون اینه که یه برنامه نوشتید که از SQL Server 2000 استفاده میکنه.


> میخوام تحت شبکش کنم چکار کنم ؟


Connection String رو درست کنیدمیشه تحت شبکه.

----------


## sara66

آره

میشه توضیح بدین .
چجوری درست کنم بعدشم مدیریت بانک رو خود sql انجام میده یا نه به عهده منه یعنی وقتی یه کاربر داره با یه رکورد رو ویرایش میکنه کاربر دیگه ای قادر به حذف و ویرایش اون نباشه و امثال اینها.

----------


## SYNDROME

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


SQL را با IP سرور رجیستر کنید.
در زمان تنظیم ADOConnection در قسمت ServerName از IP سرور استفاده کنید
موفق باشید

----------


## sara66

کامل متوجه نشدم ولی اگه اینکارو بکنم دیگه تمامه ؟؟؟؟؟؟
پس مدیریت بانک چی ؟؟؟؟؟ یعنی یه نسخه از برنامه رو روی سیستمهای تحت شبکه نصب کنم.
نیاز نیست دو نسخه درست کنم یکی کلاینت یکی سرور .
اصلا کتابی با عنوان delphi 7 و sqlserver 200 نیست ؟

----------


## حمیدرضاصادقیان

سلام.ببین شما یک نسخه کامل از Sql server رو روی سرورت نصب میکنی و دیتابیس ها رو روی اون سوار میکنی. بعد روی کلاینتها نسخه msde رو نصب میکنی. بعد از اون فقط در داخل برنامه ات یک منو قرار میدی که بتونی این کانکشن استرینگ رو درست کنه.در داخل اون برای کاربرها مشخص میکنی که به جای سرور خودش از سروری که مشخص کردی استفاده کنه . 
برای کنترل دیتابیس دیگه باید زحمتش رو خودت بکشی.اگر قرار بود فقط با همین مورد برنامه تحت شبکه بشه این همه پست اینجا ایجاد نمی شد.تمامی اینها رو خود شما باید کنترل کنی.
موفق باشید.

----------


## sara66

ممنون
جریان msde چیه ؟؟ کنترل داده ها چجوریه ؟ 
پس فقط یه نرم افزار مینویسیم  کلایت / سرور نمیخواد نه ؟
لطفا بیشتر توضیح بدین یا اگه کتابی در این مورد هست معرفی کنید

----------


## vcldeveloper

> بعد روی کلاینتها نسخه msde رو نصب میکنی.


لزومی نداره MSDE را روی کلاینت ها نصب کنید. بر روی کلاینت ها باید فایل های مربوط به Client Connectivity نصب باشه که معمولا روی خود ویندوز نصب هست و عملا شما نیازی ندارید چیزی روی کلاینت ها خودتون نصب کنید.

----------


## sara66

خیلی  ممنون پس فقط رو سرور sql server 2000 developer رو نصب کنم.
نگفتین من برای مدیریت داده ها باید دوتا برنامه بنویسم یا نه ؟ یعنی یه برنامه که برنامه خودم بعد یه برنامه دیگه هم باید بنویسم برای کنترل داده ها و روی سرور باشه ؟؟؟؟؟
*لطفا کمکم کنید من تو کار با بانکها خیلی تازه کارم فقط با اکسس کار کردم*

----------


## vcldeveloper

> نگفتین من برای مدیریت داده ها باید دوتا برنامه بنویسم یا نه ؟


معنی "مدیریت داده ها" چی هست؟ 
کاربر از طریق برنامه شما در سمت کلاینت دستورهایی برای کار با داده ها در سمت سرور یا درخواست داده ها به سرور بانک اطلاعاتی ارسال میکنه، سرور هم داده های درخواست شده را به کلاینت می فرسته، و کلاینت داده ها را به شکل مناسب به کاربر نمایش میده.

به همراه SQL Server بر روی سرور نرم افزاری هم برای مدیریت بانک های اطلاعاتی موجود در سرور نصب میشه که از طریق آن می تونید SQL Server و بانک های اطلاعاتی خودتون را پیکربندی کنید.

----------


## sara66

خیلی ممنون

منظورم از مدیریت داده ها اینه که مثلا وقتی یک کاربر داره یه رکورد رو ویرایش میکنه کاربر دیگه نتونه اون رکورد رو حذف یا ویرایش کنه و امثال اینها .

پس من 2 تا نرم افزار باید بنویسم ؟ نرم افزاری که برای کاربرا هست رو فقط conectionstring رو درست کنم  ؟
اون نرم افزار که رو سرور نصب میشه چی ؟

ببخشید من اینهمه سوال میکنم . 

راستی کتابی در این مورد نیست مثلا با عنوان delphi و sql server

----------


## vcldeveloper

> منظورم از مدیریت داده ها اینه که مثلا وقتی یک کاربر داره یه رکورد رو ویرایش میکنه کاربر دیگه نتونه اون رکورد رو حذف یا ویرایش کنه و امثال اینها .


اینها را از طریق نرم افزار کلاینتی که می نویسید می تونید اعمال کنید. مثلا خصوصیت LockType در کامپوننت های ADO برای همین موردی هست که در بالا بهش اشاره کردید.




> پس من 2 تا نرم افزار باید بنویسم ؟ نرم افزاری که برای کاربرا هست رو فقط conectionstring رو درست کنم  ؟
> اون نرم افزار که رو سرور نصب میشه چی ؟


برای کار شما فقط یک نرم افزار نیاز هست. اون هم نرم افزار کلاینت هست. در سمت سرور هم شما SQL Server را نصب می کنید. همین.




> راستی کتابی در این مورد نیست مثلا با عنوان delphi و sql server


توی تمام کتاب های آموزش دلفی بخشی برای کار با بانک های اطلاعاتی پیدا میشه. اون بخش ها را مطالعه کنید. برای آشنایی با SQL Server و نحوه عملکرد آن هم باید کتاب های آموزش SQL Server را مطالعه کنید. مفاهیم اولیه کار با بانک های داده و انواع معماری های نرم افزاری که برای این کار استفاده میشند معمولا در همون کتاب های دلفی بطور مختصر توضیح داده میشند، ولی برای توضیحات مفصل تر باید به کتاب هایی که بطور خاص درباره طراحی و مدیریت بانک های اطلاعاتی، یا تکنولوژی های ارتباط با بانک اطلاعاتی، یا معماری نرم افزار بحث می کنند، مراجعه کنید

----------


## sara66

خیلی خیلی ممنون .

خوب پس اون نرم افزار که گفتین رو سرور نصب میشه چیه ؟ 
من یه کتاب دارم که قسمتی از اون مربوط به ADO/Access ولی در مورد شبکش چیزی نگفته . البته dbexpress و datasnap  رو توضیح داده نیاز به خوندن اینا که ندارم نه ؟؟

----------


## sara66

[QUOTE=علی کشاورز;515423]

به همراه SQL Server بر روی سرور نرم افزاری هم برای مدیریت بانک های اطلاعاتی موجود در سرور نصب میشه که از طریق آن می تونید SQL Server و بانک های اطلاعاتی خودتون را پیکربندی کنید.[/QUOTE

اون نرم افزار چیه ؟

----------


## vcldeveloper

> اون نرم افزار چیه ؟


این بخشی از بسته نرم افزاری SQL Server هست. شما نمی سازیدش، خودش با SQL Server نصب میشه. در SQL Server 2000 اسمش هست Enterprise Manager و در SQL Server 2005 اسمش هست Management Studio. به همراه  SQL Server علاوه بر Database Engine و Management Studio نرم افزارها و سرویس های دیگه ایی هم نصب میشه که برای امور مختلفی استفاده میشند. می تونید با تهیه یک کتاب درباره SQL Server با آنها آشنا بشید.

----------


## sara66

خیلی خیلی ممنون لطف کردین 
من کتاب sql server 2000 رو دارم مال جعفر نژاد قومی خوبه ؟

خوب فقط یه مشکل هست اونم تنظیمات دلفی و برنامه برای تحت شبکه شدنه.
اگه قبلا بحث شده میشه لینک مطلب رو بدین. 

 ممنون

----------


## vcldeveloper

> من کتاب sql server 2000 رو دارم مال جعفر نژاد قومی خوبه ؟


نمی دونم.




> خوب فقط یه مشکل هست اونم تنظیمات دلفی و برنامه برای تحت شبکه شدنه.
> اگه قبلا بحث شده میشه لینک مطلب رو بدین.


در همین بخش *ConnectionString* را جستجو کنید.

----------


## etedali

سلام به همگی من شبکه در دلفی را خیلی سرچ کردم اما جوابمو نگرفتم.
من برنامه فروشگاهی نوشتم میخوام تحت شبکه اجرا بشه اما میخوام برای شبکه یک فایل متنی بسازم که AdoConection  من اطلاعات را از این فایل بخونه و بر نامه اجرا بشه هدف من اینه که دیگه نیاز به ساخت برنامه Client/Server   نباشه فقط در این فایل متنی Ip کامپیوتر سرور را تایپ کنم و اطلاعات از دیتا بیس کامپیوتر Server خونده بشه در این فایل من میخوام با تغییر Data Source اطلاعات روی کامپیوتر سرور یا هر جایی بخوام اجرا بشه
من این روش را دیدم حالا می خوام بدونم ایا روش درستی هست یا نه اگر نیست برای شبکه چون اصلا کار نکردم باید چکار انجام بدهم.
من این روش را تست کردم یعنی اطلاعات را از فایل خوندم در قسمت ConectionString ریختم بعد جدول هام را خاصیت اکتیو را true کردم اما بازم نشد باید چه عملی انجام دهم  در SQL هم نیازی هست تغییری بدهم.؟

----------


## vcldeveloper

> اما میخوام برای شبکه یک فایل متنی بسازم که AdoConection من اطلاعات را از این فایل بخونه و بر نامه اجرا بشه هدف من اینه که دیگه نیاز به ساخت برنامه Client/Server نباشه فقط در این فایل متنی Ip کامپیوتر سرور را تایپ کنم و اطلاعات از دیتا بیس کامپیوتر Server خونده بشه در این فایل من میخوام با تغییر Data Source اطلاعات روی کامپیوتر سرور یا هر جایی بخوام اجرا بشه


خب اینی که نوشتید خودش یعنی یک برنامه Client\Server، حالا منظور شما از اینکه "نیاز به ساخت برنامه Client/Server نباشه" را متوجه نمیشم!

----------


## etedali

با سلام.
من درست منظور خودما نرسوندم منظور من اين بود كه برنامه ايي نميخوام كه دوتا Setup  داشته باشه شبيه به نرم افزار هايي از قبيل Easy Cafe  كه در كافي نت ها استفاده ميشه اينجور نمي خوام باشه كه براي كامپيوتر سرور نرم افزار سرور و براي كلاينتها نسخه كلاينت نصب بشه.
اگرميشه  من را در نحو اجراي فايل متني كه بتونم فقط با دادن ip  سرور مشخص كنم كدام كامپيوتر من سرور هست راهنمايي كنيد. براي اجراي اين كار اگر توضيحاتي به من بدهيد ممنون ميشم.

----------


## vcldeveloper

> من درست منظور خودما نرسوندم منظور من اين بود كه برنامه ايي نميخوام كه دوتا Setup  داشته باشه


در برنامه های Client\Server مبتنی بر بانک اطلاعاتی، شما فقط برنامه کلاینت را می نویسید، در سمت سرور برنامه مدیریت بانک اطلاعاتی قرار میگیره (مثلا MS SQL Server, MySQL, Oracle و...). پس برنامه شما فقط یک Setup داره، البته برنامه مدیریت بانک اطلاعاتی هم باید روی سرور نصب باشه. دیگه نیازی نیست که شما هم یک برنامه جداگانه برای سرور بنویسید و روی سرور نصب کنید.

----------


## etedali

سلام  ممنون از راهنمایی.
من کارهایی که انجام دادم را میذارم ببینید من برای رفع اشکال کارم باید چه کارهایی انجام دهم. من در Data Madule در قسمت Form Create این کد ها را نوشتم
procedure TDm.DataModuleCreate(Sender: TObject);
var
  s: textfile;
  a:WideString;
begin
      AssignFile(s,'a.txt');
      Reset(s);
      Readln(s,a);
      ADOConnection1.ConnectionString := a;
      ADOConnection1.LoginPrompt := false;
      ADOConnection1.Connected := true;
      TMoshtari.Connection := ADOConnection1;
      TMoshtari.Active := True;
      CloseFile(s);
end;
ایا با این روش فایل متنی من که در فولدری که برنامه نصب می شود وجود دارد خوانده می شود؟ آیا جدول مشتری درست ارتباط پیدا می کند؟ و سوال آخر اگر IP قسمت WorkStation Idفایل متنی را تغییر دهم روی کامپیوتر سرور برنامه اجرا می شود؟
متن فایل متنی را میذارم ببینید اشکال دارد یا خیر؟
Provider=SQLOLEDB.1;
Integrated Security=SSPI;
Persist Security Info=False;
Initial Catalog=Etedali;
Use Procedure for Prepare=1;
Auto Translate=True;
Packet Size=4096;
Workstation ID=SONY-N395E;
Use Encryption for Data=False;
Tag with column collation when possible=False


لطفا چون من اصلا شبکه را کار نکردم همه اشکالات کارم را بگید و اگر امکان داره راهنمایی کنید تا برطرف کنم.

----------


## vcldeveloper

> ایا با این روش فایل متنی من که در فولدری که برنامه نصب می شود وجود دارد خوانده می شود؟


با Readln فقط خط اول فایل متنی خوانده میشه. نیازی نیست از روش های قدیمی Trubo Pascal برای خواندن فایل استفاده کنید، روش راحتتر و مناسب تر:

var
  CS : TStringList;
begin
  CS := TStringList.Create;
  try
    CS.LoadFromFile('a.txt');
    AdoConnection1.ConnectionString := CS.Text;
  finally
    CS.Free;
  end;
end;




> اگر IP قسمت WorkStation Idفایل متنی را تغییر دهم روی کامپیوتر سرور برنامه اجرا می شود؟


ٌWorkStation ID خصوصیت مهمی نیست. شما می تونید حتی حذفش کنید. برای ارتباط با سرور، باید آدرس سرور و نام Database ایی که می خواید بهش وصل بشید، و Username\Password مربوطه را داشته باشید.
اگر سرور شما با کامپیوترهای کلاینت در یک Work Group باشند، فقط نام سرور کفایت میکنه (اگر برای MS SQL Server نصب آن اسمی گذاشتید، نام سرور + نام MS SQL Server، در غیر اینصورت، فقط نام کامپیوتر سرور). اگر در یک Work Group نیستند، آدرس IP سرور و نام MS SQL Server.
به نظر میاد در این ConnectiString ایی که شما گذاشتید، نام و آدرس سرور قرار داده نشده؛ همچنین نوع اعتبارسنجی کاربر Windows Authentication هست. در این حالت، باید به ازاء هر کاربری که به سرور وصل میشه، یک Username در ویندوز کامپیوتر سرور ایجاد کنید. برای پرهیز از اینکار، حالت Authentication را به  SQL Server تغییر بدید. در این صورت، برای هر کاربر باید در خود SQL Server یک username\password تعریف کنید تا بتونه به سرور متصل بشه. این username\password هم باید در ConnectionString ذکر بشه.
می تونید یک بار با استفاده از AdoConnection به SQL Server موجود در سیستم خودتون وصل بشید و در دایالوگ باکس مربوطه مشخصات را درست وارد کنید، بعد ConnectionString را در سورس فایل مربوطه Copy\Paste کنید و بجای نام سرور و Username\Passowrd برای هر کلاینت مقادیر مناسب را بنویسید.

در این زمینه زیاد بحث شده، حتی راهنماهای قدم به قدم هم در سایت موجود هست.

----------


## etedali

سلام به همه دوستان.
با راهنمايي هاي آقاي كشاورز من مشكلم كاملا حل شد اما دوباره براي من  يه سوالي پيش اومد اينكه من اگر در برنامه ايي فرمي داشته باشم به نام ثبت كالا كه دو كاربر به صورت همزمان وارد اين قسمت شده و شروع به وارد كردن اطلاعات در Edit  ها بشوند وقتي كه دكمه ذخيره را ميزنند تا ديتا بيس در حالت insert  برود آيا مشكلي پيش نمياد؟ اگر مياد چه راه حلي پيشنهاد مي كنيد؟

----------


## vcldeveloper

> اگر در برنامه ايي فرمي داشته باشم به نام ثبت كالا كه دو كاربر به صورت همزمان وارد اين قسمت شده و شروع به وارد كردن اطلاعات در Edit ها بشوند وقتي كه دكمه ذخيره را ميزنند تا ديتا بيس در حالت insert برود آيا مشكلي پيش نمياد؟ اگر مياد چه راه حلي پيشنهاد مي كنيد؟


در همین بخش LockType را جستجو کنید.

----------


## arkia

> لزومی نداره MSDE را روی کلاینت ها نصب کنید. بر روی کلاینت ها باید فایل های مربوط به Client Connectivity نصب باشه که معمولا روی خود ویندوز نصب هست و عملا شما نیازی ندارید چیزی روی کلاینت ها خودتون نصب کنید.


میدونم پست قدیمیه اما Client Connectivity رو چجوری میشه جدا نصب کرد؟

----------


## vcldeveloper

> میدونم پست قدیمیه اما Client Connectivity رو چجوری میشه جدا نصب کرد؟


در صفحه زیر دنبال Microsoft SQL Server 2008 Native Client بگردید، و از لینک های داده شده، دانلودش کنید. 
http://www.microsoft.com/en-us/downl....aspx?id=16177

----------


## maryammb66

سلام 
من می خوام برنامه ای که با دلفی نوشتم ، sql آن رو از هاست بخونم ، دیتابیسش تحت شبکه باشه ، میشه راهنمایم کنید؟
من Sql روی هاستم هست!
ADOConnection1 که هست رو چطوری تعریف کنم و data source &data table  ها رو چطوری مقدار دهی کنم؟

----------


## mohsen24000

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

----------


## maryammb66

من کانکش استرینگ رو تونستم set  کنم، حالا ado tabale va data source  رو چطوری activ  کنم؟

----------


## arkia

datasource که نیازی به اکتیو کردن نداره فقط باید ado table رو بهش وصل کنی و هر جا که دوست داشتی (هنگام لود فرم یا بعد از کانکت شدن کانکشن) بنویسی:

adotable1.active:=true;

----------


## SayeyeZohor

با سلام
خواستم از دوست خوبم آقاي كشاورز بپرسم استفاده از كامپوننت Sdac براي شبكه و ... بهتر از ado نيست؟

----------


## vcldeveloper

> استفاده از كامپوننت Sdac براي شبكه و ... بهتر از ado نيست؟


ُSDAC با توجه به اینکه برای SQL Server بهینه سازی شده، قابلیت های بیشتری از SQL Server را نسبت به ADO در اختیار برنامه نویس قرار میده، و سرعتش هم تا حدودی بهتر از ADO هست.

----------

