powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удаление всех view
13 сообщений из 13, страница 1 из 1
Удаление всех view
    #40093306
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.

Подскажите, пожалуйста, как удалить все представления сразу из базы данных? - используя ->
Код: sql
1.
select [name] from sys.objects where [type] = 'V'



Буду благодарен за помощь.
...
Рейтинг: 0 / 0
Удаление всех view
    #40093310
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Caxa_ASS,

Замените select на drop

Код: sql
1.
2.
3.
4.
5.
6.
DECLARE @cmd NVARCHAR(max);

SELECT @cmd = STRING_AGG(CONCAT('SELECT TOP 1 * FROM ', TABLE_SCHEMA, '.', TABLE_NAME), CHAR(13))
  FROM INFORMATION_SCHEMA.VIEWS

EXEC(@cmd)
...
Рейтинг: 0 / 0
Удаление всех view
    #40093316
Caxa_ASS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такой вариант

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
DECLARE @name VARCHAR(128) 
DECLARE @SQL VARCHAR(254)
DECLARE @schema VARCHAR(128)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 ORDER BY [name]) 
SELECT @schema = (SELECT TOP 1 schema_name(schema_id) FROM sys.views WHERE [name] = @name)

WHILE @name IS NOT NULL 
BEGIN 
    SELECT @SQL = 'DROP VIEW [' + @schema + '].[' + RTRIM(@name) +']' 
    EXEC (@SQL) 
    PRINT 'Dropped View: ' + @name 
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name]) 
    SELECT @schema = (SELECT TOP 1 schema_name(schema_id) FROM sys.views WHERE [name] = @name)
END 
GO
...
Рейтинг: 0 / 0
Удаление всех view
    #40093317
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Caxa_ASS,

тогда уж так (select => drop):

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
DECLARE @name VARCHAR(128) = ''
DECLARE @SQL VARCHAR(254)
DECLARE @schema VARCHAR(128)

WHILE EXISTS(SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name])
BEGIN 
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'V' AND category = 0 AND [name] > @name ORDER BY [name]) 
    SELECT @schema = (SELECT TOP 1 schema_name(schema_id) FROM sys.views WHERE [name] = @name)
    SELECT @SQL = 'SELECT TOP 1 * FROM [' + @schema + '].[' + RTRIM(@name) +']' 
    EXEC (@SQL) 
    PRINT 'Dropped View: ' + @name 
END 



всё меньше букв ))
...
Рейтинг: 0 / 0
Удаление всех view
    #40093318
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg_SQL


всё меньше букв ))


это не нужно
AND [name] > @name

да и зачем брать имя схемы отдельным запросом?
...
Рейтинг: 0 / 0
Удаление всех view
    #40093319
Oleg_SQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad

это не нужно
AND [name] > @name

для примера с SELECT TOP... - нужно, для DROP - нет.


komrad

да и зачем брать имя схемы отдельным запросом?


это вопрос к ТС, мой вариант был совсем другой.
...
Рейтинг: 0 / 0
Удаление всех view
    #40093321
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caxa_ASS,

вводите представления в SSMS на панель "Сведения (F7) справа, выделяете все и удаляете.
...
Рейтинг: 0 / 0
Удаление всех view
    #40093453
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Caxa_ASS
Всем привет.

Подскажите, пожалуйста, как удалить все представления сразу из базы данных? - используя ->
Код: sql
1.
select [name] from sys.objects where [type] = 'V'



Буду благодарен за помощь.


Самый надежный способ:

1. удалить базу
2. создать базу уже без вью
...
Рейтинг: 0 / 0
Удаление всех view
    #40093501
flexgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин

Самый надежный способ:

1. удалить базу
2. создать базу уже без вью


Шуточки у тебя, боцман...(c)

А если он в самом деле так сделает? ;-)
...
Рейтинг: 0 / 0
Удаление всех view
    #40093588
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Боже мой! Нафига всё это?
1. Открываете в SSMS базу
2. Переходите на узел Views
3. Нажимаете F7
4. В открывшемся браузере, с помощью CTRL + click или SHIFT + click, короче, как в обычном виндовом списке, допускающем множественное выделение, выделяете все ненужные вам представления.
5. Нажимаете DEL на клавиатуре и OK в открывшемся окне.
---
или
6. Right-click мышью на выделении, "Script as -> Drop -> New Window", и запускаете скрипт.

:-)
...
Рейтинг: 0 / 0
Удаление всех view
    #40093589
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя да, признаюсь протупил. Бывают варианты, когда объекты нужно удалять скриптом.
Например, когда у тебя штук сто серверов с почти однотипными базами, с почти одинаковым набором этих самых вьюх. И нужно их одномоментно все удалить.
Тогда нужно:
1. В SSMS создать регистрации всех этих 100500 управляемых серверов, крайне желательно - в отдельном контейнере. Коннект должен осуществляться в нужную базу, это важно :-)
2. Клик на этом контейнере -> Query. SSMS прицепится сразу ко всем серверам. Ну, или к части не прицепится, но об этом сообщит.
3. В открывшемся окошке:
Код: sql
1.
2.
3.
4.
5.
Declare @s as nvarchar(max)
Select @s = N'drop view ' + 
stuff((Select N',' + quotename(SCHEMA_NAME(a.schema_id)) + '.' + Quotename(a.name) from sys.views a for xml path(''), type).value('.', 'nvarchar(max)'), 1, 1, '')

exec(@s)


Вуаля. Все вьюхи удалятся на всех серверах в целевых базах одномоментно, без СМС и регистрации :-)
...
Рейтинг: 0 / 0
Удаление всех view
    #40093601
andy st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
uaggster, был бы линух, можно было бы на добивку с консоли
Код: sql
1.
rm -rf /
...
Рейтинг: 0 / 0
Удаление всех view
    #40093627
flexgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andy st
uaggster, был бы линух, можно было бы на добивку с консоли
Код: sql
1.
rm -rf /



Это очень старая шутка, помнится, лет 15-20 назад я эту шутку видел, на форуме linux.ru.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Удаление всех view
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]