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

Откуда:
Сообщений: 81
можно как нибудь запросом очистить все таблицы Database? таблиц много и для каждой создавать delete from - довольно долго. может есть решение покрасивей ?
29 июн 11, 15:40    [10893752]     Ответить | Цитировать Сообщить модератору
 Re: очистить все таблицы Database  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
sp_msforeachtable
29 июн 11, 15:45    [10893812]     Ответить | Цитировать Сообщить модератору
 Re: очистить все таблицы Database  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
  • Заскриптовать базу (без данных)
  • Дропнуть базу
  • Создать базу со старым именем
  • Выполнить скрипт
  • 29 июн 11, 15:48    [10893836]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47144
    iap
  • Заскриптовать базу (без данных)
  • Дропнуть базу
  • Создать базу со старым именем
  • Выполнить скрипт
  • Собственно говоря, два последних шага - это наверно один (последний)
    29 июн 11, 15:49    [10893847]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    kDnZP
    Member [заблокирован]

    Откуда: ★[msg=16399436]★[msg=20850760]
    Сообщений: 11289
    Nakeshi, TRUNCATE работает быстрее, ну и к предложенным выше вариантом можно поиспользовать динамику))).
    29 июн 11, 15:50    [10893860]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    Shakill
    Member

    Откуда: мск
    Сообщений: 1887
    Nakeshi
    можно как нибудь запросом очистить все таблицы Database? таблиц много и для каждой создавать delete from - довольно долго. может есть решение покрасивей ?


    так уж и долго
    SELECT 'TRUNCATE TABLE  ' + QUOTENAME(table_schema) + '.' + QUOTENAME(table_name)
    FROM INFORMATION_SCHEMA.TABLES
    только FK сначала надо убрать
    29 июн 11, 15:50    [10893863]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47144
    Shakill
    только FK сначала надо убрать
    Сначала их надо найти и заскриптовать.
    А потом восстановить...
    Мне не кажется, что это так уж просто.
    При том, что надо почитить ВСЕ таблицы, а это здорово упрощает дело.
    29 июн 11, 15:56    [10893919]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47144
    Shakill
    так уж и долго
    SELECT 'TRUNCATE TABLE  ' + QUOTENAME(table_schema) + '.' + QUOTENAME(table_name)
    FROM INFORMATION_SCHEMA.TABLES
    В INFORMATION_SCHEMA.TABLES не только таблицы описаны
    29 июн 11, 15:58    [10893941]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    Гадя Петрович
    Member

    Откуда: планета Плюк, 215 в тентуре, галактика Кин-дза-дза в Спирали
    Сообщений: 52912
    iap
    Shakill
    так уж и долго
    SELECT 'TRUNCATE TABLE  ' + QUOTENAME(table_schema) + '.' + QUOTENAME(table_name)
    FROM INFORMATION_SCHEMA.TABLES
    В INFORMATION_SCHEMA.TABLES не только таблицы описаны
    а на не-таблицах инструкция с транкейтом и не сработает :)
    29 июн 11, 15:59    [10893949]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    Nakeshi
    Member

    Откуда:
    Сообщений: 81
    INFORMATION_SCHEMA.TABLES впринципе вполне хватит. в моем случае там кроме таблиц вообще ничего нет - ни хранимок ничего.
    попробовал вариант и с sp_msforeachtable
    29 июн 11, 16:01    [10893974]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    Nakeshi
    Member

    Откуда:
    Сообщений: 81
    всегда delete использовал. спасибо за ликбез - прочитал про truncate
    29 июн 11, 16:03    [10893993]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    Shakill
    Member

    Откуда: мск
    Сообщений: 1887
    Гадя Петрович, ок, добавляем WHERE TABLE_TYPE = 'BASE TABLE'

    iap, fk можно добыть из generate scripts. как в итоге получится быстрее, зависит от количества этих самых fk
    29 июн 11, 16:03    [10893996]     Ответить | Цитировать Сообщить модератору
     Re: очистить все таблицы Database  [new]
    iap
    Member

    Откуда: Москва
    Сообщений: 47144
    Nakeshi
    INFORMATION_SCHEMA.TABLES впринципе вполне хватит. в моем случае там кроме таблиц вообще ничего нет - ни хранимок ничего.
    Там есть VIEWs
    29 июн 11, 16:05    [10894016]     Ответить | Цитировать Сообщить модератору
    Все форумы / Microsoft SQL Server Ответить