Muhammad Qasim Ludin Ответов: 2

Как я могу сбросить записи моей таблицы по умолчанию


Здравствуйте, дорогие друзья
Я использую SQL Server 2008, когда изменил тип данных столбца id (float) на (nvarchar) Я потерял правильные 5000 записей, теперь только на одном идентификаторе доступно более 2 или трех записей, поэтому после изменения типа данных и удаления первичного ключа с помощью кнопки Сохранить появилось сообщение
(Данные вашей таблицы будут потеряны)
Пожалуйста, помогите мне, как я могу сбросить свои записи

Большое спасибо друзья

Что я уже пробовал:

Я попробовал сделать последнюю резервную копию но там было всего 2000 записей но там не было никого профессионала чтобы сделать резервную копию

RedDk

У вас был столбец ID, который был отформатирован как (float), и при изменении типа на (nvarchar) вы потеряли столбец индексов, но все равно сохранили остальную часть строки для каждой записи ... и по последним подсчетам у вас все еще было 5000 записей?

Если это так, то я не могу придумать никакого способа восстановить это удостоверение личности ... но моя мысль заключается в том, что сортировка (с использованием ORDER BY) по какому-то другому сохраненному значению столбца снова сгруппирует отдельные строки ... полного переиндексирования с использованием "[ID][int] IDENTITY(1,1) NOT NULL", а затем вставки из этой неиндексированной таблицы должно быть достаточно, чтобы сделать кластеризованные записи "ближе" к индексированным и первичным ключевым данным, на которые вы ссылались до ошибки.

Для начала поищите личность в бол

an0ther1

Если у вас есть резервная копия, восстановите копию в другое место, а затем подумайте, как повторно вставить ваши данные.
Любой другой метод займет больше времени для решения и, скорее всего, будет неудачным.

Как предложил RedDK, посмотрите на IDENTITY в книгах SQL on line & посмотрите на опцию IDENTITY_INSERT - это позволяет повторно вставлять данные, включая значение Identity.
Скорее всего, вам придется включить IGNORE_DUP_KEY при повторной вставке данных

удачи

2 Ответов

Рейтинг:
1

Patrice T

Вы только что на собственном горьком опыте узнали причину, по которой профессиональные администраторы теряют свое время, делая/организуя бесполезные резервные копии. Это потому, что однажды бесполезная резервная копия станет полезной и бесценной, но никто никогда не знает, когда это произойдет.

Цитата:
Я изменил тип данных ID column (float) на (nvarchar) Я потерял правильные 5000 записей

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

Ваше решение: примите меры, чтобы никогда не оказаться в такой ситуации. Для вашей реальной проблемы уже слишком поздно.
- Резервное копирование, резервное копирование резервное копирование
- никогда не экспериментируйте на живых данных, всегда делайте копии, когда что-то идет не так, это только копия.


Рейтинг:
0

#realJSOP

0) использование поплавка для столбца идентификатора-не самая лучшая идея. Если вы думаете, что ваши идентификаторы будут многочисленными, используйте bigint.

1) После добавления данных изменение типа столбца приведет к потере всех данных в таблице.

2) Если бы это был я, я бы создал целую новую таблицу с той же схемой, изменил тип нужных столбцов и вставил записи из старой таблицы в новую, не забыв привести.преобразовать соответствующие столбцы данных в тип новой схемы.

-- duplicate a table's schema

SELECT TOP 0 * INTO NewTable FROM OldTable;

-- after you do that, use the table designer to alter the necessary columns' type

-- and then do a query something like this

INSERT INTO NewTable
SELECT col1,
       Convert(newtype, col2) AS col2,
       ...
FROM OldTable;


РЕДАКТИРОВАТЬ =============================

Знаете, меня бесконечно волнует, когда кто–то 1-голосует за ответ, не объясняя причины. Помните, что качество вопроса напрямую влияет на качество ответа.