我有一个带有用户定义函数列文件夹的表 dnn_Files:
CREATE TABLE [dnn_Files](
...
[Folder] AS ([GetFileFolderFunc]([FolderID])),
...
...
该数据库是通过 dotnetnuke 安装创建并使用的。所以,它不是空的。
我真正的目标是将“dnn_”对象限定符添加到数据库中(原始数据库有空限定符)。
为了存档,我重命名了所有 dnn 表,删除了存储过程,用户定义的函数(GetFileFolderFunc 除外 - 它不能被删除,因为它被 dnn_Files 引用),查看并使用正确的对象限定符重新创建它。
之后,我得到了如上所述的表格。该表具有正确的限定符,而 GetFileFolderFunc 没有。由于表已重命名,GetFileFolderFunc 现在指的是不存在的表。具有限定符(dnn_GetFileFolderFunc)的正确双胞胎在数据库中。
所以,我希望 dnn_Files 使用新的 dnn_GetFileFolderFunc 函数。
当我尝试更改文件夹列(通过 Sql Management Studio 设计器更改计算列规范)时,它失败并显示错误“不允许保存更改。您所做的更改需要 dnn_Files 是 dropper 并重新创建...”。由于 dnn_Files 有很多关系,它不能被删除。似乎合乎逻辑。
然后我尝试更改 GetFileFolderFunc 的主体以使用具有新对象限定符的表,但也没有运气。错误是“无法更改 'dbo.GetFileFolderFunc',因为它被对象 'dnn_Files' 引用”。
第一个或第二个限制是否有任何解决方法?
Sql 服务器版本:11.0.2100.60