Re-ausführbare SQL Server-Skripts

Was sind die besten Methoden, sicherzustellen, dass Ihre SQL-beliebig oft ausgeführt werden kann, ohne Fehler zu erhalten auf den nachfolgenden Auflagen?

z.B.

  • überprüfung, dass die Tische nicht bereits vorhanden sind, bevor Sie zu erstellen
  • überprüfen Sie, dass die Spalten nicht bereits vorhanden sind vor der Erstellung oder Umbenennung
  • Transaktionen mit rollback on error
  • Wenn Sie drop-Tabellen, die vorhanden sind, bevor Sie erstellen Sie Sie neu, lassen Ihre Abhängigkeiten zuerst zu, und vergessen Sie nicht, erstellen Sie Sie nach
  • Mit CREATE ODER ALTER PROCEDURE-Anweisung anstelle von CREATE PROCEDURE oder ALTER PROCEDURE-wenn Ihr Geschmack von SQL unterstützt es
  • Pflegen eine interne Versionierung Schema, also die gleiche SQL einfach nicht zweimal den ersten Platz. Auf diese Weise wissen Sie immer, wo Sie gerade sind, indem man die version-Nummer.
  • Exportieren Sie die bestehenden Daten in INSERT-Anweisungen und komplett neu erstellen die gesamte DB von Grund auf neu.
  • Tabellen löschen, bevor Sie zu erstellen (nicht die sicherste Sache überhaupt, aber arbeiten in eine Prise, wenn Sie wissen was Sie tun)

Bearbeiten:
Ich war auf der Suche nach so etwas wie dieses:

IF EXISTS ( SELECT  *
            FROM    sys.objects
            WHERE   object_id = OBJECT_ID(N'[dbo].[foo]')
                    AND OBJECTPROPERTY(object_id, N'IsUserTable') = 1 ) 
DROP TABLE foo

Tun, andere verwenden Sie Aussagen wie diese oder etwas besser?

Bearbeiten:
Ich mag Jhonny ' s Vorschlag:

IF OBJECT_ID('table_name') IS NOT NULL DROP TABLE table_name

Tue ich dies für das hinzufügen von Spalten:

IF NOT EXISTS ( SELECT  *
                FROM    SYSCOLUMNS sc
                WHERE   EXISTS ( SELECT id
                                 FROM   [dbo].[sysobjects]
                                 WHERE  NAME LIKE 'TableName'
                                        AND sc.id = id )
                        AND sc.name = 'ColumnName' ) 
    ALTER TABLE [dbo].[TableName] ADD [ColumnName] 
Würde ich entfernen Sie Tabellen löschen, bevor Sie zu erstellen. Sie würde nicht wollen, um die drop-Tabellen mit Daten!
Vereinbart, es ist wahrscheinlich nicht das sicherste, was zu tun ist. Ich habe nur versucht, den ball ins Rollen auf die Arten von Antworten, die ich suchte.

InformationsquelleAutor |

Schreibe einen Kommentar