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

Откуда:
Сообщений: 13
Добрый день, помогите разобраться, стоит задача после разработчиков на базе :

Необходимо очистить данные всех таблиц.

Или же просто удалить полностью все существующие таблицы, чтобы база была пустая, только пользователь user остался.


В SQL Server Management Studio выбираю New Query на этой базе, к разделу Tables, открывается список таблиц. Выбираю первую

DELETE FROM dbo.tables1 и получаю ошибку.

The DELETE statement conflicted with the REFERENCE constraint. tables2

Нужно начинать со второй? Я правильно понимаю? Спасибо.
13 июл 12, 09:54    [12861001]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
narfer,
автор
Нужно начинать со второй? Я правильно понимаю?

Да
13 июл 12, 09:55    [12861011]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
narfer
Member

Откуда:
Сообщений: 13
Далее возникает такая ошибка при очистке таблицы

occurred in database "dila", table "dbo.tables4", column 'CAT_CATEGORY_ID'.


Что нужно сделать?
13 июл 12, 10:00    [12861040]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
narfer,Вам надо сначала очистить все таблицы,которые имеют внешний ключ на данную таблицу
13 июл 12, 10:06    [12861095]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
narfer
Member

Откуда:
Сообщений: 13
Спасибо Денис, извиняюсь за глупый вопрос.
13 июл 12, 10:23    [12861247]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
hoha_ftf
Member

Откуда: ЕКБ
Сообщений: 42
А если выполнять
exec sp_MSforeachtable 'delete from ?'

пока все не выполнится
13 июл 12, 12:24    [12862254]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
hoha_ftf
А если выполнять
exec sp_MSforeachtable 'delete from ?'

пока все не выполнится

А FK ?
13 июл 12, 12:25    [12862263]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
hoha_ftf
Member

Откуда: ЕКБ
Сообщений: 42
Ken@t, глядишь, с n-ого раза выполнится. Главное ничего лишнего не удалить.
13 июл 12, 12:30    [12862297]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
nicescar
Member

Откуда:
Сообщений: 94
автор
Или же просто удалить полностью все существующие таблицы, чтобы база была пустая, только пользователь user остался.


Например, вот: http://stackoverflow.com/questions/536350/sql-server-2005-drop-all-the-tables-stored-procedures-triggers-constriants-a
13 июл 12, 14:02    [12863052]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1982
denis2710
narfer,Вам надо сначала очистить все таблицы,которые имеют внешний ключ на данную таблицу


А если попробовать воспользоваться для очистки старым добрым
truncate
? каковой, вроде, относится к инструментам админа?
13 июл 12, 14:18    [12863176]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
мелочные
Guest
ну так чего мелочиться-то,
раз уже заодно и процедуры с констрейнтами удаляем, то еще проще:
drop database + create database + create user
13 июл 12, 14:19    [12863194]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
DaniilSeryi
denis2710
narfer,Вам надо сначала очистить все таблицы,которые имеют внешний ключ на данную таблицу


А если попробовать воспользоваться для очистки старым добрым
truncate
? каковой, вроде, относится к инструментам админа?

если нет fk,то truncate - просто,быстро,надежно
13 июл 12, 14:20    [12863210]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
gang
Member

Откуда:
Сообщений: 1394
denis2710, Независимо от констрейнтов truncate быстрее и надежнее delete. Помимо прочего он еще обнуляет идентити полей.
Так что sp_MSforeachtable + truncate и раза с дцатого точно все зачистится.
13 июл 12, 15:44    [12863861]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
gang
denis2710, Независимо от констрейнтов truncate быстрее и надежнее delete. Помимо прочего он еще обнуляет идентити полей.
Так что sp_MSforeachtable + truncate и раза с дцатого точно все зачистится.

А где я говорил что delеte быстрее???
"надежнее"-интересно что это значит в данном случае.
Подход " раза с дцатого точно все зачистится" я боюсь устроит не всегда.
sp_MSforeachtable - не документировано и можно просто не найти в следующей версии.
13 июл 12, 15:57    [12863957]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
gang
Member

Откуда:
Сообщений: 1394
denis2710, "надежнее" в данном случае значит что лог не распухнет и не переполнится, что админ не заснет пока делит лопатить будет, что тот же идентити во всех таблицах будет обнулен. Ну а про подходы и использование недокументированных фичей это уже из разряда вкусов: кому-то надо "с шашечками" а кому-то "ехать".
13 июл 12, 16:22    [12864119]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
Shakill
Member

Откуда: мск
Сообщений: 1887
gang
Ну а про подходы и использование недокументированных фичей это уже из разряда вкусов: кому-то надо "с шашечками" а кому-то "ехать".


не из разряда вкусов, а из разряда "пока гром не грянет". нет документации, нет никаких гарантий => использовать надо внимательно и только руками
13 июл 12, 16:44    [12864290]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
denis2710
DaniilSeryi
пропущено...


А если попробовать воспользоваться для очистки старым добрым
truncate
? каковой, вроде, относится к инструментам админа?

если нет fk,то truncate - просто,быстро,надежно

gang
Независимо от констрейнтов truncate....

+

USE tempdb
GO

/****** Object:  Table [dbo].[zt_1]    Script Date: 07/13/2012 16:34:27 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[zt_1](
	[id] [int] NOT NULL,
 CONSTRAINT [PK_zt_1] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO




/****** Object:  Table [dbo].[zt_2]    Script Date: 07/13/2012 16:34:34 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[zt_2](
	[id] [int] NOT NULL,
	[id_zt1] [int] NULL,
 CONSTRAINT [PK_zt2] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[zt_2]  WITH CHECK ADD  CONSTRAINT [FK_zt_2_zt_1] FOREIGN KEY([id_zt1])
REFERENCES [dbo].[zt_1] ([id])
GO

ALTER TABLE [dbo].[zt_2] CHECK CONSTRAINT [FK_zt_2_zt_1]
GO

truncate table zt_1
truncate table zt_2



gang
что тот же идентити во всех таблицах будет обнулен
сомнительный плюс,может быть как полезно так и не очень

gang
Ну а про подходы и использование недокументированных фичей это уже из разряда вкусов:
+ 1 На вкус и цвет фломастеры разные.
13 июл 12, 16:44    [12864296]     Ответить | Цитировать Сообщить модератору
 Re: Очистить данные из таблиц  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
gang
Независимо от констрейнтов truncate быстрее и надежнее delete.
При наличии констрейнов truncate не сработает, как можно говорить, что он быстрее?
13 июл 12, 16:57    [12864389]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить