Tenemos una función escalar que devuelve un DateTime. Realiza un par de selecciones de tablas rápidas para obtener su valor de retorno. Esta función ya está en uso en toda la base de datos, en restricciones predeterminadas, procesos almacenados, etc. Me gustaría cambiar la implementación de la función (para eliminar los hits de la tabla y hacerla más eficiente) pero aparentemente no puedo hacer eso mientras es referenciado por otros objetos en la base de datos. ¿Debo actualizar o eliminar todos los objetos en la base de datos que lo hace referencia, actualizar la función y luego actualizar o volver a crear todos esos objetos para restaurar la referencia a la función?
La función está siendo referenciada por un puñado de vistas, activadores, un par de funciones y una gran cantidad de restricciones predeterminadas y procesos almacenados.SqlServer2008 - ¿Puedo modificar una función escalar mientras se hace referencia en muchos lugares?
Gracias por cualquier idea que pueda dar.
El error que estoy consiguiendo cuando intento ya sea Alter o la caída de la función es:
No se puede [ALTER | DROP FUNCTION] 'dbo.GetClientCurrentTime' porque está siendo referenciado por objeto 'DF_tbl_PatientOrder_Note_RecordCreated' .
Si lo está utilizando en columnas derivadas, tendrá que soltar las columnas temporalmente. El uso en procs almacenados no debería necesitar ser revisado. No estoy seguro sobre el uso de restricciones predeterminadas. –
* aparentemente no puedo hacer eso mientras otros objetos en la base de datos lo hacen referencia *: ¿qué error está recibiendo y cuándo? – egrunin