Cách chính xác để thực hiện việc này trong SQL Server 2005 trở lên là ngừng nghĩ về tiền tố với tư cách là "chủ sở hữu". sp_changeobjectowner
thủ tục
đã không được dùng nữa kể từ SQL Server 2005 và thay vào đó bạn nên sử dụng giản đồ DDL
, ví dụ:
ALTER SCHEMA dbo TRANSFER [current_owner].tablename;
Để kiểm tra "chủ sở hữu" hiện tại (điều này có thể trả về nhiều hàng nếu bạn có nhiều hơn một tablename
trong nhiều lược đồ):
SELECT s.name
FROM sys.schemas AS s
INNER JOIN sys.tables AS t
ON s.[schema_id] = t.[schema_id]
WHERE t.name = N'tablename';
Ngoài ra, hãy chắc chắn rằng bạn đánh vần đối tượng một cách chính xác. Trong đối chiếu phân biệt chữ hoa chữ thường, ví dụ:TABLENAME
và tablename
không phải là cùng một đối tượng và việc đánh vần nó bằng InCorrEcT CaSe cũng có thể dẫn đến lỗi này.