sql-server - 参数@objname 不明确或声明的@objtype (INDEX) 错误

标签 sql-server sql-server-2016

当我运行它时使用 SQL Server 2016:

SELECT * 
FROM sys.indexes 
WHERE name = 'idx_Parts_PartNum'

只有一个结果。不出所料。但是当我在同一个数据库上运行时:

    exec sp_rename N'idx_Parts_PartNum', N'ux_Parts_PartNum', N'INDEX'

我收到这个错误:

Either the parameter @objname is ambiguous or the claimed @objtype (INDEX) is wrong.

如果第一个查询显示此索引名称是正确的,会导致此错误的原因是什么?

我在 Google 上搜索过,但没有成功。我的索引名称不包含无效字符或保留字。

注意:这是作为唯一索引创建的,不是唯一约束。

我可以使用 SQL Server Management Studio 重命名索引而不会出错。

最佳答案

您需要给出索引的完整路径,如example中所示在文档中:

CREATE TABLE dbo.YourTable (ID int);
GO

CREATE UNIQUE INDEX IX_YourIndex ON dbo.YourTable (ID);
GO

EXEC sp_rename N'dbo.YourTable.IX_YourIndex',N'UX_YourIndex','INDEX'; --Schema, Table, Index
GO

DROP TABLE dbo.YourTable;

关于sql-server - 参数@objname 不明确或声明的@objtype (INDEX) 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65129841/

相关文章:

sql-server - 我应该如何为现有数据库表定义复合主键?

sql - 源代码控制和存储过程

sql - 如果我有 autocommit=True 用于 pyodbc 连接,我可以假设我不必在更新或插入后执行游标提交吗?

sql - 简单查询的选择性估计错误

SQL Server 通过左连接和分组进行更新

c# - Entity Framework 返回错误数据

c# - sql中如何比较三列

sql-server - SQL Server 2016 存储过程中的串联 OPENJSON

sql - 使用存储过程参数返回列

SQL Server 2016 - 动态数据屏蔽 (DDM)