如何强制重命名?
重命名表“dbo. x”失败。(Microsoft.SqlServer.Smo)
如需说明,请按一下:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.0.2531.0+((Katmai_PCU_Main).090329-1045+)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Rename+Table&LinkId=20476
执行Transact-SQL语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)
无法重命名对象“[dbo].[x]”,因为该对象参与了强制依赖项。(Microsoft SQL Server,错误:小行星15336
如需说明,请按一下:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4035&EvtSrc=MSSQLServer&EvtID=15336&LinkId=20476
6条答案
按热度按时间mqkwyuun1#
找到“强制依赖关系”,然后删除或禁用它们。
“强制依赖关系”意味着模式绑定,因此您必须特别注意这一点。
下面是一个查询,用于查找对对象的架构绑定引用:
正如我在注解中所指出的,* 没有**方法 * 可以强制覆盖架构绑定。当您使用架构绑定时,您明确地说“不要 * 让我或任何其他人覆盖它。”解决架构绑定的唯一方法是撤消它,这是有意的。
iswrvxsc2#
我遇到了同样的问题,我的问题是我有一个计算字段使用了我试图重命名的列。
通过从选定的答案运行查询,我能够判断出具有强制依赖关系,但我无法确切地看到问题所在
xmakbtuz3#
试试这个:
cwtwac6a4#
在SQL Server对象浏览器中,以鼠标器右击按一下有问题的数据表,然后选取
View Dependencies
。(视图),然后在“新建SQL查询编辑器”窗口中选择“创建视图脚本”,然后从CREATEVIEWt-sql脚本中删除WITH SCHEMABINDING
,并运行修改后的CREATEVIEWt-sql。这将取消架构依赖关系与表的链接。我能够在此时重新创建表(DROP、RENAME等)。注意事项:
数据库中的函数和其他对象可能会发生架构绑定。在引发错误的对象上使用
View Dependencies
对于解决此问题至关重要。顺便说一句:
我最初添加模式绑定是为了启用视图索引。在底层表上保留一个好的索引可以减轻在视图上没有索引时对性能的影响。
kpbpu0085#
我遇到过这样的问题。我删除了这个DB对象上的约束,重命名了DB对象,然后重新创建了这些约束。这解决了我的问题。
t5fffqht6#
我使用这个脚本来获取具有架构的依赖视图: