Używam sql-server 2005. Początkowo, dla celów edukacyjnych stworzyłem wiele tabel teraz chcę upuścić wszystkie te tabele z wyjątkiem jednego, który jest obecnie nad tym pracuję. Czy istnieje kod lub zapytanie, za pomocą którego można usunąć wszystkie tabele z mojej bazy danych z wyjątkiem tej jednej przydatnej tabeli. Jednym ze sposobów jest skopiowanie tej tabeli do nowej bazy danych przy użyciu klauzuli SELECT INTO...
i usunięcie tej bazy danych, ale nie wiem, czy jest to dobry sposób na rozwiązanie tego problemu.Jak usunąć wszystkie tabele z bazy danych w SQL Server 2005 w instrukcji z wyjątkiem jednej tabeli
Jak usunąć wszystkie tabele z bazy danych w SQL Server 2005 w instrukcji z wyjątkiem jednej tabeli
Odpowiedz
Jeśli stoły nie są zbyt duże, prawdopodobnie wybrałbym je wszystkie w oknie "Szczegóły eksploratora obiektu" w SSMS, a następnie naciśnij "usuń".
Dla programowego rozwiązania można użyć
EXEC sys.sp_MSforeachtable
N'IF OBJECT_ID(''?'') <> OBJECT_ID(''dbo.YourTableToKeep'')
DROP TABLE ?
'
Obie metody mogą wymagać wielokrotnych przebiegów w celu usunięcia wszystkich tabel zaangażowanych w relacjach FK (tabela nie może zostać usunięty, jeśli inny stół ma FK odsyłania go).
Aby nieco rozwinąć rozwiązanie interfejsu: F7 to skrót klawiszowy Szczegóły eksploratora obiektów. Nie można wybierać wielu obiektów w widoku drzewa eksploratora obiektów, ale można wybrać węzeł Tabele w widoku drzewa i nacisnąć klawisz F7, aby wyświetlić Szczegóły eksploratora obiektów. –
Możesz użyć języka sql, aby utworzyć wszystkie upuszczane pliki, których potrzebujesz. Na przykład następna kwerenda sql
i uzyskać wynik wykonywania kwerendy.
Skopiuj pierwszą kolumnę zapytania i wklej ją w nowym oknie zapytania.
Łatwo zobaczyć, że masz listę staments spadek dla wszystkich tabel z wyjątkiem „TableNameOne” i „TableNameTwo”, ...
Im myśleć, że jest bardzo proste ...
/* Drop all Foreign Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
WHILE @name is not null
BEGIN
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
WHILE @constraint IS NOT NULL
BEGIN
SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint) +']'
EXEC (@SQL)
PRINT 'Dropped FK Constraint: ' + @constraint + ' on ' + @name
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'FOREIGN KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all Primary Key constraints */
DECLARE @name VARCHAR(128)
DECLARE @constraint VARCHAR(254)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
WHILE @name IS NOT NULL
BEGIN
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
WHILE @constraint is not null
BEGIN
SELECT @SQL = 'ALTER TABLE [dbo].[' + RTRIM(@name) +'] DROP CONSTRAINT [' + RTRIM(@constraint)+']'
EXEC (@SQL)
PRINT 'Dropped PK Constraint: ' + @constraint + ' on ' + @name
SELECT @constraint = (SELECT TOP 1 CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' AND CONSTRAINT_NAME <> @constraint AND TABLE_NAME = @name ORDER BY CONSTRAINT_NAME)
END
SELECT @name = (SELECT TOP 1 TABLE_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE constraint_catalog=DB_NAME() AND CONSTRAINT_TYPE = 'PRIMARY KEY' ORDER BY TABLE_NAME)
END
GO
/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 ORDER BY [name])
WHILE @name IS NOT NULL
BEGIN
SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
EXEC (@SQL)
PRINT 'Dropped Table: ' + @name
SELECT @name = (SELECT TOP 1 [name] FROM sysobjects WHERE [type] = 'U' AND category = 0 AND [name] > @name ORDER BY [name])
END
GO
to służy! Dzięki – ben
- 1. Jak zaktualizować dane w jednej tabeli z odpowiednich danych w innej tabeli w SQL Server 2005
- 2. dołączyć trzy tabele w SQL Server 2005
- 3. Zaktualizuj tabelę bazy danych z jednej tabeli bazy danych programu SQL Server do innej?
- 4. Jak mogę usunąć wszystkie tabele z mojej bazy danych?
- 5. Jak ustawić domyślny schemat bazy danych w SQL Server 2005?
- 6. Jak odzyskać bazę danych z MDF w SQL Server 2005?
- 7. skopiować dane z tabeli w jednej bazy danych do innej bazy danych
- 8. Jak mogę usunąć wszystkie wyzwalacze w bazie danych MySQL za pomocą jednej instrukcji SQL?
- 9. Jak mogę dokumentować tabele i pola w SQL Server 2005
- 10. Role bazy danych SQL Server
- 11. Nie można znaleźć datę typów danych w SQL Server 2005
- 12. Jak mapować uint w NHibernate z SQL Server 2005
- 13. Jak znaleźć nieużywane tabele w SQL Server
- 14. Jak usunąć wszystkie klucze obce z bazy danych programu SQL Server?
- 15. Uzyskaj listę kolumn obliczeniowych w tabeli bazy danych (SQL Server)
- 16. Aktualizuj tabele bazy danych
- 17. Jak wyświetlić listę wszystkich obiektów z konkretnej bazy danych w SQL Server 2005
- 18. SQL 2005 SMO - znajdowanie tabeli odwołań
- 19. Kreator publikacji bazy danych SQL z SQL Server 2008
- 20. Jak korzystać z projektu bazy danych SQL Server
- 21. Fill DataTable z bazy danych SQL Server
- 22. Jak skopiować dane z jednej bazy danych/tabeli do innej bazy danych/tabeli
- 23. Jak rozpoznać, które tabele zajmują najwięcej miejsca w bazie danych SQL Server 2005?
- 24. Usuń wszystkie wiersze tabeli z tabeli bazy danych SQLite
- 25. Serwer SQL Kopiowanie tabel z jednej bazy danych na inną
- 26. Jak oddzielić logikę programowania od danych w MS SQL Server 2005?
- 27. Jak usunąć wszystkie tabele w bazie danych MySQL?
- 28. Jak usunąć wszystkie ograniczenia klucza obcego z tabeli w Sql Server 2000?
- 29. Zmiana sortowania SQL Server 2012 bazy danych
- 30. Kopiowanie tabel z jednej bazy danych do drugiej w SQL Server
Jeśli tabele nie są zbyt duże, prawdopodobnie wybrałbym je wszystkie w oknie "Szczegóły eksploratora obiektów w SSMS", a następnie "usuń". –
Dzięki @MartinSmith jest to dobry sposób, ale czy istnieje sposób, w jaki mogę zrobić to samo za pomocą wyciągów. – Manish