Удалить все таблицы с определенным именем префикса в базе данных SQL 2008 программно

У меня есть более 3000 таблиц в моей базе данных SQL 2008 с именами, перечисленными ниже, все они начинаются с tempBinary_, которые мне нужно удалить программно, как мне это сделать? Я не знаю, предпочитаю ли я решение в SQL-скрипте или с использованием LINQtoSQL, думаю, оба варианта хороши.

tempBinary_002c90322f4e492795a0b8a14e2f7c99 tempBinary_0039f7db05a9456f96eb3cd6a788225a tempBinary_0057da9ef0d84017b3d0bbcbfb934fb2

Я использовал Like раньше для столбцов, но не знаю, подходит ли он и для имен таблиц. Может быть, что-то вроде этого, где используется LIKE, может это сделать? Я не знаю.

Use [dbo].[database_name]
DROP TABLE table_name
WHERE table_name LIKE 'tempBinary_%'

Любые идеи?


person radbyx    schedule 04.07.2011    source источник
comment
Я думаю, что решение может быть близко к этому ответу. stackoverflow.com/questions/4424038/   -  person radbyx    schedule 04.07.2011
comment
Не могу сделать это в Linq2SQL, удален тег.   -  person leppie    schedule 04.07.2011


Ответы (1)


person    schedule
comment
если вы поместите print @stmt перед выполнением sp_sqlexec, вы увидите операторы drop построчно - person Adrian Iftode; 04.07.2011
comment
Все хорошо, спасибо. Подождите, я проверю это и вернусь к вам, как только смогу. - person radbyx; 04.07.2011
comment
Сделал тест, вроде тормозит этот скрипт, единственное улучшение - объявить курсор FORWARD_ONLY READ_ONLY, буду редактировать - person Adrian Iftode; 04.07.2011