Hiển thị các bài đăng có nhãn FileStream. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn FileStream. Hiển thị tất cả bài đăng

30 thg 6, 2015

Hướng dẫn detach và attach cơ sở dữ liệu sử dụng FileStream

Cơ sở dữ liệu sử dụng FileStream, FileTable thì không thể attach được 1 cách thông thường mà phải sử dụng lệnh như sau:
Cơ sở dữ liệu thông thường có 3 file như sau:
*.mdf
*.log
folder
USE [master]
GO
CREATE DATABASE [FileStreamDB] ON 
( FILENAME = N'C:\FileStreamDB\FileStreamDB.mdf' ),
( FILENAME = N'C:\FileStreamDB\FileStreamDB_log.ldf' ),
FILEGROUP [FileStreamGroup] CONTAINS FILESTREAM DEFAULT 
( NAME = N'FileStreamDB_FSData', FILENAME = N'C:\FileStreamDB\FileStreamData' )
FOR ATTACH
GO

Posted By Unknown23:00

Các thao tác cơ bản với FileTable trong SQLserver 2012

I. TẠO CƠ SỞ DỮ LIỆU (DATABASE) SỬ DỤNG FILESTREAM
1. Tạo cơ sở dữ liệu sử dụng FILESTREAM
- Khởi động SQL Server Management Studio > New Query
-  Chạy truy vấn có cấu trúc dưới đây. Tuy nhiên đường dẫn đến thư mục chính phải tồn tại . Ở đây là 'E:\DATABASE_FILETABLE’


CREATE DATABASE TEN_CO_SO_DU_LIEU
ON
PRIMARY(Name = FileTableDB,FILENAME = 'E:\DATABASE_FILETABLE\FileTableDB.mdf'),
FILEGROUP FileTableFileGroup CONTAINS FILESTREAM
            (NAME = FileTableFS, FILENAME='E:\DATABASE_FILETABLE\FileStream')
LOG ON (Name = FileTableDBLog, FILENAME = 'E:\DATABASE_FILETABLE\FileTableLOG.ldf')
GO

- Sau khi chạy truy vấn.  Các File FileTableDB.mdf và FileTableLOG.ldf' và thư mục FileStream sẽ được tạo ra theo đường dẫn trên.

2. Cho phép truy cập CSDL (None-Transactional Access at the Database)
a. Kiểm tra trạng thái của None-Transactional Access at the Database
- Cách 1 : Trong SQL Management Studio , ấn chuột phải vào CSDL vừa tạo
   Chọn Properties > Options.
   Xem phần FileStream None-Transactional Access at the Database (Full/Off/ReadOnly)

- Cách 2 : Chạy truy vấn có cấu trúc sau đây  :

SELECT DB_NAME(database_id), non_transacted_access_desc
                                FROM sys.database_filestream_options;
GO
           

b. Đặt None-Transactional Access at the Database với chế độ Full và thiết lập tên thư mục gốc của FILESTREAM
- Cách 1 : Trong SQL Management Studio , ấn chuột phải vào CSDL vừa tạo
   Chọn Properties > Options.
   Trong phần FileStream None-Transactional Access at the Database chọn Full
   Trong phần FileStream Directory Name : nhập tên thư mục gốc sẽ lưu trữ các file của   CSDL
- Cách 2 : Chạy truy vấn có cấu trúc sau đây  :

ALTER DATABASE FILETABLEDATABASETEST
SET FILESTREAM (NON_TRANSACTED_ACCESS = FULL,
DIRECTORY_NAME = N'FileTableDataBase');
GO


                FileTableDataBase : tên thư mục gốc sẽ chứa các file sẽ đưa vào CSDL

Cũng có thể set chế độ này ngay từ khi tạo DATABASE


II. LÀM VIỆC VỚI FILETABLE SQL
1. Cách tạo FileTable
Chạy truy vấn có cấu trúc sau đây  :

USE [FILETABLEDATABASETEST] -- Ten CSDL
GO
CREATE TABLE FileTableDB AS FILETABLE -- Ten FileTable
  WITH
  (
    FILETABLE_DIRECTORY = 'FileTableDIR', -- Thu muc luu tru cac file trong FileTable
    FILETABLE_COLLATE_FILENAME = database_default
  );
GO

- Sau khi chạy truy vấn này , SQL Server sẽ tự động tạo 1 Thư mục trong Network :
“DIRECTORY_NAME\FILETABLE_DIRECTORY”
Cụ thể ở đây là  “FileTableDataBase\ FileTableDIR”


- Đồng thời 1 bảng gồm các cột lưu trữ thông tin File sẽ được tạo ra :
·         creation_time              : Thời gian tạo File
·         name                            : Tên file
·         is_archive
·         is_directory
·         is_hidden                                 : Trạng thái file có bị ẩn không
·         is_offline
·         is_readonly                              : Trạng thái file có ở chế độ Readonly không
·         is_system                     : Là file hệ thống
·         is_temporary
·         last_access_time          :Thời gian truy cập cuối cùng
·         last_write_time                        : Thời gian ghi cuối cùng
·         path_locator    
·         stream_id                     : Stream này là duy nhất (khóa chính)

- Ta có thể xem danh sách file trong Filetable bằng truy vấn sau :
USE [FILETABLEDATABASETEST]
GO
SELECT *  FROM FileTableDB
GO



Lấy đường dẫn đầy đủ này bằng cách chạy truy vấn (Quan trọng trong việc làm việc với System.IO trong NET)
USE [FILETABLEDATABASETEST]
GO
SELECT FileTableRootPath('FileTableDB') AS FileTableRootPath

2. Thao tác với FileTable trong SQL
*** Sử dụng giao diện Windows ***
- Trong SQL Management Studio > Chọn CSDL >  Tables > File Tables      
- Ấn chuột phải vào Bảng vừa tạo chọn “Explore FileTable Directory”
- Khi đó SQL Server sẽ mở đường dẫn bạn đã tạo ở bước trước bằng Windows Explorer. Ta có thể thực hiện các thao tác Copy/Paste/Delete như trên các thư mục của máy tính


***Sử dụng truy vấn ***

a. Tải File lên FileTable
Chạy truy vấn có cấu trúc sau đây  :

USE [FILETABLEDATABASETEST] -- Ten CSDL
GO

INSERT INTO [dbo].[FileTableDB] -- Ten Bang
([name],[file_stream])           
SELECT
'ExampleFileTable.doc', * FROM OPENROWSET(BULK N'E:\Example.doc’, SINGLE_BLOB) AS FileData
GO

Khi chạy truy vấn : File “Example.doc” trong ổ đĩa E (E:\Example.doc) sẽ được tải lên FileTable với tên
“ExampleFileTable”

Chú ý : File Upload lên CSDL không được là file rỗng và tên file không có dấu tiếng việt và các kí tự đặc biệt

b. Xóa file trên FileTable

Chạy truy vấn có cấu trúc sau đây  :

USE [FILETABLEDATABASETEST] -- Ten CSDL
GO
DELETE FROM [dbo].[FileTableDB] WHERE name = 'ExampleFileTable.doc';

Khi đó file có tên 'ExampleFileTable.doc'  sẽ bị xóa khởi FileTable



3. Thao tác với FileTable bằng thư viện trong System.IO trong .NET
Chú ý : Có thể sử dụng thư viện System.Data.SqlClient để tương tác trực tiếp với SQL . Sau đó sử dụng những truy vấn ở phần 2
Trên trang chủ của Microsoft có viết “Có thể sử dụng thư viện IO trong C#.NET hoặc VB.NET” để tương tác trực tiếp với các File/Directory trong FileTable”
Việc quan trọng ở đây ta vẫn phải sử dụng System.Data.SqlClient để chạy truy vấn :
SELECT FileTableRootPath('FileTableDB') AS FileTableRootPath

Từ đó lấy được đường dẫn tới thư mục chứa các file trong FileTable.

Chú ý : Ta thường lấy được đường dẫn dạng :
\\IPSERVER \sqlexpress\FileTableDataBase\FileTableDIR
Tưởng như đường dẫn này không tồn tại nhưng thực tế khi kết nối với SQL server . SQL sẽ tự động tạo một đường dẫn ảo như vậy. Khi ngắt kết nối với Server đường dẫn này sẽ biến mất

Sau khi lấy được đường dẫn của “FileTable_Directory”
Ta có thể sử System.IO để Copy/Paste/Delete/Rename bằng các phương thức khá cơ bản để tương tác với Folder này như :
System.IO.File.Copy
System.IO.File.Delete

Ta cũng có thể mở các file này một cách rất cơ bản :

System.Diagnostics.Process.Start(DUONG_DAN);

Posted By Unknown22:56

Hướng dẫn cấu hình SQLServer sử dụng FileStream

I. KÍCH HOẠT FILESTREAM
- Chạy “SQL Server Configuration Manager”
(Mặc định tại C:\Windows\SysWOW64\mmc.exe – hoặc tìm kiếm trên “SQL Server Configuration Manager” ở StartMenu)

- Tại “SQL Server Services” . Ấn chuột phải vào “SQL Server (….)” chọn “Properties”

- Trong Tab FILESTREAM tích vào các ô :
            + Enable FILESTREAM for Transact-SQL access (Kích hoạt FILESTRAM cho Transact-SQL)         
            + Enable FILESTREAM for file I/O access
            + Allow remote  clients access to FILESTREAM data (cho phép máy khách truy cập                        FILESTREAM)
- Sau đó Restart Server (Chuột phải vào “SQL Server (…)” chọn “Restart”

Khởi động SQL Management Studio > New query
Chạy truy vấn sau :
EXEC sp_configure filestream_access_level, 2
GO

Xác nhận bằng truy vấn :
RECONFIGURE

II. CHO PHÉP FILESTREAM HOẠT ĐỘNG KHÔNG QUA GIÁM SÁT TƯỜNG LỬA
(Windows Firewall)
- Trong Control Panel truy cập vào Windows Firewall > Chọn Advance Settings
- Trong Windows FireWall with Advance Security on Local Computer click vào Inbound Rules
- Ấn chuột phải vào Inbound Rules chọn New rule…Trong tab Rule type chọn Port > Next
- Chọn các tick : TCP . Trong Specific local ports gõ 139 > Next> Next>Next
- Điền tên (tùy ý) và mô tả vào 2 textbox Name và Descirption (optional)
- Ấn Finish

Làm tương tự với Port 445

Posted By Unknown22:54