Poprawny sposób to zrobić w SQL Serwer 2005 i nowszy to przestać myśleć o prefiksie jako "właścicielu". sp_changeobjectowner
procedure została zaniechana od SQL Server 2005, i należy zamiast używać schema DDL, np:
ALTER SCHEMA dbo TRANSFER [current_owner].tablename;
Aby sprawdzić aktualną „właściciel” (to może wrócić wiele wierszy, jeśli masz więcej niż jedną tablename
w wielu schematów):
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';
Upewnij się również, że poprawnie przeliterowałeś obiekt. W przypadku sortowania z uwzględnieniem wielkości liter, na przykład, TABLENAME
i tablename
nie są tym samym obiektem, a pisanie go za pomocą INCorrEcT CaSe może również prowadzić do tego błędu.
Nie, to nie jest „poprawne stwierdzenie” i jak jest to Twoja pierwsza linia inaczej niż PO próbował? EXEC nie jest konieczny, jeśli jest to jedyne oświadczenie w serii, a komunikat o błędzie z pewnością nie sugeruje, że brakowało EXEC. Przeczytaj ten artykuł, aby zobaczyć, dlaczego nie powinieneś polecać sp_changeobjectowner: http://msdn.microsoft.com/en-us/library/ms177519 (v = sql.105) .aspx –
Nie wiem, czy czytasz wszystko, co jest w MSDN, zrobiłem, i tutaj jest: "obiekt może być kwalifikowany z właścicielem istniejący obiekt, w postaci istniejący właściciel.object, jeśli shema i jego właściciel mają tę samą nazwę. " I to jest sprawdzone pod względem pracy, JEŚLI wymieniłeś poprawną shemę. –
Czy przeczytałeś część w dużej żółtej notatce u góry ekranu? Nie ma absolutnie żadnego powodu, aby używać tej nieaktualnej procedury przechowywanej w SQL Server 2008. ZERO. –