Cas*_* C. 10 t-sql sql-server user-defined-functions
我们有一个返回DateTime的标量函数.它执行几个快速表选择以获得其返回值.这个函数已经在整个数据库中使用 - 在默认约束,存储过程等等.我想改变函数的实现(删除表命中并使其更有效)但显然我不能这样做它由数据库中的其他对象引用.我是否真的需要更新或删除数据库中引用它的每个对象,更新函数然后更新或重新创建所有这些对象以恢复对函数的引用?
该函数由少数视图,触发器,一些函数以及大量默认约束和存储过程引用.
感谢您提供的任何见解.
当我尝试改变或删除函数时我得到的错误是:
不能[ALTER | DROP FUNCTION]'dbo.GetClientCurrentTime',因为它被对象'DF_tbl_PatientOrder_Note_RecordCreated'引用.
这取决于。如果引用该函数的对象具有该WITH SCHEMABINDING选项,那么您将被明确阻止干扰该函数。否则,唯一的限制是普通的 DDL 访问锁定限制,这意味着使用该函数的执行计划将在该函数上放置架构稳定性锁,这将阻止您的 ALTER FUNCTION 语句,因为它们需要架构修改锁。但当计划完成执行后,这个问题就会自行解决。
| 归档时间: |
|
| 查看次数: |
5931 次 |
| 最近记录: |