واضح آرشیو وب فارسی:سایت ریسک: hoseinquest06-09-2009, 03:56 PMسلام من با استفاده از LInq به sql ميخوام يك فايل رو تو يك فيلد varbinary(max) ذخيره كنم . ضمنا Filestream هم فعال هست . منتها با فايلهاي حجيم مثل 400 و 500 مگ مشكل ذخيره سازي دارم . كد هم به شكل زير است : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! هنگاني كه كد اجرا ميشه خطاي : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! نمايش داده ميشود _H2_09-09-2009, 10:00 PMسلام خوب مشخص و واضح است که مشکل ساز میشود. اصلاً برنامه نویس باید حد و مرزی معقول برای استفاده از RAM توسط برنامه اش تاین کند. راه منطقی آن است که با دستور INSERT اطلاعات را درج کنید ولی برای ذخیره دیتاهای بزرگ از UTE و به صورت بافری و داخل حلقه استفاده کنید. یعنی مثلاً هر بار 64K از فایلتان را بخوانید و به انتهای دیتهای قبلبی در دیتابیس اضافه کنید و این کار را در یک حلقه انجام دهید تا کل فایل تمام شود و به دیتابیس منتقل شود. (از دستور WRITE هم میتوانید در T-SQL استفاده کنید.) hoseinquest10-09-2009, 06:52 AMسلام خيلي ممنونم از جوابتون دوست عزيز لطف كنيد كمي بيشتر در رابطه با استفاده ازروش بالا در قالب linq به من توضيح بديد متشكر ميشم . خطاي گرفته شده در خط : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! نمايش داده ميشه . ضمنا يك سوال رم سيستم من 2گيگ هستش چرا نميتونه يك فايل 500 مگي رو پردازش كنه ؟ خيلي ممنونم hoseinquest10-09-2009, 06:53 AMسلام خيلي ممنونم از جوابتون دوست عزيز لطف كنيد كمي بيشتر در رابطه با استفاده ازروش بالا در قالب linq به من توضيح بديد متشكر ميشم . خطاي گرفته شده در خط : !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! نمايش داده ميشه . ضمنا يك سوال رم سيستم من 2گيگ هستش چرا نميتونه يك فايل 500 مگي رو پردازش كنه ؟ خيلي ممنونم _H2_18-09-2009, 06:28 PMسلام چند حالت در تاخیر جوابهای تاپیک های من وجود دارد. 1) جواب نیاز به کد و کاری دارد که وقت خالی اش ایجاد نشده. 2) سوال آنقدر کلی است که جواب دادنش تقریباً غیر ممکن است و باز آدم می ماند چه بگوید! 3) فراموشی! متاسفانه و با عرض شرمندگی تاپیک شما شامل بند آخر شد! :11::11::11::11::11: طف كنيد كمي بيشتر در رابطه با استفاده ازروش بالا ... در ابزاری که مد نظر شما است را نمیدانم ولی اصولاً فرقی ندارد. روش کلی دستوری شبیه این است: !!!! برای مشاهده محتوا ، لطفا ثبت نام کنید / وارد شوید !!!! یعنی فایل بزرگتان را به صورت Stream ای و تکه تکه بخوانید و در قطعه اول از دستور INSERT و برای اضافه کردن قطعات بعدی از سینتکسی مثل فوق استفاده کنید. رم سيستم من 2گيگ هستش چرا نميتونه يك فايل 500 مگي رو پردازش كنه 1) رم شما مشترک است و برای مدیریت خود ویندوز و سایر سرویس ها و برنامه های موجود هم استفاده میشود و فضای آزاد خالی همیشه کمتر است. 2) وقتی سیستم کار میکند و حافظه تخصیص میدهد و پس میگرد چه به خاطر سرویسهای داخلی و چه برنامه های مشخصی که اجرا میکنید ... حافظه شما فرگمنت میشود، یعنی راستای بلوک حافظه شما دندانه دندانه خالی و پر خواهد شد و مثلاً شاید بتوانید 2 تکه مجزای 400 مگی پیدا کنید و 800 مگ حافظه خالی داشته باشید ولی نتوانید یک تکه 500 مگی پیدا کنید ! 2) اگر شما شرکتی با 2 میلیارد سرمایه داشته باشید و فوراً یک کارمند دون پایه زود از راه برسد و بخواهید 500 میلیون را برای پروژه ای مجهول بگیرید، شما میدهد یا نه؟ مدیر حافظه ویندوز برای مدیریت درخواست های اتی و نیز امنیت و مقاومت در برابر برنامه های مخرب رایانه ای هر درخواستی را بر آورده نخواهد کرد و عدد درخواستی شما باید معقول و منطقی باشد. موفق باشید. hoseinquest18-09-2009, 06:58 PMسلام ممنونم از جوابتون در عين فراموشي با توضيحات قبلي شما من رفتم سراغ اجراي طرح شما در خود محيط برنامه و اين كاررا يعني قسمت قسمت گرفتن اطلاعات را با استفاده از sql انجام ندادم و سعي كردم ابتدا 10 مگ را يگيرم و سپس 10مك 10مك به آن اضافه كنم كه LINQ به من اجازه نميداد . حالا بايد برم فردا محل كار تستش كنم ببيتم روش شما جواب ميده يا نه كه مطمئنا اگر جواب نده من خوب عمل نكردم و دوباره مزاحم شما ميشوم . ياعلي _H2_18-09-2009, 07:12 PMسلام ابتدا 10 مگ را يگيرم و سپس 10مك 10مك باز هم به نظر من بافرهایتان بزرگ است. من بودم بسته به شرایط و حجم و تعداد فایل و مشخصات فنی حداقلی رایانه ای که باید بتواند برنامه را اجرا کند و تراکم شبکه و... برای بافر موقت هر تکه عدد 64KB یا 512KB و حداکثر 1MB را انتخواب میکردم. (حتی اگر برنامه وبی و asp.net بود که احتمال دارد هزاران کاربر آنلاین داشته شاید بسته ها را کوچک تر هم میکردم !) موفق باشید. hoseinquest18-09-2009, 07:15 PMهرچه بسته ها كوچكتر باشند يعني تعداد تراكنش ها بيشتر ميشود . براي همين يك فايل (كه من شايد در روزها 100 نوع از اين فايلها داشته باشم) بايد حداقل 500 تراكنش انجام بشه . يعني اكثر ترافيك شبكه من فقط ميره واسه ذخيره سازي فايلم . سایت ما را در گوگل محبوب کنید با کلیک روی دکمه ای که در سمت چپ این منو با عنوان +1 قرار داده شده شما به این سایت مهر تأیید میزنید و به دوستانتان در صفحه جستجوی گوگل دیدن این سایت را پیشنهاد میکنید که این امر خود باعث افزایش رتبه سایت در گوگل میشود
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 714]