Hur man släpper alla tabeller från en SQL Server-databas


Bästa svaret

In SSMS :

Högerklicka på databasen

Gå till ”Tasks”

Klicka på ”Generate Scripts”

I avsnittet ”Välj objekt” väljer du ”Skript hela databasen och alla databasobjekt”

I avsnittet ”Ställ in skriptalternativ” klickar du på knappen ”Avancerat”

På ”Script DROP och CREATE” växlar du ”Script CREATE” till ”Script DROP” och trycker på OK

Spara sedan antingen i fil, urklipp eller nytt fönster.

Kör skript.

Nu släpper allt, inklusive databasen. Se till att ta bort koden för de objekt du inte vill tappa. Alternativt, i avsnittet ”Välj objekt” istället för att välja att skript hela databasen väljer du bara de objekt du vill ta bort.

Med hjälp av skript :

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

Svar

Detta är ett opinionsbaserat svar från någon som förstår den aktuella IT-marknaden och teknikerna och har använt SQL Server samt olika andra databastekniker för över en årtionde: Framtiden för SQL Server beror på framtiden för användning av SQL som frågespråk. Relationella databashanteringssystem som vi känner till har inte förändrats mycket de senaste två decennierna medan nästan alla andra ämnen som rör datorer har gjort det. SQL: s framgång är i sin enkelhet och vid lägre abstraktionsnivåer kommer vi alltid att behöva en sådan teknik. Det finns dock en handfull behov som SQL och RDBMS ”helt enkelt inte ger i sin nuvarande form. De kämpar när det gäller datatyper med metadata. Till exempel representerar detta datum någons födelsedag? Representerar denna nvarchar (50) en e-postadress? Representerar dessa två värden ett datumintervall där ett objekt inte ska vara större än det andra? SQL Server hanterar detta med utlösare men det är MYCKET tidskrävande arbete med att få den här typen av utlösare att företag ofta hoppar över arbetet och förlitar sig på programvarulager för att lösa problemet istället. Detta skapar brist på organisation och konsekvens genom hela projektet. De hanterar inte replikeringsbaserade behov på ett abstrakt sätt. Till exempel för att två frånkopplade system behöver skapa en ny post i en tabell, vilken ny IDENTITET-nyckel ska genereras? Detta problem kan lösas med hjälp av kompositnycklar eller GUID eller en handfull andra sätt, men SQL-konsumenten behöver störas av dessa komplexiteter. De hanterar inte bi-tidsmässig tidshantering på ett abstrakt sätt. Till exempel om du behöver hålla reda på vad vi trodde var sanningen redan i juli 2013 men måste också lagra korrigerade data om 2013 som vi inte lärde oss förrän 2016, att skapa ett schema för att hantera det och upprätthålla referensintegritet är ganska komplicerat … Det finns redan förslag på hur man gör det här problemet lättare att hantera men nuvarande tankesätt gör inte lösa det. De gör inte ett bra jobb med att införliva en ”modell” av dina data. Det fysiska schemat gör inte ett bra jobb med att beskriva enkla saker som ”Den här booleska värdet representerar ett sant eller falskt. ”, eller” Det här datumet kommer sannolikt att vara de närmaste månaderna, så använd en kalenderkontroll där det andra datumet kommer att vara år tidigare så använd rullgardinsmenyerna för mm / dd / åååå ” . Som ett sådant har många ”Business Intelligence” eller ”rapporteringsverktyg” byggts ovanpå dessa system för att ge sådan kapacitet, men de flesta av dessa är fortfarande proprietära och förändras år efter år eftersom en bra lösning ännu inte har gjorts tillgänglig för alla på ett monopolistiskt sätt (så bra att det dödar konkurrensen och sätter sina egna standarder). De hanterar inte accepterad stalhet av data. Det finns inget enkelt sätt att ange när du ber om data att äldre data i en server i ett kluster kan vara gammalt är acceptabelt om det kan hittas snabbare. Detta orsakar prestationsproblem och är en av de främsta anledningarna till att ”NoSQL” -databaser har dykt upp. Medan många ”NoSQL-teknologier” ger lösningar för små delar av detta problem finns det många problem som helt enkelt inte har lösts. Till exempel fungerar distribuerade system inte bra med transaktionsbaserad isolering utan att införa stora prestandaproblem.Det finns saker vi kan kommunicera när vi ställer en fråga om våra uppgifter, till exempel hur gammal av data är acceptabelt? Vill jag få ett meddelande om dessa uppgifter ändras av någon anledning? Är det möjligt att jag kommer att vilja ändra de data som jag efterfrågar inom en snar framtid eller är det helt enkelt en läsning bara utan framtida avsikter för förändring? Det finns också många andra frågor, men den viktiga punkten här är att framtiden för SQL Server kommer att drivas av ekonomin och tillgängligheten och implementeringen av nya idéer … Jag är säker på att vi har minst 5-8 år där SQL fortfarande är det mest populära sättet att ställa en fråga om dina data och att be om att dina data ska ändras – men det har brister och detta databehandlingsområde beror på en ”Ny stor sak.” Framsteg i skivhastighet, skivstorlek för kostnad, ramstorlek för kostnad och förmodligen framför allt idén att använda ”cloud computing” genom att skala horisontellt istället för vertikalt är alla nya variabler i datavärlden som programvaruarkitektur fortfarande kämpar för komma ikapp med. Framtiden för SQL Server är: gradvis men hållbar förändring till ett mer effektivt sätt att arbeta med våra data. Det kommer troligtvis att se namnbyte och en pivot bort från SQL som frågespråk och mot ett kraftfullare språk som gör det bättre för att lösa de problem som den moderna programvaruarkitekten presenteras för.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *