Явное преобразование столбца в разделе таблицы в SQL Server - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть таблица, подобная приведенной ниже:

  CREATE TABLE [dbo].[PartitionExample]
  (
     [dateTimeColumn1] [datetime] NOT NULL,
     CONSTRAINT [PK_PartitionExample] PRIMARY KEY CLUSTERED 
     (
      [dateTimeColumn1] ASC
     )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = 
        OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
  ) ON [PRIMARY]

Я создал функцию разделения, как показано ниже:

  CREATE PARTITION FUNCTION DateRangePF (INT)
   AS RANGE RIGHT FOR VALUES ( 20180601,20180901,20181201,20190301)

Затем я создал схему раздела для нее:

  CREATE PARTITION SCHEME DateRangePS
    AS PARTITION DateRangePF TO 
     (FG032018_SampleDB,FG062018_SampleDB,FG092018_SampleDB,
       FG122018_SampleDB,FG032019_SampleDB);

Теперь, когда я применяю схему секционирования к этой таблице, я хочу применить явное преобразование столбца [dateTimeColumn1] типа данных datetime в тип данных INT.Но когда я попробовал это, я получил синтаксическую ошибку:

 ALTER TABLE [dbo].[PartitionExample] ADD  
  CONSTRAINT [PK_PartitionExample] PRIMARY KEY CLUSTERED 
   (
     dateTimeColumn1 ASC
   )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, ALLOW_ROW_LOCKS = 
    ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 90) 
    ON DateRangePS(
     convert(INT, CONVERT(CHAR(8), dateTimeColumn1, 112));

Ребята, пожалуйста, дайте мне знать

  1. , как явное преобразование может быть реализовано в таких сценариях.
  2. Также будет лучше, если я выполню явное преобразование столбца datetime или char (8) в столбец INT для раздела.Спасибо за вашу помощь.
...