Как определить, поддерживает ли моя версия SqlServer + Edition разделение - PullRequest
0 голосов
/ 28 июня 2018

SqlServer Стандартно сделанное разбиение доступно с 2016SP1. Можно ли выполнить запрос, чтобы определить, поддерживается ли разбиение на установленном в данный момент SqlServer?

Я могу запросить версию и редакцию, а также экстраполировать номер ServicePack. Однако я не хочу жестко кодировать номера версий в коде. Я хочу избежать распространения исправления, если будет предоставлен новый пакет обновления для стандарта 2016 года.

Спасибо

1 Ответ

0 голосов
/ 28 июня 2018

В приведенном ниже примере проверяется, поддерживает ли 1) редакция таблицы или 2) версия SQL - SQL 2016 SP1 или более поздняя версия.

IF 
       CAST(SERVERPROPERTY('Edition') AS varchar(30)) LIKE 'Enterprise%'
    OR CAST(SERVERPROPERTY('Edition') AS varchar(30)) LIKE 'Developer%'
    OR CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS varchar(30)), 4) AS int) > 13 --SQL 2017 and later
    OR (
            CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS varchar(30)), 4) AS int) = 13 --SQL 2016
        AND CAST(PARSENAME(CAST(SERVERPROPERTY('ProductVersion') AS varchar(30)), 2) AS int) >= 4001) --SP1 or greater
BEGIN
    PRINT 'partitioning supported'
END;

Я вижу, вы упомянули не жестко кодируемые номера версий, но этот метод не потребует изменения кода, поскольку версия продукта и номера сборки являются инкрементными.

...