Các cách chính xác để làm điều này trong SQL Server 2005 trở lên là ngừng suy nghĩ về tiền tố là "chủ sở hữu". Các sp_changeobjectowner
procedure đã bị phản đối từ SQL Server 2005, và bạn thay vì nên sử dụng schema DDL, ví dụ:
ALTER SCHEMA dbo TRANSFER [current_owner].tablename;
Để kiểm tra "chủ sở hữu" hiện hành (điều này có thể trở nhiều hàng nếu bạn có nhiều hơn một tablename
trong nhiều schemas):
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';
Đồng thời đảm bảo rằng bạn đánh vần đúng đối tượng. Trong trường hợp đố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à đánh vần nó bằng InCorrEcT CaSe cũng có thể dẫn đến lỗi này.
Nguồn
2012-09-06 15:09:55
Không, đây không phải là "tuyên bố chính xác" và thế nào là dòng đầu tiên của bạn bất kỳ khác với những gì OP cố gắng? EXEC là không cần thiết nếu đó là câu lệnh duy nhất trong lô và thông báo lỗi chắc chắn không cho thấy rằng EXEC bị thiếu là vấn đề. Vui lòng đọc phần này để xem tại sao bạn không nên giới thiệu sp_changeobjectowner: http://msdn.microsoft.com/en-us/library/ms177519 (v = sql.105) .aspx –
Tôi không biết bạn đọc tất cả những gì trong MSDN, tôi đã làm, và đây là: "đối tượng có thể được đủ điều kiện với chủ sở hữu của đối tượng hiện có, ở dạng existing_owner.object nếu shema và chủ sở hữu của nó có cùng tên. " Và nó đang hoạt động - được kiểm tra, NẾU bạn đã đặt tên cho phù hợp đúng. –
Bạn đã đọc phần ghi chú lớn màu vàng ở đầu màn hình chưa? Hoàn toàn không có lý do gì để sử dụng thủ tục được lưu trữ không được chấp nhận này trong SQL Server 2008. ZERO. –