DROP SQL-Tabellen werden erstellt, wenn Datum mehr als eine Woche - MS-SQL-Server
Möchte ich eine Gespeicherte Prozedur erstellen und Job-in Ms SQL-server, löschen Sie alle Tabellen in einem schema, das mehr als eine Woche alt.
erstelle ich backups an jedem einzelnen Tag und ich möchte den Vorgang automatisieren, indem die Zeitplanung eines Jobs zum löschen von sicherungen(SQL-Tabellen), die älter sind als eine Woche.
Ihre Hilfe würde sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die
sys.objects
Schlüsselwort in SQL Server, um dies zu erreichen.Die Abfrage würde etwa so Aussehen:
Dieses obige Beispiel ist eine leichte variation auf das erste Beispiel auf der MSDN-Seite, die details der
sys.objects
Schlagwort (A. Rücksendung alle Objekte, die geändert wurden in den letzten N Tagen).Seite kann hier gefunden werden:
sys.objects (Transact-SQL)
und ist eine großartige Ressource für viele verschiedene Methoden der Abfrage von Metadaten der Datenbank-Objekte.
Natürlich, die oben einfach nur "WÄHLEN" der name der Tabelle, die gelöscht werden muss, und wird nicht tatsächlich zu löschen (oder löschen), die Tabelle aus Ihrer Datenbank.
Um dies zu erreichen, müssen Sie einen Mechanismus zur Ausgabe eines
DROP TABLE
Befehl. Leider, dieDROP TABLE
Befehl kann nicht sein, dass ein parameter geschätzt, die Tabelle Namen (d.h. Sie können nichtDROP TABLE @tablename
), aber Sie bauen ein string/varchar eines kompletten T-SQL-Anweisung und dieEXECUTE
es).Um dies zu erreichen, können Sie eine CURSOR, um eine Schleife durch die Ergebnisse der früheren
SELECT
Anweisung, den Aufbau einer neue T-SQL-Befehl in einen string/varchar fallen lassen, der name der Tabelle. Ein Beispiel HIERFÜR ist unten:Beachten Sie, dass im obigen Beispiel habe ich auskommentiert, die Zeile
EXEC (@sql)
. Dies ist die Linie, die tatsächlich führt die T-SQL-Anweisung wird in der @sql-Variablen, und da es eine destruktive Befehl, den ich einfach kommentiert es aus und verwendet einePRINT @sql
Befehl statt (die Zeile unten). Führen Sie dies so wie es ist, zu sehen, was die Tabellen, die Sie wahrscheinlich zu löschen, und wenn Sie zufrieden sind, heben Sie die Auskommentierung derEXEC (@sql)
Befehl und kommentieren Sie diePRINT @sql
Befehl!Können Sie diese Abfrage verwenden, um die Liste der Tabellen, die mehr als eine Woche alt:
So, in die SP, Sie könnten dann schreiben Sie eine SP, um eine Schleife über die Tabellen zurückgegeben von der Abfrage und löschen Sie Sie. Sie müssen berücksichtigen, dass, wenn die Tabellen foreign keys, die Reihenfolge, in der Sie Sie löschen, ist wichtig, damit diese Idee werden wahrscheinlich brauchen einige tweeking, wenn das ist Ihr Szenario.