Otrzymuję następujący błąd
Cannot execute as the database principal because the principal "dbo"
does not exist, this type of principal cannot be impersonated,
or you do not have permission.
Czytałem o ALTER AUTHORIZATION
, ale nie mam pojęcia, w jakiej bazie danych to się dzieje. Ten błąd jest bardzo często wypluwany i dziennik błędów rośnie o około 1 GB dziennie.
Odpowiedzi:
Rozwiązałem ten problem, ustawiając właściciela bazy danych. Moja baza danych nie miała żadnego właściciela przed tym problemem. Wykonaj to polecenie w bazie danych, aby ustawić właściciela konta sysadmin:
źródło
dbo
nadal był właściciel_bazy_danych i NIE MOGĘ NIC ZROBIĆ DBO. To staje się naprawdę frustrujące. Nic nie mogę zmienić.Czy graficznie.
Kliknij bazę danych prawym przyciskiem myszy -> właściwości -> pliki -> wybierz właściciela bazy danych -> wybierz [sa] - ok
źródło
KB913423 - Nie można uruchomić instrukcji ani modułu zawierającego klauzulę EXECUTE AS po przywróceniu bazy danych w SQL Server 2005
źródło
Może się to również zdarzyć, gdy baza danych jest odtwarzaniem z innego serwera SQL lub instancji. W takim przypadku podmiot zabezpieczeń „dbo” w bazie danych nie jest tym samym co podmiot zabezpieczeń na serwerze SQL, na którym przywrócono db. Nie pytaj mnie, skąd to wiem ...
źródło
inny sposób na zrobienie tego
źródło
Wybrana odpowiedź i niektóre inne są dobre. Chcę tylko wyjaśnić bardziej SQL. Dochodzi do tego samego rozwiązania, że nie ma (poprawnego) właściciela bazy danych.
Konto właściciela bazy danych, o
dbo
którym wspomniano błędnie, jest zawsze tworzone z bazą danych. Wydaje się więc dziwne, że nie istnieje, ale możesz to sprawdzić za pomocą dwóch wyborów (lub jednego, ale bądźmy prostymi).który pokazuje SID
dbo
użytkownika w bazie danych DB_NAME iaby wyświetlić wszystkie dane logowania (i ich identyfikatory SID) dla tej instancji serwera SQL. Zauważ, że nie zapisał żadnego prefiksu db_name, ponieważ każda baza danych ma takie same informacje w tym widoku.
W przypadku powyższego błędu nie będzie loginu z identyfikatorem SID przypisanym do użytkownika dbo bazy danych.
Jak wyjaśniono powyżej, zwykle dzieje się tak podczas przywracania bazy danych z innego komputera (gdzie baza danych i użytkownik dbo zostały utworzone przez inny login). Możesz to naprawić, zmieniając własność na istniejący login.
źródło
Jeśli powyższe nie działa, spróbuj wykonać następujące czynności. Rozwiązało to dla mnie problem, nawet jeśli właściciel bazy danych był dobrze zdefiniowany.
Replikacja programu SQL Server 2008 kończy się niepowodzeniem: proces nie może wykonać polecenia „sp_replcmds”
źródło
W obszarze Bezpieczeństwo dodaj podmiot główny jako „użytkownik SQL bez logowania”, ustaw go jako schemat o tej samej nazwie co zleceniodawca, a następnie w członkostwie ustaw go jako właściciel_db.
źródło
Wystąpił także ten błąd, gdy przypadkowo podano ciąg połączenia z bazą danych do tylko do odczytu kopii lustrzanej - nie podstawowej bazy danych w konfiguracji HA.
źródło
Jak napisano w wiadomości, należy ustawić uprawnienia użytkownika jako właściciela. Możesz więc użyć następujących elementów:
Mam nadzieję, że pomocna! Zostaw komentarz, jeśli Ci odpowiada.
źródło