Я не хочу вводить имя всех таблиц, чтобы отбросить их все. Возможно ли с одним запросом?
sql
sql-server
Маджид
источник
источник
Ответы:
Используйте представление INFORMATION_SCHEMA.TABLES, чтобы получить список таблиц. Сгенерируйте Drop-сценарии в операторе select и удалите его с помощью Dynamic SQL:
Версия Sys.Tables
Примечание: если у вас есть какие-либо
foreign Keys
определенные между таблицами, то сначала запустите следующий запрос, чтобы отключить всеforeign keys
присутствующие в вашей базе данных.Для получения дополнительной информации, проверьте здесь .
источник
[sys]
схемных представлений, если переносимость через rdbms 'не требуется. stackoverflow.com/a/3654313/251174Print @sql
раньшеexec
. Затем я выполняю динамически построенные операторы отбрасывания черезsp_executesql
Если вы хотите использовать только один SQL-запрос для удаления всех таблиц, вы можете использовать это:
Это скрытая хранимая процедура на сервере sql, которая будет выполняться для каждой таблицы в базе данных, к которой вы подключены.
Примечание: вам может потребоваться выполнить запрос несколько раз, чтобы удалить все таблицы из-за зависимостей.
Примечание 2: Чтобы избежать первого примечания, перед запуском запроса сначала проверьте, существуют ли связи внешних ключей с какой-либо таблицей. Если есть, просто отключите ограничение внешнего ключа, выполнив запрос ниже:
источник
Если вы не хотите печатать, вы можете создать операторы с помощью этого:
Затем скопируйте и вставьте в новое окно SSMS, чтобы запустить его.
источник
QUOTENAME
также, который выглядит аккуратно.'DROP TABLE ' + QUOTENAME(name) + ';'
Вы также можете использовать следующий скрипт для удаления всего, включая следующее:
https://michaelreichenbach.de/how-to-drop-everything-in-a-mssql-database/
источник
Я бы просто внес небольшое изменение в ответ @ NoDisplayName и использовал его
QUOTENAME()
вTABLE_NAME
столбце, а также включилTABLE_SCHEMA
столбец, если таблицы не включены вdbo
схему.Или используя представления
sys
схемы (согласно комментарию @ swasheck):источник
[sys]
схемы, если не требуется переносимость через rdbms. stackoverflow.com/a/3654313/251174В качестве продолжения ответа Dave.Gugg, это будет тот код, который понадобится кому-то, чтобы получить все строки DROP TABLE в MySQL:
источник
Самый простой способ - удалить всю базу данных и создать ее еще раз:
Вот и все.
источник
Если у кого-то еще была проблема с лучшим решением ответа (включая отключение внешних ключей), вот другое решение от меня :
источник
Не совсем 1 запрос, все еще довольно короткий и приятный:
источник
Используйте следующий скрипт для
drop
всехconstraints
:Затем выполните следующую команду, чтобы удалить все таблицы:
Это работало для меня в базе данных SQL Azure, где
'sp_msforeachtable'
было недоступно!источник
Я знаю, что этот вопрос очень старый, но каждый раз, когда мне нужен этот код ... кстати, если у вас есть таблицы и представления, а также Функции и ПРОЦЕДУРЫ, вы можете удалить все это с помощью этого сценария ... так почему я публикую этот сценарий ?? потому что если вы удалите все таблицы, вам нужно будет удалить все представления, и если у вас есть функции и процедуры, вам нужно удалить его тоже,
я надеюсь, что это поможет кому-то
источник