سلام به دوستان
من یه پروژه با قابلیت فایل استریم انجام دادم که مراحلی رو که انجام دادم خدمتتون عرض می کنم.
ابتدا ببینیم این فایل استریم چی هست:
معایب ذخیره سازی فایل*ها در دیتابیس یا استفاده از فایل سیستم متداول چیست؟
الف) اختصاص یافتن قسمتی از بافر SQL Server به این امر.
ب) با توجه به قرار گرفتن داده*های BLOB* در دیتابیس ، transaction log قابل توجهی تولید خواهد شد.
ج) بیش از 2GB را نمی*توان در فیلدهایی از نوع varbinary(max) ذخیره کرد.
د) به روز رسانی BLOB ها سبب ایجاد fragmentation می*شود.
مایکروسافت برای رفع این مشکلات در SQL Server 2008 قابلیت جدیدی را ارائه داده است به نام FileStream
FILESTREAM موتور دیتابیس اس کیوال سرور را با سیستم فایل NTFS یکپارچه می*کند؛ به این صورت که داده*های BLOB از نوع varbinary(max) را به صورت فایل بر روی سیستم ذخیره خواهد کرد. سپس با استفاده از دستورات T-SQL می*توان این فایل*ها را ثبت، حذف، به روز رسانی، جستجو و بک آپ گیری کرد. این قابلیت نیز از فیلدهای varbinary(max) استفاده می*کند؛ اما اکنون ویژگی و برچسب FILESTREAM به این نوع فیلدها الصاق خواهد شد. FILESTREAM data باید در FILESTREAM filegroups ذخیره شوند. FILESTREAM filegroups در حقیقت همان پوشه*های فایل سیستم می*باشند. به آن*ها data containers نیز گفته می*شوند که مرزی هستند بین ذخیره سازی داده*ها در فایل سیستم و در دیتابیس.
حالا مراحل انجام این کار بصورت عملی
ابتدا این قابلیت باید فعال باشه
Start > All Programs > Microsoft SqlServer 2008 > Configuration Tools > SQL Server Configuration Manager
بعد این تنظیم رو انجام میدیم
در این مرحله یک دیتابیس می سازیم وتنظیمات فایل گروپ آن را به این شکل انجام می دهیم
طبق شکل زیر ، مسیری که درنظر دارید فایلها ذخیره شوند رو می نویسید (اسم پوشه)سپس نوعش رو از نوع فایل استریم قرار میدید و افزودن رومی زنید
نکته ای که باید قت کنید اینه که پوشه ای از قبل نباید به این نام در مسیر وجود داشته باشه
حالا این دستورات رو اجرا کنید
کد:
use نام بانک اطلاعات
EXEC sp_configure filestream_access_level, 2
GO
RECONFIGURE
GO
حالا یک جدول باید درست کنید مثل جدول زیر
در این جدول فقط ما آی دی و فایل در نظر گرفتیم
کد:
use scandata
CREATE TABLE test
(
PkId int Primary Key IDENTITY (1, 1),
Id uniqueidentifier NOT NULL Unique ROWGUIDCOL Default newid(),
FileSummary varbinary(MAX),
FileData varbinary(MAX) FileStream NULL
)
این مراحلی هست که می تونید فایل ها رو بدون ذخیره سازی در دیتابیس در دیسک ذخیره کنین
توسط دلفی هم می تونین با استفاده از کدهای زیر (که خیلی ساده نوشتم) فایلی رو انتخاب کنین و ذخیره کنین
کد:
procedure TForm1.Button2Click(Sender: TObject);
begin
opendialog1.Execute;
edit1.Text:=opendialog1.FileName;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
OutStream : TMemoryStream;
begin
OutStream := TMemoryStream.Create;
OutStream.LoadFromFile(edit1.Text);
ADOquery1.append;
ADOQuery1filedata.LoadFromStream(outstream);
ADOquery1.Post;
OutStream.Free;
end;
591
امیدوارم که این مطلب به دردتون بخوره و ازش استفاده کنین
علاقه مندي ها (Bookmarks)