۱۳۸۸/۰۷/۰۵

آشنايي با قابليت FileStream اس كيوال سرور 2008 - قسمت دوم


در اين قسمت نحوه‌ي فعال سازي قابليت FileStream را بررسي خواهيم كرد و در قسمت بعدي نحوه‌ي دسترسي به آن‌را از طريق برنامه نويسي مرور مي‌نمائيم.

فعال سازي قابليت FileStream
همانند اكثر قابليت‌هاي اس كيوال سرور، فعال سازي FileStream نيز حداقل به دو صورت استفاده از GUI و قابليت‌هاي management studio ميسر است و يا استفاده از دستورات T-SQL (و البته كتابخانه‌ي SMO يا همان محصور كننده‌ي توانايي‌هاي management studio نيز قابل استفاده است).

روش اول) استفاده از management studio
قابليت FileStream به صورت پيش فرض غيرفعال است. براي فعال سازي آن به مسير زير مراجعه نمائيد:

Start > All Programs > Microsoft SqlServer 2008 > Configuration Tools > SQL Server Configuration Manager

سپس در قسمت SQL Server services ، وهله مربوط به SQL Server را يافته، كليك راست و به برگه خواص آن مراجعه كرده (شكل زير) و قابليت FileStream را فعال كنيد:



گزينه‌هاي مختلف آن به شرح زير هستند:
• Enable FileStream for transact-sql access : امكان استفاده از دستورات T-SQL را جهت دسترسي به فايل‌ها فعال مي‌سازد (يا برعكس)
• Enable FileStream for File I/O streaming access : امكان دسترسي به فايل‌ها با استفاده از Win32 streaming access
• All remote clients to have streaming access to file stream data : اجازه‌ي دسترسي به كلاينت‌هاي راه دور جهت استفاده از قابليت FileStream

مرحله بعد، فعال سازي سطح دسترسي به سرور است. به management studio مراجعه نمائيد. سپس بر روي وهله سرور مورد نظر كليك راست نموده و به خواص آن مراجعه كنيد (شكل زير). سپس در قسمت advanced سطح دسترسي را بر روي Full قرار دهيد.



پس از اين تنظيم به شما پيغام داده خواهد شد كه بايد ديتابيس سرور را يكبار راه اندازي مجدد نمائيد تا تنظيمات مورد نظر، اعمال شوند.

در ادامه بايد ديتابيسي را كه نياز است نوع داده FileStream را بپذيرد، تنظيم نمود.
بر روي ديتابيس مورد نظر كليك راست كرده و در برگه خواص آن به گزينه‌ي Filegroups مراجعه كنيد. سپس در اينجا يك گروه جديد را اضافه كرده ، نامي دلخواه را وارد نموده و سپس تيك مربوط به default بودن آن‌را نيز قرار دهيد (شكل زير):



سپس در همين برگه‌ي خواص ديتابيس كه باز است، به گزينه‌ي Files مراجعه كنيد. در اينجا سه كار را بايد انجام دهيد. ابتدا بر روي دكمه Add كليك كرده و در قسمت logical name رديف اضافه شده، نامي دلخواه را وارد كنيد. سپس file type آن را بر روي FileStream قرار دهيد. در ادامه به قسمت path در همين رديف مراجعه نموده و مسير ذخيره سازي را مشخص كنيد. در پايان بر روي دكمه‌ي OK كليك نمائيد تا كار تنظيم ديتابيس به پايان رسد (شكل زير):



روش دوم) استفاده از دستورات T-SQL
منهاي قسمت تنظيمات SQL Server Configuration Manager كه بايد از طريق روش عنوان شده صورت گيرد، ساير موارد فوق را با استفاده از دستورات T-SQL نيز مي‌توان انجام داد:

الف) تنظيم سطح دسترسي بر روي سرور

EXEC sp_configure filestream_access_level, 2 -- 0 : Disable , 1 : Transact Sql Access , 2 : Win IO Access
GO
RECONFIGURE
GO
ب) تنظيمات ديتابيس

اگر نياز باشد ديتابيس جديدي ايجاد شود: (ايجاد گروه فايل مربوطه و سپس تنظيمات مسير آن)

CREATE DATABASE Test_Db
ON
PRIMARY ( NAME = TestDb1,
FILENAME = 'C:\DATA\Test_Db.mdf'),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = Testfsg1,
FILENAME = 'C:\DATA\Learning_DbStream')
LOG ON ( NAME = TestDbLog1,
FILENAME = 'C:\DATA\Test_Db.ldf')
GO

و يا ايجاد تغييرات بر روي ديتابيسي موجود: (ايجاد گروه فايل مخصوص و سپس افزودن فايل مربوطه و تنظيمات آن)

--add filegroup
alter database TestDb
Add FileGroup FileStreamFileGroup1 contains FileStream
go

--Add FileGroup To DB
alter database TestDB
add file
(
name = 'UserDocuments' ,
filename = 'C:\FileStream\UserDocuments'
) to filegroup FileStreamFileGroup1


تعريف جدولي آزمايشي به همراه فيلدي از نوع FileStream :
تا اينجا سرور و همچنين ديتابيس جهت پذيرش اين نوع داده آماده شدند. اكنون نوبت به استفاده از آن است:

CREATE TABLE [tblFiles]
(
FileId UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL UNIQUE DEFAULT(NEWID()),
Title NVARCHAR(255) NOT NULL,
SystemFile VARBINARY(MAX) FILESTREAM NULL
)
ON [PRIMARY] FILESTREAM_ON [fsg1]

توسط دستور T-SQL فوق جدولي كه از نوع داده FileStream استفاده مي‌كند، ايجاد خواهد شد. اين جدول همانطور كه مشخص است حتما بايد داراي يك فيلد منحصربفرد باشد (ر.ك. مقاله قبل) و همچنين برچسب فايل استريم به فيلدي از نوع VARBINARY(MAX) نيز الصاق شده است. به علاوه گروه فايل آن نيز بايد به صورت صريح مشخص گردد؛ كه در مثال ما مطابق تصاوير به fsg1 تنظيم شده بود.

ادامه دارد ...