Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обслуживание баз данных (SQL Server Compact 4.0)  [new]
Resident
Member

Откуда:
Сообщений: 97
Использую Visual Studio 2010 SP1 и SQL Server Compact 4.0

Мне необходимо после очистки таблицы(полного удаления всех записей), установить начальное значение идентификатора. Это можно сделать, если выполнить сжатие базы.

Справка гласит:

Возрастающие столбцы удостоверения сбрасываются так, чтобы последующее выделенное значение на один шаг превышало самое большое значение в оставшихся записях. Например, если все записи базы данных удалены, то при сжатии базы данных значению столбца удостоверения следующей записи присваивается начальное значение. Если самое большое оставшееся значение идентификатора базы данных — 50, а значение шага — 5, то при сжатии базы данных для следующей записи устанавливается значение 55. Это произойдет, даже если прежде добавлялись записи со значением больше 50, но до сжатия они были удалены. Значение шага может быть отрицательным. Например, при значении шага, равном –5, и минимальном значении, равном 15, в процессе сжатия базы данных для следующей записи устанавливается значение 10.

Примечание
Это может произойти при использовании исходной окончательной версии среды Visual Studio 2008. В среде Visual Studio 2008 с пакетом обновления 1 (SP1) при сжатии базы данных идентификаторы не изменяются.

Как бы я не пытался это проделать(через студию, из кода, на DBCC CHECKIDENT ("XXXXXXXX", RESEED, 0) ругается что не поддерживает) , значение идентификатора не сбрасывается. Это я что-то делаю не правильно или это глюк сервера?
Пожалуйста, подскажите какой есть выход из данной ситуации.
11 янв 12, 23:15    [11889108]     Ответить | Цитировать Сообщить модератору
 Re: Обслуживание баз данных (SQL Server Compact 4.0)  [new]
DeColo®es
Member

Откуда: Москва
Сообщений: 5503
Блог
Ну пересоздайте таблицу, делов-то.
11 янв 12, 23:35    [11889227]     Ответить | Цитировать Сообщить модератору
 Re: Обслуживание баз данных (SQL Server Compact 4.0)  [new]
Resident
Member

Откуда:
Сообщений: 97
DeColo®es
Ну пересоздайте таблицу, делов-то.


На самом деле таблиц и связей полно. Работаю с базой из кода на VB.NET. Данный вариант мне не подходит. Но почему не работает как указано в справке?
11 янв 12, 23:40    [11889247]     Ответить | Цитировать Сообщить модератору
 Re: Обслуживание баз данных (SQL Server Compact 4.0)  [new]
Resident
Member

Откуда:
Сообщений: 97
Неужели ни кто по этому вопросу так ни чего и не подскажет? Или это на в самом деле это элементарно что и отвечать на подобные вопросы не охота? Для меня это очень важно, не хотелось бы из за этого оставаться на Access.
12 янв 12, 08:05    [11889684]     Ответить | Цитировать Сообщить модератору
 Re: Обслуживание баз данных (SQL Server Compact 4.0)  [new]
f070214
Member

Откуда:
Сообщений: 35
правильно ли я понял, что удаление всех записей - это delete * from table? а установить начальное значение идентификатора - сбросить счетчик поля с identity? если так, то truncate table должен вам помочь.
12 янв 12, 08:14    [11889698]     Ответить | Цитировать Сообщить модератору
 Re: Обслуживание баз данных (SQL Server Compact 4.0)  [new]
Resident
Member

Откуда:
Сообщений: 97
f070214
правильно ли я понял, что удаление всех записей - это delete * from table? а установить начальное значение идентификатора - сбросить счетчик поля с identity? если так, то truncate table должен вам помочь.


Вы все правильно поняли спасибо, но TRUNCATE TABLE имеет ограничения:

Инструкцию TRUNCATE TABLE нельзя использовать для таблиц, для которых выполняются следующие условия:
На таблицу ссылается ограничение FOREIGN KEY. (Таблицу, имеющую внешний ключ, ссылающийся сам на себя, можно усечь.)
Таблица является частью индексированного представления.
Таблица опубликована с использованием репликации транзакций или репликации слиянием.


Для таблиц с какими-либо из этих характеристик следует использовать инструкцию DELETE.

По этому данный вариант тоже к сожалению не подходит, а переполнение identity мне не избежать.
12 янв 12, 08:44    [11889768]     Ответить | Цитировать Сообщить модератору
 Re: Обслуживание баз данных (SQL Server Compact 4.0)  [new]
f070214
Member

Откуда:
Сообщений: 35
FOREIGN KEY можно временно дропнуть, затем пересоздать. Тем более, что если чиститься основная таблица, то, часто бывает, чистятся и связанные.
12 янв 12, 09:13    [11889829]     Ответить | Цитировать Сообщить модератору
 Re: Обслуживание баз данных (SQL Server Compact 4.0)  [new]
Resident
Member

Откуда:
Сообщений: 97
f070214
FOREIGN KEY можно временно дропнуть, затем пересоздать. Тем более, что если чиститься основная таблица, то, часто бывает, чистятся и связанные.


Спасибо. Все это мне понятно, просто хотелось сделать проще как в Access. В справке пишут одно, а на деле….
12 янв 12, 09:36    [11889916]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить