Before you can start to use FILESTREAM, you must enable FILESTREAM on the instance of the SQL Server Database Engine. This topic describes how to enable FILESTREAM by using SQL Server Configuration Manager.
To enable and change FILESTREAM settings
On the Start menu, point to All Programs, point to SQL Server 2017, point to Configuration Tools, and then click SQL Server Configuration Manager.
In the list of services, right-click SQL Server Services, and then click Open.
In the SQL Server Configuration Manager snap-in, locate the instance of SQL Server on which you want to enable FILESTREAM.
Right-click the instance, and then click Properties.
In the SQL Server Properties dialog box, click the FILESTREAM tab.
Select the Enable FILESTREAM for Transact-SQL access check box.
If you want to read and write FILESTREAM data from Windows, click Enable FILESTREAM for file I/O streaming access. Enter the name of the Windows share in the Windows Share Name box.
If remote clients must access the FILESTREAM data that is stored on this share, select Allow remote clients to have streaming access to FILESTREAM data.
In SQL Server Management Studio, click New Query to display the Query Editor.
In Query Editor, enter the following Transact-SQL code:
EXEC sp_configure filestream_access_level, 2 RECONFIGURE
Restart the SQL Server service.
Physical configuration and maintenance
When you set up FILESTREAM storage volumes, consider the following guidelines:
Turn off short file names on FILESTREAM computer systems. Short file names take significantly longer to create. To disable short file names, use the Windows fsutil utility.
Regularly defragment FILESTREAM computer systems.
Use 64-KB NTFS clusters. Compressed volumes must be set to 4-KB NTFS clusters.
Disable indexing on FILESTREAM volumes and set disablelastaccess. To set disablelastaccess, use the Windows fsutil utility.
Disable antivirus scanning of FILESTREAM volumes when it is not necessary. If antivirus scanning is necessary, avoid setting policies that will automatically delete offending files.
Set up and tune the RAID level for fault tolerance and the performance that is required by an application.
|RAID level||Write performance||Read performance||Fault tolerance||Remarks|
|RAID 5||Normal||Normal||Excellent||Performance is better than one disk or JBOD; and less than RAID 0 or RAID 5 with striping.|
|RAID 5 + stripping||Excellent||Excellent||Excellent||Most expensive option.|
Physical database design
When you design a FILESTREAM database, consider the following guidelines:
FILESTREAM columns must be accompanied by a corresponding uniqueidentifierROWGUID column. These kinds of tables must also be accompanied by a unique index. Typically this index is not a clustered index. If the databases business logic requires a clustered index, you have to make sure that the values stored in the index are not random. Random values will cause the index to be reordered every time that a row is added or removed from the table.
For performance reasons, FILESTREAM filegroups and containers should reside on volumes other than the operating system, SQL Server database, SQL Server log, tempdb, or paging file.
Space management and policies are not directly supported by FILESTREAM. However, you can manage space and apply policies indirectly by assigning each FILESTREAM filegroup to a separate volume and using the volume's management features.