SQL serverがファイルサーバーとして動作できると思ったことはありますか? Sql Server2012で最初に導入されたFileTable機能を試してみるまでは、そうではありませんでした。 FileTable機能を使用すると、特別なテーブルにファイルやフォルダを格納するが、従来のWindows SMBプロトコルを使用してそれらにアクセスすることができますFILESTREAM つまり、FileTablesでは、非トランザクションアクセスにSQLテーブルを使用できます。私の意見では、FileTables機能の最大の利点の1つは、ファイル属性(Last-WriteTime、Last_Accesstimeなど)の保存です。 これにより、管理者はFileTablesの対応する列を使用してファイルアクセス操作を監査できます。 この記事では、SQL Server2012-2016をファイルストレージに使用する方法と、SQLファイル共有にあるファイルとフォルダに対してどのような監査メカニズムを活用 ファイルテーブルをデータベースに作成する前にいくつかの前提条件を満たす必要があり、ファイルテーブルの準備に必要なすべての手順を実行してか
SQL2012インスタンスのFILESTREAMを有効にし、新しいFILESTREAMデータベースを作成することから始めましょう。
https://msdn.microsoft.com/en-us/library/gg509097%28v=sql.120%29.aspx
WINDOWSレベルでFILESTREAMを有効にします。
- SQL Configuration managerを開きます。
- 次のことを確認してください。チェックボックスが選択されています:
II SQLインスタンスレベルでFILESTREAMを有効にします。
- SQL Server Management Studioで、新しいクエリをクリックしてクエリエディタを表示します。
- クエリエディタで、次のTransact-SQLコードを入力します。
EXEC sp_configure filestream_access_level,2
RECONFIGURE
IIIデータベースレベルでFILESTREAMファイルグループを提供する
データベース この前提条件の詳細については、”FILESTREAM対応データベースの作成”を参照してください。
新しいデータベースを作成するので、最初にFileTablesを含むフォルダを作成します。
次に、このコードでFilestreamファイルグループを定義します。
CREATE DATABASE FILESERVER
ON
PRIMARY(NAME=FS,
FILENAME=’c:\FILESERVER\FSdat…..mdf’),
ファイルグループFileStreamFSにはFILESTREAM(NAME=FSgr,
FILENAME=’が含まれていますc:\FILESERVER\fs1′)
ログオン(NAME=FSlog,FILENAME=’c:\FILESERVER\FSlog.ldf’)
行く
注意! MSが言うように: “FILESTREAMファイルグループの場合、FILENAMEはパスを参照します。 最後のフォルダーまでのパスが存在する必要があり、最後のフォルダーは存在しない必要があります。”前のコードでは、c:\FILESERVER 存在する必要がありますが、FS1はCREATE DATABASEステートメントの実行時には使用できません。
Filegroupsデータベースプロパティページに、FILESERVERデータベースのFileStreamFS filestreamが表示されるようになりました:
IVデータベースレベルで非トランザクションアクセスを有効にする
データベースを作成したら、FileTables用に準備する最後のステッ
FileTablesを使用すると、Windowsアプリケーションは、トランザクションを必要とせずにFILESTREAMデータへのWindowsファイルハンドルを取得できます。 SQL Serverに格納されているファイルへのこの非トランザクションアクセスを許可するには、Filetableを含むデータベースごとに、データベースレベルで目的の非トラン 次のコードを実行すると–
db_NAME(database_id)、non_transacted_access、non_transacted_access_desc
をsysから選択します。database_filestream_options;
GO
…非トランザクションアクセスが有効になっているデータベースがないことがわかります。
データベースレベルでファイ:ただし、ディレクトリ名はドライブ文字と記号”\”なしで入力する必要があります。
ALTER DATABASE FILESERVER
SET FILESTREAM(NON_TRANSACTED_ACCESS=FULL,DIRECTORY_NAME=N’FILESERVER’)
GO
“FileTableフォルダ階層では、このデータベースレベルディレクトリは、FileTableフォルダ階層で指定された共有名の子になります。インスタンスレベルのFileStream、およびデータベースに作成されたfiletabファイルの親」-ステップI–2で変更していないため、FileServerがMSSQLSERVER共有のサブフォルダになることを意 このコードを再度実行すると、非トランザクションアクセスが正常に有効になっていることが表示されます。
SELECT DB_NAME(database_id),non_transacted_access,non_transacted_access_desc
from sys。database_filestream_options;
GO
次のコードは、FILESERVERデータベースのディレクトリ名を表示します。
Select DB_NAME(database_id),directory_name
FROM sys.データベース_ファイルストリーム_オプション;ここでは、ユーザーが自分のファイルやフォルダを格納するために使用できる”SQL”ファイル共有です:
MSSQLSERVERのようなものへの共有share1ステップi-2では、sql serverが関与していることは示されていませんでした-ユーザーの観点からは、通常のファイル共有にすぎま
FileTablesを作成するためのすべての前提条件が満たされ、FileTablesの作成に進むことができます。
SQL Serverファイルテーブルの操作-パート2