Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Убить всю инфу


Автор: Artemon 26.1.2006, 18:43
Можоли одним ударом стереть всю инфу из БД, при этом не удаляя саму БД?

Автор: Vit 26.1.2006, 20:23
Create script/Run script

Автор: Artemon 26.1.2006, 21:38
Я имел в виду удалить всю инфу, используя SQL запросы.

Автор: Vit 27.1.2006, 00:39
Примерно так, только учти откатить такую операцию невозможно, так как она не идёт в контексте транзакции, зато обнуляет счётчики и работает довольно быстро, но может тормознуть конкретно, если к базе данных кто-то законнекчен и пробует что-то менять в это же время

Код

Declare 
  @tableName varchar 128,
  @sql varchar(500)

Declare c cursor static for
  Select Table_Name From information_schema.tables Where Table_Type='BASE TABLE'
Open c
fetch next from c into @tableName
While @@fetch_status=0
  begin
    Set @sql='Truncate table '+@tableName
    Exec @sql 
    fetch next from c into @tableName
  end
Close c
Deallocate c


Для выполнения в контексте транзакции но не обнуляя счётчики:

Код

Declare 
  @tableName varchar 128,
  @sql varchar(500)

Declare c cursor static for
  Select Table_Name From information_schema.tables Where Table_Type='BASE TABLE'
Open c
fetch next from c into @tableName
While @@fetch_status=0
  begin
    Set @sql='Delete From '+@tableName
    Exec @sql 
    fetch next from c into @tableName
  end
Close c
Deallocate c


Автор: Artemon 27.1.2006, 09:51
Спасибо, буду пробовать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)