sql 2005强制表重命名具有依赖项

Sco*_*mer 23 sql t-sql sql-server

你怎么强迫重命名???

表'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 =重命名表+&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&EvidID = 15336&LinkId = 20476

RBa*_*ung 46

找到"强制执行的依赖项",然后删除或禁用它们.

通过"强制依赖",它意味着Schema绑定,因此您必须专门寻找它.

这是一个查询对象的模式绑定引用的查询:

select o.name as ObjName, r.name as ReferencedObj
from sys.sql_dependencies d
join sys.objects o on o.object_id=d.object_id
join sys.objects r on r.object_id=d.referenced_major_id
where d.class=1
AND r.name = @YourObjectName
Run Code Online (Sandbox Code Playgroud)

正如我在评论中指出的那样,没有 办法强制覆盖Schema Binding.当您使用架构绑定,你明确地说:"难道没有让我或其他人覆盖." Schema Binding的唯一方法是撤消它,这是故意的.

  • 请注意我的答案.这是正确的,也是唯一的方法.当您使用模式绑定时,您明确地没有任何"强制"它的方式.您必须先撤消架构绑定 (3认同)

小智 5

我遇到了同样的问题,我的问题是我有一个使用我试图重命名的列的计算字段。

通过从选定的答案运行查询,我可以看出它具有强制依赖性,但我无法准确看出问题是什么