PDA

View Full Version : استفاده از فایلها در کار با دیتابیس



ali190
دوشنبه 22 آذر 1389, 19:28 عصر
باسلام و عرض خسته نباشید
دوستان من دارم یک برنامه مینویسم که با فایلها فایلهای آفیس ، اتوکد ، و...) سرروکار زیاد داره
فر کنید من یک جدول یک به چند دارم ، که در جدول مادرم خصوصیات یک سیستم رو بصورت رکورد تعریف میکنم
حالا میام به اون رکورد که با جدول دیگه ام ارتباط یک به چند داره رکوردهایی رو اختصاص میدم که این رکوردها در جدول چند همون فایلهای من هستند
در اینجا دوبحث مطرح میشه:(در ضمن بانک اطلاعاتی بنده sql server2000 هست)
1-ذخیره سازی لینک در جدول چند
این کار باعث بالا رفتن سرعت کار میشه ولی باید یک پوشه ای باشه که این پشوه برای همه کاربران share شده باشه که همه بتونن از این برنامه تحت شبکه استفاده کنن
چند سئوال در اینجا پیش میاد :
الف:
دسترسی این پوشه برای افراد مختلف چطوری تعیین میشه؟ (آیا تنظیمت مربوط به permission پوشه باید برای تک تک کاربران تعریف بشه)
ب:
چون جداول من ارتباط یک به چند دارند ، طبیعتاً زمانیکه من رکورد پدر از جدول یک رو حذف کنم ، رکوردهای جدول چند که فرزندادن رکورد پدر جدول یک من هستند هم پاک میشن ، خوب این وسط تکلیف اون فایلها که در پوشه به اشتراک گذاشته شده هستند چی میشه ، درسته با یک delete رکوردهای حاوی لینک حذف شده است ولی تکلیف خود فایلهای چی میشه؟
2- ذخیره سازی مستقیم فایلها در جدوال sqls erver
اصلاً در این مورد هیچ اطلاعی ندارم
اگر میشه یک نمونه بذارید که با چه تکنیکی میشه فایل رو از طریق vb (پنجره common diablog) در جداول sql server ذخیره سازی کرد؟
اگر فایلها در جدوال به صورت مستقیم ذخیره بشه آیا امکانش هست که اون فایل ذخیره شده در vb رو مستقیم مثلاً با یک دکمه open نمود ؟
یه جا شنیده بودم که برنامه هایی نوشته شده است (مثل بعضی از نرم افزارهای اتوماسیون اداری) که با نصب یان برنامه در سیستم یوزر انواع و اقسام viewer های نرم افزار های مختلف بر روی سیستم کاربر نصب میشه وکاربر رو در اجرای بسیاری از فایلها از نصب اون نرم افزار بی نیاز میکنه
اگر امکانش هست در مورد این مباحث ، که در برنامه نویسی هیا تحت شبکه کاربرد فراوانی داره یه مقدار بحث کنیم ، باشد که مفید واقع بشه
در ضمن من این برنام هرو با vb6 نوشتم
یاعلی

حمیدرضاصادقیان
سه شنبه 23 آذر 1389, 08:16 صبح
سلام.
درمورد ذخیره سازی فایل همون طور که خودتون گفتید دو مبحث وجودداره. یکی بحث ذخیره فایل روی سرور و نگهداشتن لینک اون در دیتابیس یکی اینکه خود فایل مستقیما در دیتابیس ذخیره بشه.
در مورد مبحث اول مواردش رو خودتون فرمودید. ببینید برای دسترسی دادن به پوشه شما باید برای هرکاربر موجود در شبکه یک سطح دسترسی اعمال کنید و اینم ارتباطی به SQL Server نداره.
اگر لینک فایل پاک بشه شما باید در قسمت حذف برنامه تون که رکورد رو حذف میکنه بلافاصله بعدش فایل رو خودتون حذف کنید. یا یک Trigger روی جدول فوق بنویسید و با استفاده از دستور xp_cmdshell (http://www.kodyaz.com/articles/delete-file-from-sql-server-xp-cmdshell-ole-automation-procedures.aspx) فایل مورد نظر رو حذف کنید.
اینجا مباحث دیگری همچون بحث نگهداری فایلها نیز مطرحه. که چطور از فایلها پشتیبان گرفته شوند. چطوری از خطر ویروسی شدن فایلها جلوگیری کنیم و...
در بحث ذخیر فایلها روی دیتابیس شما اگر از نسخه 2000 بخواهید استفاده کنید باید از نوع VarBinary (http://www.mssqlcity.com/Articles/General/choose_data_type.htm) استفاده کنید ولی اگر بتونید به نسخه 2008 سوئیچ کنید میتونید از FileStream (http://technet.microsoft.com/en-us/library/bb933993.aspx) استفاده کنید.در این روش هم مشکلاتی مثل افزایش حجم دیتابیس و Backup گیری هست که میتونید با قرار دادن فایلها در Filegroup ها این مشکلات رو حل کنید.
موفق باشید