Saya menggunakan Microsoft SQL Server 2008. Pertanyaan saya adalah: Bagaimana cara menjatuhkan beberapa tabel dengan awalan umum dalam satu permintaan?
sesuatu seperti itu nama tabel:
LG_001_01_STLINE,
LG_001_02_STFICHE
Saya menggunakan Microsoft SQL Server 2008. Pertanyaan saya adalah: Bagaimana cara menjatuhkan beberapa tabel dengan awalan umum dalam satu permintaan?
sesuatu seperti itu nama tabel:
LG_001_01_STLINE,
LG_001_02_STFICHE
Anda dapat membangun string menggunakan tampilan katalog, misalnya:
DECLARE @sql NVARCHAR(MAX) = N'';
SELECT @sql += '
DROP TABLE '
+ QUOTENAME(s.name)
+ '.' + QUOTENAME(t.name) + ';'
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
WHERE t.name LIKE 'LG_001%';
PRINT @sql;
-- EXEC sp_executesql @sql;
Tentu saja ada Gotcha potensial, misalnya jika tabel ini memiliki hubungan kunci asing, Anda harus menjatuhkannya terlebih dahulu, atau mengatur output untuk menjatuhkan tabel dalam urutan tertentu.
Untuk mendapatkan daftar tabel, gunakan:
SELECT s.name, t.name
FROM sys.tables AS t
INNER JOIN sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
WHERE t.name LIKE 'LG_001%';
Saya menjalankan kueri ini lalu menempelkan hasilnya kembali ke jendela kueri untuk menjatuhkan semua tabel:
Jika Anda ingin menghapus semua tabel tetapi tetap dengan nama-nama yang dimulai dengan A, B, C atau D:
sumber
Ini memungkinkan Anda untuk menghapus sejumlah besar tabel.
sumber
Saya suka yang ini yang saya tulis:
sumber
STATIC
dan / atauLOCAL FAST_FORWARD
] ( sqlperformance.com/2012/09/t-sql-queries/cursor-options ). (3) Anda tidak seharusnya menggunakan tampilan kompatibilitas mundur yang sudah usangsysindexes
. (4) Skrip Anda menganggap semua tabel ada dalamdbo
skema (atau lebih buruk, skema default dari pengguna yang mengeksekusi, yang bahkan mungkin tidakdbo
).Ini dapat dilakukan dengan menggunakan
execute
sebagai berikut:sumber
dbo
, dan 2) nama tidak dapat mengandung]
- keduanya mungkin benar dalam kasus OP tetapi itu masih akan bagus Gagasan untuk menyebutkan asumsi-asumsi itu, karena peringatan yang mengikutinya mungkin tidak sepenuhnya jelas bagi orang lain. Namun, seperti yang saya katakan di awal, masalah utama saya dengan jawaban ini adalah hanya menyatakan kembali saran yang sudah ada tanpa menambahkan nilai baru.Jalankan kueri di atas dan simpan hasilnya ke csv. Kemudian buka CSV itu di notepad. Kemudian lakukan Ctrl + H untuk mengganti skema dengan DROP TABLE SCHEMA yang akan memberi Anda semua drop query, salin dan tempel sql besar ini ke dalam alat sql Anda dan jalankan
jika hasilnya Anda
setelah ganti, akan terlihat seperti ini
sumber
PRINT
pernyataan. Bagaimana jawaban Anda lebih baik daripada jawaban dengan pilihan tertinggi?