Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Удалить таблицы из базы (число прочтений - 2110 )
green
Junior Member
**
Отсутствует



Сообщений: 29
Местоположение: Астрахань
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Удалить таблицы из базы
25. Августа 2006 :: 12:48
Печать  
Задача стоит следующая - из базы необходимо "напрямую дропнуть" некотрые таблицы (в частности, - регистров, пара справочников и некотрые начинающие с 1S*). Моя мысль дошла пока только до того, что можно стандартными средствами пробежаться по объекту "Метаданные" и через "ИмяТаблицыСправочника" и т.п. получить имена о соответсвенно прибить таблицы, но всё это немного не красиво - есть ли другой способ?
  
Наверх
 
IP записан
 
green
Junior Member
**
Отсутствует



Сообщений: 29
Местоположение: Астрахань
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Удалить таблицы из базы
Ответ #1 - 25. Августа 2006 :: 13:44
Печать  
А как насчет варианта - через таблицу sysobjects? - оттуда выбрать имена всех таблиц по необходимым маскам, а потом всё дропнуть?
наподобие такого куска через выполнить отработает?
FETCH NEXT FROM MyCur INTO @TableName, @ColName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('Delete from '+@TableName+' with (tablock) where '+@ColName+' IN (Select IDDOC FROM ##ID)')
FETCH NEXT FROM MyCur INTO @TableName, @ColName
END
? Пробовал кто-нибудь? :О)
  
Наверх
 
IP записан
 
green
Junior Member
**
Отсутствует



Сообщений: 29
Местоположение: Астрахань
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Удалить таблицы из базы
Ответ #2 - 25. Августа 2006 :: 13:54
Печать  
что-то типа такого:
DECLARE Mycur cursor for
SELECT sysobjects.name distinct
FROM syscolumns
WHERE xtype = "U"///здесь ещё условия по маскам

OPEN MyCur
DECLARE @TableName varchar(20)
FETCH NEXT FROM MyCur INTO @TableName
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC ('Drop table '+@TableName)
FETCH NEXT FROM MyCur INTO @TableName, @ColName
END
CLOSE MyCur
DEALLOCATE MyCur
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать