PDA

View Full Version : کمک برای ساخت دیتابیس express



mehdi0020
سه شنبه 15 اسفند 1396, 11:13 صبح
سلام
من یه نرم افزار گزارش گیری دارم که تعداد کاربرای بالا و حجم اطلاعات بسار زیادی داره که هر گزارش ممکن است ساعت ها طول بکشد امکان ارتقاع سخت افزار سرور را ندارم برای همین تصمیم گرفتم برای هر کلاینت یه دیتابیس اختصاصی درست کنم که کاربر هر زمان اقدام به تهیه گزارش کرد اطلاعات از سرور به سیستم کاربر انتقال داده شه و عملیات روی این داده ها انجام بشه و سرور را اشغال نکنه.
برای این کار میخواهم دیتابیس express ایجاد کنم اما زمانیکه add new item..-> service based database میزنم این خطا رخ میدهد.
از دوستان اگه کسی میتونه راهنماییم کنه ممنون میشم.
میدونم راه درستی انتخاب نکردم ولی تنها راه ممکن به نظر خودم همینه اگه شما ایده ای دارید ممنون میشم راهنماییم کنید.
سپاس
147755

ali_md110
سه شنبه 15 اسفند 1396, 11:53 صبح
این خطا یعنی سرویس اسکیول سرور بر روی سیستم شما نصب نیست یا اگر نصب باشد سرویس در حالت stop میباشد
راه میانبر اینکه بر روی MyComputer کلیک راست کنید و گزینه Manage و سپس Service And Application و SQL server Configuration و SQL server Service و سپس در پانل سمت راست سرویس رو Run کنید
در ضمن اگر شما مشکل گزارشات زیاد دارید این روش شما که یک دیتاببیس به ازای هر کاربر میخاهید بسازید هیچ فایده ای ندارد چون در نهایت واکشی اطلاعات باید صورت بگیرد و تفاوتی نمی کند
بحث سرعت در واکشی به پلان کوئری شما و همچنین تکنیک های واکشی از دیتابیس و کش کردن اطلاعات هم بستگی داره
میتونید برای بازه های زمانی مختلف پارتیشنهایی برای دیتابیستون در اسکیول سرور بسازید

mehdi0020
سه شنبه 15 اسفند 1396, 12:22 عصر
این خطا یعنی سرویس اسکیول سرور بر روی سیستم شما نصب نیست یا اگر نصب باشد سرویس در حالت stop میباشد
راه میانبر اینکه بر روی MyComputer کلیک راست کنید و گزینه Manage و سپس Service And Application و SQL server Configuration و SQL server Service و سپس در پانل سمت راست سرویس رو Run کنید
در ضمن اگر شما مشکل گزارشات زیاد دارید این روش شما که یک دیتاببیس به ازای هر کاربر میخاهید بسازید هیچ فایده ای ندارد چون در نهایت واکشی اطلاعات باید صورت بگیرد و تفاوتی نمی کند
بحث سرعت در واکشی به پلان کوئری شما و همچنین تکنیک های واکشی از دیتابیس و کش کردن اطلاعات هم بستگی داره
میتونید برای بازه های زمانی مختلف پارتیشنهایی برای دیتابیستون در اسکیول سرور بسازید

سلام دوست عزیز ممنون از پاسخت
در مورد راه با توجه به شرایط من چاره ای جز این ندارم
ولی چون تا الان این نوع دیتابیس کار نکردم مشکل دارم
فرمودید دیتابیس به ازای هر کاربر اینو درست متوجه نمیشم! من در واقع میخوام اطلاعات از سرور به سیستم کاربر انقال داده شه و بعد کاربر با اون اطلاعات کار کنه و نیازی به اشغال سرور نداشته باشه

mehdi0020
سه شنبه 15 اسفند 1396, 12:28 عصر
این خطا یعنی سرویس اسکیول سرور بر روی سیستم شما نصب نیست یا اگر نصب باشد سرویس در حالت stop میباشد
راه میانبر اینکه بر روی MyComputer کلیک راست کنید و گزینه Manage و سپس Service And Application و SQL server Configuration و SQL server Service و سپس در پانل سمت راست سرویس رو Run کنید
در ضمن اگر شما مشکل گزارشات زیاد دارید این روش شما که یک دیتاببیس به ازای هر کاربر میخاهید بسازید هیچ فایده ای ندارد چون در نهایت واکشی اطلاعات باید صورت بگیرد و تفاوتی نمی کند
بحث سرعت در واکشی به پلان کوئری شما و همچنین تکنیک های واکشی از دیتابیس و کش کردن اطلاعات هم بستگی داره
میتونید برای بازه های زمانی مختلف پارتیشنهایی برای دیتابیستون در اسکیول سرور بسازید
SQL server Service امتحان کرده بودم ولی باز تلاش کردم خطا داد
147756

mr.sirwan
سه شنبه 15 اسفند 1396, 13:45 عصر
دوست عزیز شما مگه نمیگی تهیه گزارش از اطلاعات سرور ممکنه ساعتها طول بکشه، خب این مدت زمان به احتمال زیاد زمان واکشی و انتقال اطلاعات به کلاینت هاست، تولید گزارش زیاد طولانی نمیشه، دوستمون ali_md110 (http://barnamenevis.org/member.php?18325-ali_md110) هم به همین نکته داره اشاره میکنه که شما میخوای اون همه داده رو واکشی کنی (حالا بگیم فقط یک بار) بازم همون میشه دیگه اینکه نشد راه حل

ali_md110
سه شنبه 15 اسفند 1396, 13:50 عصر
از بالا گزینه دوم که Stop هست همون اسکیول اکپرس شما هست
روی اون کلیک راست کنید و start رو بزنید

mehdi0020
سه شنبه 15 اسفند 1396, 14:30 عصر
از بالا گزینه دوم که Stop هست همون اسکیول اکپرس شما هست
روی اون کلیک راست کنید و start رو بزنید
گزینه استارتس غیر فعاله تو تنظیماتشمم خواستم فعال کنم این فالت داد

mehdi0020
سه شنبه 15 اسفند 1396, 14:34 عصر
دوست عزیز شما مگه نمیگی تهیه گزارش از اطلاعات سرور ممکنه ساعتها طول بکشه، خب این مدت زمان به احتمال زیاد زمان واکشی و انتقال اطلاعات به کلاینت هاست، تولید گزارش زیاد طولانی نمیشه، دوستمون ali_md110 (http://barnamenevis.org/member.php?18325-ali_md110) هم به همین نکته داره اشاره میکنه که شما میخوای اون همه داده رو واکشی کنی (حالا بگیم فقط یک بار) بازم همون میشه دیگه اینکه نشد راه حل
دوست عزیز واکشی اطلاعات تست کردم زیاد طولانی نمیشه یه select و یه insert کمتر از یک دقیقه میشه
من برای هر گزارش از چند جدول استفاده میکنم که رکورد هاشون میلیونی هست که برای تهیه گزارش به چند صد هزارتاشون نیاز دارم (به تفکیک ماه) حالا میخوام بین این داده ها چندین فرمول سنگین انجام بدم

Mahmoud.Afrad
سه شنبه 15 اسفند 1396, 19:27 عصر
دوست عزیز واکشی اطلاعات تست کردم زیاد طولانی نمیشه یه select و یه insert کمتر از یک دقیقه میشه
من برای هر گزارش از چند جدول استفاده میکنم که رکورد هاشون میلیونی هست که برای تهیه گزارش به چند صد هزارتاشون نیاز دارم (به تفکیک ماه) حالا میخوام بین این داده ها چندین فرمول سنگین انجام بدم

غیر از واکشی اطلاعات کار دیگری هم روی سرور انجام میدید؟ چون این "چند فرمول سنگین" و "تهیه گزارش" که گفتید روی سیستم کاربر انجام خواهد شد و ربطی به سرور پیدا نمیکنه.
به نظر بنده بهتر هست یک نمونه از کوئری و محاسباتی که روی اون انجام میدید اینجا قرار بدید. اگر بتونید یک پروژه ضمیمه کنید خیلی بهتره.

ali_md110
سه شنبه 15 اسفند 1396, 23:04 عصر
اگر واکشی این اطلاعات خام کمتر از 1 دقیقه طول میکشه چرا این فرمول به ازای هر کاربر بیشتر از یک ساعت زمانبر هست؟ممکنه جایی از فرمول شما حلقه های نا مرتبط یا کدهای سخت داشته باشه

در ضمن میتونید فرمولهاتون سمت کلاینت بر روی این رکوردهای خام انجام بدید

mehdi0020
چهارشنبه 16 اسفند 1396, 08:11 صبح
غیر از واکشی اطلاعات کار دیگری هم روی سرور انجام میدید؟ چون این "چند فرمول سنگین" و "تهیه گزارش" که گفتید روی سیستم کاربر انجام خواهد شد و ربطی به سرور پیدا نمیکنه.
به نظر بنده بهتر هست یک نمونه از کوئری و محاسباتی که روی اون انجام میدید اینجا قرار بدید. اگر بتونید یک پروژه ضمیمه کنید خیلی بهتره.
هر فرمول به چندین کوئری نیاز دازه
یک جدول با حداقل 150هزار رکورد در نظر بگیرید که درون یک حلقه وجود دارد سپس برای هر رکورد کوئری های متعدد از چند جدول با تعدا رکورد های متناظر
با توجه به اینکه در هر کوئری متغیر ها تغییر می کنه و یه سری از ورودی ها با فرمول ساخته میشه امکان join ,union و امثال اینها وجود ندارد و تمام زمان تهیه گزارش سورو اشغال می باشد

ali_md110
چهارشنبه 16 اسفند 1396, 11:04 صبح
این 150 هزار رکورد بدون محاسبه فرمول چقدر زمان بر هست؟
با توجه به اینکه هزینه کردن یک سرور قوی برای شما امکان ندارد
بنظر من یکی از راههای شما Linq To Object هست همراه با بکارگیری Ef Code First
میتونید این داده ها را بصورت jsonیا یک لیست جنریک از مدلهای مرتبط به سمت کلاینت ارسال کنید و در سیستم کلاینتها این فرمولها رو بر روی داده های درون حافظه و مدلهایی که با Navigation Property ها با هم ارتباط دارند داده هاتون رو محاسبه کنید

mehdi0020
شنبه 19 اسفند 1396, 08:10 صبح
این 150 هزار رکورد بدون محاسبه فرمول چقدر زمان بر هست؟
با توجه به اینکه هزینه کردن یک سرور قوی برای شما امکان ندارد
بنظر من یکی از راههای شما Linq To Object هست همراه با بکارگیری Ef Code First
میتونید این داده ها را بصورت jsonیا یک لیست جنریک از مدلهای مرتبط به سمت کلاینت ارسال کنید و در سیستم کلاینتها این فرمولها رو بر روی داده های درون حافظه و مدلهایی که با Navigation Property ها با هم ارتباط دارند داده هاتون رو محاسبه کنید
با این کار سرور من آزاد میشه؟
برای من مهمترین موضوع از اشغال در اومدم سرور هست چون کاربرای زیادی از این برنامه استفاده میکنند.
اگه هم ممکن هست بیشتر توضیح بدید ممنون

Mahmoud.Afrad
شنبه 19 اسفند 1396, 10:02 صبح
هر فرمول به چندین کوئری نیاز دازه
یک جدول با حداقل 150هزار رکورد در نظر بگیرید که درون یک حلقه وجود دارد سپس برای هر رکورد کوئری های متعدد از چند جدول با تعدا رکورد های متناظر
با توجه به اینکه در هر کوئری متغیر ها تغییر می کنه و یه سری از ورودی ها با فرمول ساخته میشه امکان join ,union و امثال اینها وجود ندارد و تمام زمان تهیه گزارش سورو اشغال می باشد

اگر میتونید یک مثال و کد قرار بدید.

ali_md110
شنبه 19 اسفند 1396, 13:31 عصر
لطفا توضیح بدید کدهای سمت اسکیول سرور بصورت SP هست یا بصورت SQL INLINE در سمت کاربراهاتون
و اینکه EF code first بکارگیری ORM محبوب یعنی Entity framework هست
با EF میتونیم معادل جداول موجود بانک اطلاعاتی یک سری کلاسهای سی شارپ مرتبط بهم بسازیم
و دقیقا همان اعمالی که با یک بانک اطلاعاتی واقعی انجام میدهیم با این کلاسها انجام دهیم و روابط یک به چند یا چند به چند و غیره بین این کلاسها برقرار کنیم دقیقا شبیه ارتباطات درون بانک
بکارگیری EF محدودیت نوع دیتابیس را ندارد
میتوانیم بدون دسترسی داشتن به دیتابیس با مقادیر داخل حافظه بصورت موقت اطلاعات را در حافظه درج ویرایش و حذف کنیم و در نهایت به یک دیتابیس مشخص انتقال دهیم
شما در application سمت کلاینت خودتون میتونید ابتدا داده ها را بصورت خام و محاسبه نشده از دیتابیس واکشی کنید و با همین کلاسهای EF که معادل بانکتون هست , درون حافظه کامپیوتر کاربرهاتون محاسبات انجام بدید و در صورت تمایل میتونید حاصل محاسبه در یک فایل xml موقتی ذخیره کنید

mehdi0020
یک شنبه 20 اسفند 1396, 06:47 صبح
لطفا توضیح بدید کدهای سمت اسکیول سرور بصورت SP هست یا بصورت SQL INLINE در سمت کاربراهاتون
و اینکه EF code first بکارگیری ORM محبوب یعنی Entity framework هست
با EF میتونیم معادل جداول موجود بانک اطلاعاتی یک سری کلاسهای سی شارپ مرتبط بهم بسازیم
و دقیقا همان اعمالی که با یک بانک اطلاعاتی واقعی انجام میدهیم با این کلاسها انجام دهیم و روابط یک به چند یا چند به چند و غیره بین این کلاسها برقرار کنیم دقیقا شبیه ارتباطات درون بانک
بکارگیری EF محدودیت نوع دیتابیس را ندارد
میتوانیم بدون دسترسی داشتن به دیتابیس با مقادیر داخل حافظه بصورت موقت اطلاعات را در حافظه درج ویرایش و حذف کنیم و در نهایت به یک دیتابیس مشخص انتقال دهیم
شما در application سمت کلاینت خودتون میتونید ابتدا داده ها را بصورت خام و محاسبه نشده از دیتابیس واکشی کنید و با همین کلاسهای EF که معادل بانکتون هست , درون حافظه کامپیوتر کاربرهاتون محاسبات انجام بدید و در صورت تمایل میتونید حاصل محاسبه در یک فایل xml موقتی ذخیره کنید
فکر میکنم همون چیزی باشه که من لازمش دارم
در موردش یکم مطالعه میکنم

mehdi0020
یک شنبه 20 اسفند 1396, 07:19 صبح
اگر میتونید یک مثال و کد قرار بدید.
یکم پیچیدس
گزارش وضعیت انجام فعالیت های دوره ای یک شرکت
یک جدول اصلی دارم ک لیست فعالیت ها داخلشه حدود 150 هزار رکورد که هر یک از این رکوردها (فعالیت ها) باید نسبت به دوره تناوبش در طول بازه تهیه گزارش(معمولا یک ماه ) تکرار بشهقدم اول یک رکورد از این جدول میخونم (کوئری اول) سپس نسبت به دوره تناوبش... اگه هفتگی باشه در روزهای هفته .. روزانه... سه روزانه و بقیه دوره های تناوب ابن محاسبه در سیستم کلاینت انجام میشه سپس از یک جدول دیگه روز انجام فعالیت از نظر تعطیل کاری روز عادی و ... بررسی میشه (کوئری دوم) بسته به وضعیت روز انجام فعایت یک واکشی (کوئری سوم) و چندین فرموع جهت تعداد نفرات موجود انجام میشه و سپس انجام عدم انجام یا درصد انجام تا پایان بازه گزارش از جدول پاسخ (کوئری چهارم) که بالای یک میلیون رکورد داره بررسی میشه و با تابع sum درصد انجام فعالیت در صورتیکه انجام نشده بود از جدول دیگه (کوئری پنجم) علت عدم انجام یا تعریف درخوسات حدید و.... بررسی میشه
تمام این جداول با جدول اداره و واحد انجام دهنده و دسترسی نفر تهیه گزارش به نوع اداره یا واحد انجام دهنده باید کنترل شود
این خلاصه فقط یکی از گزارشات ساده این نرم افزار هستش حالا شما فرض کنید قراره بیش از 500نفر با این نرم افزار و گزارشات سنگین تر از این کار کنند