Ich möchte alle Entwicklungsdatenbanken löschen, die älter als 15 Tage sind, indem Sie die Datumsspalte in einer angegebenen Tabelle vergleichen.
Gibt es eine Möglichkeit, eine DROP-Datenbankabfrage mit einer WHERE-Klausel zu schreiben, oder muss ich eine dynamische SQL ausführen?
Unten ist meine SQL-Abfrage:
DROP DATABASE IF EXISTS
WHERE (SELECT ID FROM master.TableName
WHERE Date < DATEADD(DAY, -15, GETDATE())
AND ColumnName1 = 1
AND ColumnName2 = 0)
Antworten:
2 für die Antwort № 1sp_MSforeachdb
führt für jede Datenbank eine Anweisung aus.
exec sp_MSforeachdb "IF EXISTS (SELECT ID FROM [?].dbo.TableName WHERE Date < DATEADD(DAY, -15, GETDATE()) AND ColumnName1 = 1 AND ColumnName2 = 0) DROP DATABASE [?];"
0 für die Antwort № 2
Probieren Sie diesen Code aus:
IF EXISTS
(SELECT ID FROM master.TableName
WHERE Date < DATEADD(DAY, -15, GETDATE())
AND ColumnName1 = 1
AND ColumnName2 = 0)
Drop database ......