2010-01-22 1 views
9

Wir haben ein Problem mit einer schlecht codierten SQL-Funktion (die funktioniert in Live, aber nicht in unserer Testumgebung). Diese Funktion wird verwendet, um einen Standardwert in vielen Tabellen zur Verfügung zu stellen. Wenn versucht wird, ALTER zu ändern, gibt die Funktion den Fehler "Kann nicht ALTER ### zurück, weil es durch ein Objekt referenziert wird".Ändern einer Funktion als Spaltenstandard in SQL Server

Gibt es eine Möglichkeit, diese Fehlermeldung zu umgehen? Ich kann nur daran denken, dass wir versuchen, ein Skript zu schreiben, um es aus jeder Tabelle, die es als Standard hat, zu entfernen, die Funktion zu ändern und sie danach wieder hinzuzufügen.

Dank

Antwort

12

Da auf das Objekt verwiesen wird, können Sie es nicht ändern. Dies ist, was Sie tun können:

  1. die Standardeinschränkung entfernen aus der Tabelle/Spalte
  2. die Funktion Ändern
  3. die Standardeinschränkung hinzufügen zurück
5

SQL Server wird nicht zulassen, dass Sie eine Funktion ändern, die auf die DEFAULT-Einschränkung einer Säule gebunden ist.

Ihre einzige Option ist das Entfernen der Abhängigkeit, bevor Sie die Funktion ändern. (Source)