Настройка filestream в базе данных на примере таблицы ATTACHMENT_FILES

 1. Запускаем диспетчер конфигурации MS SQL Server;

 2. В свойствах сервера во вкладке “Filestream” включаем все настройки(отмечаем все галочки), сохраняем, перезапускаем службу MS Sql Server:

 3. Запускаем скрипт :

EXEC sp_configure filestream_access_level, 2

RECONFIGURE;

4. Делаем резервную копию базы данных;

 5. С помощью скрипта создаём Файловую группу:

— Создание файловой группы FILESTREAM

ALTER DATABASE [название БД]
ADD FILEGROUP [attach] CONTAINS FILESTREAM;

 6. С помощью скрипта добавляем файл в файловую группу:

— Добавление файла в файловую группу. Скрипт сам создаст папку.

ALTER DATABASE [название БД]
ADD FILE (
NAME = N’attach_file’,
FILENAME = N’C:\Archimed\Filestream’ — путь к ПАПКЕ, не к файлу
) TO FILEGROUP [attach];

7. С помощью скрипта создаем таблицу:

CREATE TABLE [dbo].[ATTACHMENT_FILES_NEW](

[ID] [dbo].[DT_ID] IDENTITY(1,1) NOT NULL,

[ROWGUID] uniqueidentifier rowguidcol DEFAULT newid() NOT NULL

UNIQUE,

[NAME] [dbo].[DT_STR200] NULL,

[EPMZID] [dbo].[DT_REF] NOT NULL,

[CONTENT] varbinary(max) FILESTREAM NULL,

[UPDDATETIME] [dbo].[DT_DATETIME] NULL,

[ENABLED] [dbo].[DT_ENABLED] NOT NULL,

[AUTHOR] [dbo].[DT_REF] NOT NULL,

[CREATIONDATETIME] [dbo].[DT_DATETIME] NULL,

[EXDATAXML] [dbo].[DT_XML] NULL,

[FILENAME] [dbo].[DT_STR1024] NULL,

[ISOLE] [dbo].[DT_BYTE] NULL,

[ISNATIVFORMAT] [dbo].[DT_BYTE] NULL,

PRIMARY KEY CLUSTERED ( [ID] ASC )

WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

FILESTREAM_ON [attach]

GO

SET ANSI_PADDING OFF

GO

EXEC sys.sp_addextendedproperty @name=N’MS_Description’, @value=N’Поле содержит расширеный XML (например для док-в Word) это содержимое всех полей формы’ , @level0type=N’SCHEMA’,@level0name=N’dbo’, @level1type=N’TABLE’,@level1name=N’ATTACHMENT_FILES_NEW’, @level2type=N’COLUMN’,@level2name=N’EXDATAXML’

GO

EXEC sys.sp_addextendedproperty @name=N’MS_Description’, @value=N’Имя файла’ , @level0type=N’SCHEMA’,@level0name=N’dbo’, @level1type=N’TABLE’,@level1name=N’ATTACHMENT_FILES_NEW’, @level2type=N’COLUMN’,@level2name=N’FILENAME’

GO

EXEC sys.sp_addextendedproperty @name=N’MS_Description’, @value=N’Файл храниться в «Родном» формате. Иначе в формате OLE’ , @level0type=N’SCHEMA’,@level0name=N’dbo’, @level1type=N’TABLE’,@level1name=N’ATTACHMENT_FILES_NEW’, @level2type=N’COLUMN’,@level2name=N’ISNATIVFORMAT’

GO

После чего прогоняем следующий скрипт:

USE [ArchiMed]
GO
SET IDENTITY_INSERT ATTACHMENT_FILES_NEW ON;
INSERT INTO [dbo].[ATTACHMENT_FILES_NEW]
           ([ID]
           ,[NAME]
           ,[EPMZID]
           ,[CONTENT]
           ,[UPDDATETIME]
           ,[ENABLED]
           ,[AUTHOR]
           ,[CREATIONDATETIME]
           ,[EXDATAXML]
           ,[FILENAME]
           ,[ISOLE]
           ,[ISNATIVFORMAT])
   select [ID]
           ,[NAME]
           ,[EPMZID]
           ,[CONTENT]
           ,[UPDDATETIME]
           ,[ENABLED]
           ,[AUTHOR]
           ,[CREATIONDATETIME]
           ,[EXDATAXML]
           ,[FILENAME]
           ,[ISOLE]
           ,[ISNATIVFORMAT] from ATTACHMENT_FILES
GO
SET IDENTITY_INSERT ATTACHMENT_FILES_NEW OFF;

8. Удаляем старую таблицу ATTACHMENT_FILES

9. После чего переименовываем новую таблицу ATTACHMENT_FILES_NEW в ATTACHMENT_FILES.