При конвертации на Modern-конфигурацию серверной части пересоздайте таблицы, в которых планируется использовать фильтрованные индексы:
| 1. | В контекстном меню базы данных выберите пункты Tasks\Generate Scripts…. Откроется мастер действий Generate and Publish Scripts. | 
| 2. | На закладке Choose Objects выберите исходную таблицу, например, SBFolder, и нажмите на кнопку Next >. | 
| 3. | На закладке Set Scripting Options выберите переключатель Save to query window и нажмите на кнопку Advanced. Откроется окно Advanced Scripting Options. | 
| 4. | В разделе Table/View Options установите значение True для настроек: | 
| • | Script Check Constraints | 
| • | Script Full-Text Indexes | 
| • | Script Object-Level Permissions | 
Нажмите на кнопку OK.
Примечание
В базах данных, развернутых на SQL Server 2012 и ниже с уровнем совместимости ниже 100, установите значение False для настройки Script Full-Text Indexes, т.к. SQL Server Management Studio не всегда корректно формирует скрипт для создания полнотекстового индекса. Подробнее см. в документации Microsoft. После пересоздания таблицы выполните сценарий Индексирование текстов и слепков объектов.
| 5. | Нажмите на кнопку Next >. | 
| 6. | Проверьте значение параметра соединения SET ANSI_NULLS ON. | 
| 7. | В инструкции CREATE TABLE: | 
| • | замените название таблицы на временное, например, «SBFolder_»; | 
| • | замените названия ключей на временные: | 
 
CREATE TABLE [dbo].[SBFolder_](
    [Name] [varchar](255) NOT NULL,
    [Author] [int] NOT NULL,
    [CreateDate] [datetime] NOT NULL,
    [EditDate] [datetime] NOT NULL,
    [Kind] [varchar](1) NOT NULL,
    [FolderType] [varchar](1) NOT NULL,
    [Note] [varchar](255) NULL,
    [XRecID] [int] NOT NULL,
    [SearchDescription] [image] NULL,
    [URL] [varchar](2048) NULL,
    [ShowUnread] [varchar](1) NOT NULL,
    [ShowCoverOnly] [varchar](1) NOT NULL,
    [timestamp] [timestamp] NOT NULL,
    [ManagedFolderID] [int] NULL,
  CONSTRAINT [SBFolder_PK_] PRIMARY KEY NONCLUSTERED 
 ([XRecID] ASC) WITH
 (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, 
  ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 95) ON [PRIMARY]
 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
 
| 8. | Замените названия индексов в инструкциях CREATE <UNIQUE> <CLUSTERED> INDEX на временное название для новой таблицы: | 
 
CREATE UNIQUE CLUSTERED INDEX [SBFolder_Author_Idx_] ON [dbo].[SBFolder_]
 ([Author] ASC,
  [FolderType] ASC,
  [XRecID] ASC
 ) WITH
 (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, 
  IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, 
  ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 80) 
ON [PRIMARY]
 
| 9. | Если используется инструкция CREATE FULLTEXT INDEX ON, то перед ней удалите индекс полнотекстового поиска у исходной таблицы, иначе возникнет ошибка в методе Switch to: | 
 
if exists (
    select
      1
    from
      sys.tables tbl
      join sys.fulltext_indexes fti on
        fti.object_id = tbl.object_id
    where
      tbl.object_id = object_id('SBFolder'))
drop fulltext index on [dbo].[SBFolder]
 
| 10. | После создания индексов и до инструкций ALTER TABLE добавьте скрипт переключения данных: | 
 
alter table [dbo].[SBFolder] switch to  [dbo].[SBFolder_]
go
| 11. | Добавьте скрипт перестроения счетчика идентификатора: | 
 
if ident_current(N'SBFolder') is not null
  dbcc checkident(N'SBFolder_')
go
| 12. | Добавьте скрипт удаления исходной таблицы: | 
 
drop table [dbo].[SBFolder]
go
| 13. | Добавьте скрипт переименования новой таблицы в исходную: | 
 
execute sp_rename N'SBFolder_', N'SBFolder', N'object'
go
| 14. | Если были ключи или индексы переименуйте их как у исходной таблицы: | 
 
execute sp_rename N'SBFolder.SBFolder_PK_', N'SBFolder_PK', N'INDEX'
execute sp_rename N'SBFolder.SBFolder_Author_Idx_', N'SBFolder_Author_Idx', N'INDEX'
go
| 15. | Добавьте инструкции создания ограничений, полнотекстовых индексов, триггеров, добавления расширенных свойств: | 
 
CREATE FULLTEXT INDEX ON [dbo].[SBFolder](
  [Name] LANGUAGE [Neutral])
KEY INDEX [SBFolder_PK]ON ([MBText_text], FILEGROUP [PRIMARY])
WITH (CHANGE_TRACKING = AUTO, STOPLIST = SYSTEM)
ALTER TABLE [dbo].[SBFolder] ADD  CONSTRAINT [SBFolder_D_ShowUnread]  DEFAULT ('N') FOR [ShowUnread]
ALTER TABLE [dbo].[SBFolder] ADD  CONSTRAINT [SBFolder_D_ShowCoverOnly]  DEFAULT ('N') FOR [ShowCoverOnly]
ALTER TABLE [dbo].[SBFolder]  WITH NOCHECK ADD  CONSTRAINT [SBFolder_C_FolderType] CHECK  (([FolderType]='I' OR ([FolderType]='O' OR ([FolderType]='F' OR ([FolderType]='C' OR ([FolderType]='P' OR ([FolderType]='M' OR ([FolderType]='Q' OR ([FolderType]='S' OR [FolderType]='E')))))))))
ALTER TABLE [dbo].[SBFolder] CHECK CONSTRAINT [SBFolder_C_FolderType]
ALTER TABLE [dbo].[SBFolder]  WITH NOCHECK ADD  CONSTRAINT [SBFolder_C_Kind] CHECK  (([Kind]='E' OR ([Kind]='T' OR ([Kind]='J' OR ([Kind]='C' OR [Kind]='A')))))
ALTER TABLE [dbo].[SBFolder] CHECK CONSTRAINT [SBFolder_C_Kind]
go
| 16. | Выполните скрипт и убедитесь, что в свойствах таблицы параметр соединения ANSI_NULLS имеет значение ON. |