Najlepsza odpowiedź
In SSMS :
Kliknij prawym przyciskiem myszy bazę danych
Przejdź do „Zadania”
Kliknij „Generuj skrypty”
W sekcji „Wybierz obiekty” zaznacz opcję „Skryptuj całą bazę danych i wszystkie obiekty bazy danych”
W sekcji „Ustaw opcje skryptów” kliknij przycisk „Zaawansowane”
W opcji „Script DROP and CREATE” przełącz „Script CREATE” na „Script DROP” i naciśnij OK
Następnie albo zapisz do pliku, schowka lub nowego okna zapytania.
Uruchom skrypt.
Teraz spowoduje to usunięcie wszystkiego, łącznie z bazą danych. Upewnij się, że usunąłeś kod elementów, których nie chcesz upuszczać. Alternatywnie, w sekcji „Wybierz obiekty” zamiast wybierać skrypt całej bazy danych, po prostu zaznacz elementy, które chcesz usunąć.
Przy pomocy skryptu :
SET @Cursor = CURSOR FAST\_FORWARD FOR
SELECT DISTINCT sql = "ALTER TABLE [" + tc2.TABLE\_SCHEMA + "].[" + tc2.TABLE\_NAME + "] DROP [" + rc1.CONSTRAINT\_NAME + "];"
FROM INFORMATION\_SCHEMA.REFERENTIAL\_CONSTRAINTS rc1
LEFT JOIN INFORMATION\_SCHEMA.TABLE\_CONSTRAINTS tc2 ON tc2.CONSTRAINT\_NAME =rc1.CONSTRAINT\_NAME
OPEN @Cursor FETCH NEXT FROM @Cursor INTO @Sql
WHILE (@@FETCH\_STATUS = 0)
BEGIN
Exec sp\_executesql @Sql
FETCH NEXT FROM @Cursor INTO @Sql
END
CLOSE @Cursor DEALLOCATE @Cursor
GO
EXEC sp\_MSforeachtable "DROP TABLE ?"
GO
https://stackoverflow.com/questions/8439650/how-to-drop-all-tables-in-a-sql-server-database/43128914
Odpowiedź
To jest opinia oparta na opinii kogoś, kto rozumie obecny rynek IT i technologie i używa SQL Server, a także różnych innych technologii baz danych do ponad dekada: Przyszłość SQL Server będzie zależeć od przyszłości użycia SQL jako języka zapytań. Systemy zarządzania relacyjnymi bazami danych, jakie znamy, nie zmieniły się tak naprawdę w ciągu ostatnich dwóch dekad, podczas gdy prawie każdy inny temat związany z informatyką zmienił się. Sukces SQL tkwi w jego prostocie, a przy niższych poziomach abstrakcji zawsze będziemy potrzebować takiej technologii. Jednak jest kilka potrzeb, których SQL i RDBMS „po prostu nie zapewniają” w swojej obecnej formie. Mają problemy z typami danych z metadanymi. Czy na przykład ta data oznacza czyjeś urodziny? Czy ten nvarchar (50) reprezentuje adres e-mail? Czy te dwie wartości reprezentują zakres dat, w którym jedna pozycja nie powinna być większa od drugiej? SQL Server radzi sobie z tym za pomocą wyzwalaczy, ale uzyskanie tego rodzaju wyzwalaczy wymaga DUŻO czasochłonnej pracy, że firmy często pomijają tę pracę i polegają na warstwach oprogramowania w celu rozwiązania tego problemu. Stwarza to brak organizacji i spójności w całym projekcie. Nie obsługują one potrzeb związanych z replikacją w abstrakcyjny sposób. Na przykład dwa odłączone systemy muszą utworzyć nowy rekord w tabeli, jaki nowy klucz IDENTITY należy wygenerować? Ten problem można rozwiązać za pomocą kluczy złożonych lub identyfikatorów GUID lub na kilka innych sposobów, ale konsument języka SQL musi przejmować się tymi złożonościami. Nie zajmują się dwoczasowym zarządzaniem czasem w abstrakcyjny sposób. Jeśli na przykład chcesz śledzić to, co uważaliśmy za prawdę w lipcu 2013 r., ale musimy również przechowywać poprawione dane dotyczące 2013 roku, których nauczyliśmy się dopiero w 2016 roku, stworzenie schematu radzenia sobie z tym i zachowania referencyjnej integralności jest dość skomplikowane … Istnieją już propozycje, jak ułatwić sobie z tym problemem, ale obecne nastawienie tak nie rozwiązywać tego. Nie radzą sobie dobrze z włączaniem „Modelu” Twoich danych. Schemat fizyczny nie radzi sobie dobrze z opisywaniem prostych rzeczy, takich jak „Ten Boolean wartość reprezentuje prawdę lub fałsz. ”lub„ Ta data prawdopodobnie przypadnie w ciągu najbliższych kilku miesięcy, więc użyj kontrolki kalendarza, w której ta inna data przypada lat temu, więc użyj menu rozwijanych dla mm / dd / rrrr ” . W związku z tym liczne narzędzia „Business Intelligence” lub „raportowania” zostały zbudowane na tych systemach w celu zapewnienia takich możliwości, ale większość z nich jest nadal zastrzeżona i zmienia się z roku na rok, ponieważ doskonałe rozwiązanie nie zostało jeszcze udostępnione wszystkim w sposób monopolistyczny (tak dobry, że zabija konkurencję i wyznacza własne standardy). Nie zajmują się akceptowaną nieaktualnością danych. Nie ma łatwego sposobu na wskazanie, kiedy pytasz o dane, że starsze dane na serwerze w klastrze mogą być stary jest akceptowalny, jeśli można go znaleźć szybciej. Powoduje to problemy z wydajnością i jest jednym z głównych powodów pojawiania się baz danych „NoSQL”. Chociaż wiele „technologii NoSQL” dostarcza rozwiązań dla niewielkich części tego problemu, istnieje wiele problemów, które po prostu nie zostały rozwiązane. Na przykład systemy rozproszone nie działają dobrze z izolacją opartą na transakcjach bez wprowadzania poważnych problemów z wydajnością.Są rzeczy, które moglibyśmy przekazać, zadając pytanie o nasze dane, np. Ile lat są dopuszczalne? Czy chcę być powiadamiany, jeśli te dane ulegną zmianie z jakiegokolwiek powodu? Czy to możliwe, że będę chciał zmienić dane, o które proszę w najbliższej przyszłości, czy jest to po prostu tylko do odczytu bez zamiaru zmiany w przyszłości? Jest też wiele innych problemów, ale ważna kwestia chodzi o to, że przyszłość SQL Server będzie napędzana przez ekonomię oraz dostępność i wdrażanie nowych pomysłów … Jestem pewien, że mamy co najmniej 5-8 lat, w których SQL pozostaje najpopularniejszym sposobem zadawania pytań Twoje dane i poprosić o ich zmianę – ale ma wady, a ten obszar informatyki zasługuje na „nową wielką rzecz”. Wzrost szybkości dysku, rozmiar dysku jako koszt, rozmiar pamięci RAM za cenę i prawdopodobnie przede wszystkim pomysł wykorzystania „przetwarzania w chmurze” poprzez skalowanie w poziomie zamiast w pionie to nowe zmienne w świecie danych, z którymi architektura oprogramowania wciąż boryka się dogonić. Przyszłość SQL Server to: stopniowa, ale trwała zmiana na bardziej efektywny sposób pracy z naszymi danymi. Prawdopodobnie nastąpi zmiana nazwy i odwrócenie się od SQL jako języka zapytań w kierunku bardziej zaawansowanego języka, który lepiej radzi sobie z rozwiązywaniem problemów, z którymi boryka się współczesny architekt oprogramowania.