Как обойти максимум раздела sql-сервера? - PullRequest
1 голос
/ 14 марта 2012

Моя команда пытается запустить сценарий, который находится в системе контроля версий, для создания разделов, и мы сталкиваемся со следующей ошибкой: CREATE/ALTER partition function failed as only a maximum of 1000 partitions can be created.

Часть сценария:

CREATE PARTITION FUNCTION [PFDailyPartition](DATETIME)
    AS RANGE RIGHT FOR VALUES ('01/01/2005 00:00:00'
 '01/02/2005 00:00:00'
 '01/03/2005 00:00:00'
 '01/04/2005 00:00:00'
 '01/05/2005 00:00:00'
 '01/06/2005 00:00:00'
 '01/07/2005 00:00:00'
 '01/08/2005 00:00:00'
 '01/09/2005 00:00:00'
 '01/10/2005 00:00:00'
 '01/11/2005 00:00:00'
 '01/12/2005 00:00:00'
 '01/13/2005 00:00:00'
 '01/14/2005 00:00:00'
 etc...

Выполнение select * from sys.partition_range_values на наших текущих настройках показывает, что у нас более 10 000 разделов.

Есть ли способ обойти этот предел в 1000?Мы не можем понять, как у нас уже так много разделов.

Может ли быть разница в окружающей среде между двумя установками?

Заранее спасибо!

1 Ответ

4 голосов
/ 14 марта 2012

Ваша функция разделения создает отдельные разделы по дням.Это много разделов!С 2005 года это будет примерно 365 * 7 = 2555 разделов.Вы действительно хотите разделять по дням?

Согласно этой статье , SQL Server 2008 SP2 и SQL Server 2008 R2 SP1 увеличили ограничение до 15 000 разделов.Есть ли разница в пакете обновления между серверами?

Цитируется из статьи:

Проблема

В SQL Server 2005 представлены таблица и индекссекционирования.Разделение может сделать большие таблицы и индексы более управляемыми и масштабируемыми.Дополнительные сведения о секционировании см. В разделе «Секционированные таблицы и индексы» (http://msdn.microsoft.com/en-us/library/ms188706(v=SQL.100).aspx). В SQL Server 2005, SQL Server 2008 и SQL Server 2008 R2 количество разделов ограничено 1000.

Клиенты в основном используют разбиение дляупростить управление большими таблицами фактов в хранилищах данных. Клиенты хранилищ данных обычно загружают данные в виде пакета. Ежедневные нагрузки являются наиболее распространенной моделью, но все чаще клиенты хотят загружать данные чаще, чем раз в день. С ограничением в 1000 разделов, есликлиенты загружают ежедневно, они могут хранить данные менее трех лет в многораздельной таблице, в то время как бизнес-требования часто требуют хранения данных в течение более длительных периодов времени, например, семи лет. Максимум 1000 разделов становится ограничением для клиентов в этом сценарии.

Если объединение разделов является слишком сложным и отнимает много времени, клиенты предпочитают иметь возможность создавать большое количество разделов и использовать их по мере необходимости.Максимум rtitions также становится ограничением в этом сценарии.

Решение

В SQL Server 2008 с пакетом обновления 2 (SP2) и SQL Server 2008 R2 с пакетом обновления 1 (SP1), можно включить поддержкудля 15 000 разделов с гранулярностью на уровне базы данных с помощью новой хранимой процедуры sp_db_increased_partitions .Вы также можете отключить поддержку базы данных (после того, как она была включена) и установить ограничение на количество разделов обратно до 1000.

...