Saya mencoba menulis skrip yang benar-benar akan mengosongkan database SQL Server. Inilah yang saya miliki sejauh ini:
USE [dbname]
GO
EXEC sp_msforeachtable 'ALTER TABLE ? NOCHECK CONSTRAINT all'
EXEC sp_msforeachtable 'DELETE ?'
Ketika saya menjalankannya di Management Studio, saya mendapatkan:
Perintah berhasil diselesaikan.
tetapi ketika saya me-refresh daftar tabel, mereka semua masih ada di sana. Apa yang saya lakukan salah?
Jawaban:
Ini tidak berfungsi untuk saya ketika ada beberapa tabel kunci asing.
Saya menemukan kode yang berfungsi dan melakukan semua yang Anda coba (hapus semua tabel dari database Anda):
Anda dapat menemukan pos di sini . Ini adalah posting oleh Groker.
sumber
Could not find stored procedure 'sp_MSForEachTable'.
dbo
. Jika Anda memiliki skema khusus, Anda perlu mengubahsql
ke:SELECT DISTINCT sql = 'ALTER TABLE [' + tc2.CONSTRAINT_SCHEMA + '].[' + tc2.TABLE_NAME + '] DROP [' + rc1.CONSTRAINT_NAME + ']'
sp_MSforeachtable
tidak tersedia di Azure. Gunakan jawaban @ CountZero sebagai gantinya.Anda juga dapat menghapus semua tabel dari database hanya menggunakan alat MSSMS UI (tanpa menggunakan skrip SQL). Terkadang cara ini bisa lebih nyaman (terutama jika dilakukan sesekali)
Saya melakukan langkah demi langkah sebagai berikut:
sumber
Dalam SSMS:
Sekarang, ini akan menghapus semuanya, termasuk database. Pastikan untuk menghapus kode untuk item yang tidak ingin Anda jatuhkan. Atau, di bagian "Pilih Objek", alih-alih memilih untuk skrip seluruh database, cukup pilih item yang ingin Anda hapus.
sumber
delete
digunakan untuk menghapus baris dari sebuah tabel. Anda harus menggunakannyadrop table
sebagai gantinya.sumber
NOCHECK CONSTRAINT
baris saya salah?Jawaban yang diterima tidak mendukung Azure. Ini menggunakan prosedur tersimpan tanpa dokumen "sp_MSforeachtable". Jika Anda mendapatkan kesalahan "azure tidak dapat menemukan prosedur tersimpan 'sp_msforeachtable" saat menjalankan atau hanya ingin menghindari mengandalkan fitur tidak berdokumen (yang dapat dihapus atau fungsinya diubah pada titik mana pun), cobalah di bawah ini.
Versi ini mengabaikan tabel histori migrasi kerangka kerja entitas "__MigrationHistory" dan "database_firewall_rules" yang merupakan tabel Azure Anda tidak akan memiliki izin untuk menghapus.
Diuji ringan pada Azure. Periksa untuk membuat ini tidak memiliki efek yang tidak diinginkan pada lingkungan Anda.
Diambil dari:
https://edspencer.me.uk/2013/02/25/drop-all-tables-in-a-sql-server-database-azure-friendly/
http://www.sqlservercentral.com/blogs/sqlservertips/2011/10/11/remove-all-foreign-keys/
sumber
sumber
Anda hampir benar, gunakan sebaliknya:
tetapi baris kedua Anda mungkin perlu menjalankan lebih dari sekali sampai Anda berhenti mendapatkan kesalahan:
Pesan:
berarti semua tabel berhasil dihapus.
sumber
Pendek dan manis:
sumber
sp_msforeachtable
olehsp_MSforeachtable
dan akan sangat menyarankan untuk menambahkanuse yourdatabase
sebagai baris pertama. Bekerja seperti pesona.Cara berpuasa adalah:
sumber
Sepertinya perintah harus tanpa selimut persegi
sumber
Bagi saya, cara termudah:
sumber
Temukan !!
Anda dapat menggunakan kueri di bawah ini untuk menghapus semua tabel dari database
EXEC sp_MSforeachtable @ command1 = "DROP TABLE?"
Selamat coding!
sumber
Bagaimana kalau menjatuhkan seluruh database lalu membuatnya lagi? Ini bekerja untuk saya.
sumber
Saya tahu ini adalah posting lama sekarang tetapi saya telah mencoba semua jawaban di sini pada banyak database dan saya telah menemukan mereka semua bekerja kadang-kadang tetapi tidak semua waktu untuk berbagai (saya hanya dapat mengasumsikan) kebiasaan SQL Server.
Akhirnya saya menemukan ini. Saya sudah menguji ini di mana-mana (secara umum) saya bisa dan berhasil (tanpa prosedur toko tersembunyi).
Sebagai catatan sebagian besar pada SQL Server 2014. (tetapi sebagian besar versi lain saya mencobanya juga tampaknya berfungsi dengan baik).
Saya telah mencoba sementara loop dan nulls dll, kursor dan berbagai bentuk lainnya tetapi mereka selalu gagal pada beberapa database tetapi tidak pada yang lain tanpa alasan yang jelas.
Mendapatkan hitungan dan menggunakannya untuk beralih sepertinya selalu bekerja pada semua yang telah saya uji.
sumber
Untuk Tabel Temporal sedikit lebih rumit karena mungkin ada beberapa kunci asing dan juga pengecualian:
Drop table operation failed on table XXX because it is not a supported operation on system-versioned temporal tables
Yang dapat Anda gunakan adalah:
sumber