Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Löschen Sie alle Einschränkungen in einer Tabelle

Nun, Sie können die Ausgabe immer aus dem unteren Bereich kopieren, in den oberen Bereich einfügen und F5 drücken. Oder Sie können eine Zeichenfolge erstellen, die direkt ausgeführt wird:

DECLARE @sql NVARCHAR(MAX) = N'';

SELECT @sql += N'
ALTER TABLE ' + QUOTENAME(OBJECT_SCHEMA_NAME(parent_object_id))
    + '.' + QUOTENAME(OBJECT_NAME(parent_object_id)) + 
    ' DROP CONSTRAINT ' + QUOTENAME(name) + ';'
FROM sys.foreign_keys;

PRINT @sql;
-- EXEC sp_executesql @sql;

(Wenn Sie mit dem PRINT zufrieden sind ausgeben, auskommentieren und die EXEC auskommentieren . Beachten Sie, dass die Druckausgabe in Management Studio auf 8K gekürzt wird, aber die Variable tatsächlich den gesamten Befehl enthält.)

Ich weiß auch nicht, wie sich das wirklich darauf bezieht, ob Sie eine gespeicherte Prozedur verwenden oder nicht, oder warum Sie versuchen, dies "ohne SP" zu tun ... diese Abfrage kann als gespeicherte Prozedur oder ausgeführt werden nicht, es hängt alles davon ab, wie oft Sie es anrufen werden, wo sich die Prozedur befindet usw.