28.07.2009, 11:55 | #1 |
Участник
|
сабж возникает при попытке скомпилить таблицу с первичным ключом длиной 20 записей
|
|
28.07.2009, 11:59 | #2 |
Участник
|
|
|
28.07.2009, 12:30 | #3 |
Участник
|
суммарная длина полей значительно меньше 4096 байт
|
|
28.07.2009, 13:20 | #4 |
Участник
|
|
|
28.07.2009, 13:25 | #5 |
Участник
|
Цитата:
P.S. Для уточнения я создал табличку с 11 полями Code 100 и при попытке создать ключик получил сообщение (см. файл): |
|
28.07.2009, 13:29 | #6 |
Участник
|
ща покапалась и выяснила что это совсем не ограничение навика.. а сиквелсервера..
в хелпе 2005-му грится "Columns per foreign key = 16", причем с пометкой "If the table contains one or more XML indexes, the clustering key of the user table is limited to 15 columns because the XML column is added to the clustering key of the primary XML index. In SQL Server 2005, you can include nonkey columns in a nonclustered index to avoid the limitation of a maximum of 16 key columns. " Самое интересное - это последняя фраза.. в которой грится как обойти это ограничение в 16 столбцов..(хотя я так полагаю это к первичному ключу не относится..) |
|
02.08.2009, 01:42 | #7 |
Участник
|
Цитата:
Сообщение от Lrundom
ща покапалась и выяснила что это совсем не ограничение навика.. а сиквелсервера..
в хелпе 2005-му грится "Columns per foreign key = 16", причем с пометкой "If the table contains one or more XML indexes, the clustering key of the user table is limited to 15 columns because the XML column is added to the clustering key of the primary XML index. In SQL Server 2005, you can include nonkey columns in a nonclustered index to avoid the limitation of a maximum of 16 key columns. " Таблицы и индексы хранятся в виде коллекции страниц размером 8 КБ. В SQL Server кластеризованные индексы организованы в виде сбалансированных деревьев. Каждая страница в сбалансированном дереве индекса называется узлом индекса. Верхний узел сбалансированного дерева называется корневым. Узлы нижнего уровня индекса называются конечными. Все уровни индекса между корневыми и конечными узлами называются промежуточными. В кластеризованном индексе конечные узлы содержат страницы данных базовой таблицы. Цитата:
Самое интересное - это последняя фраза.. в которой грится как обойти это ограничение в 16 столбцов..(хотя я так полагаю это к первичному ключу не относится..)
* строки данных в базовой таблице не сортируются и хранятся в порядке, который основан на их некластеризованных ключах; * конечный уровень некластеризованного индекса состоит из страниц индекса вместо страниц данных. ... Максимальное число байтов в любом ключе индекса не может превышать 900 в SQL Server 2005. Можно определить ключ, использующий столбцы переменной длины, максимальная длина которых может превышать 900 байт при условии, что в эти столбцы не будут вставляться строки объемом более 900 байт данных. В SQL Server 2005 в некластеризованный индекс можно включать неключевые столбцы, чтобы избежать ограничения максимального размера ключа индекса, равного 900 байт. Дополнительные сведения см. в разделе Индекс с включенными столбцами. ... Требования к размеру столбцов * Должен быть определен как минимум один ключевой столбец. Максимальное количество неключевых столбцов равно 1023. Это на 1 меньше, чем максимальное количество столбцов таблицы. * Ключевые столбцы индекса, в отличие от неключевых, должны удовлетворять текущим ограничениям на максимальное количество столбцов (16) и общий размер ключа индекса (900 байт). * Общий размер всех неключевых столбцов ограничен только размером столбцов, указанных в предложении INCLUDE, например столбцы varchar(max) могут иметь размер до 2 ГБ. |
|