2009-04-20 26 views
42

Kiedy przypadkowo kliknąć na zakładkę Schematy bazy danych, mam jeden z następujących błędów:Jak zmienić właściciela bazy danych SQL Server?

obiekty wsparcia schemat bazy nie może zostać zainstalowany, ponieważ ten bazy danych nie ma ważnego właściciela. Aby kontynuować, najpierw użyć strona Pliki w oknie dialogowym Database Properties lub rachunku POZWOLENIA ALTER ustawić właściciela bazy danych do ważnego logowania, a następnie dodać obiekty wsparcie dla baz danych schemat .

--- lub ---

Baza danych nie posiada jednego lub więcej obiektów pomocniczych wymaganych do korzystania bazy diagramów. Czy chcesz je utworzyć?

Jaka jest składnia zmiany właściciela tej bazy danych na "sa"?

+0

Nie rozumiem, dlaczego uważasz, że nie ma to nic wspólnego z właścicielem? Chce tylko wiedzieć, czy powinien tworzyć obiekty do tworzenia diagramów. –

+0

Jeśli zmienię właściciela, nie pojawi się monit o utworzenie obiektów. Nie jestem pewien, czy są one automatycznie tworzone później. –

Odpowiedz

68

zmienić właściciela obiektu wypróbować następującą

EXEC sp_changedbowner 'sa' 

że jednak nie jest Twój problem, aby zobaczyć wykresy Da Vinci Narzędzia Przedmioty muszą być utworzone (widać tabele i procs, które zaczynają się dt_) po tym

+4

Zgodnie z BOL: Ta funkcja zostanie usunięta w przyszłej wersji programu Microsoft SQL Server. Unikaj korzystania z tej funkcji w nowych pracach programistycznych i planuj modyfikowanie aplikacji, które obecnie używają tej funkcji. Użyj zamiast tego ALTER AUTHORIZATION. https://msdn.microsoft.com/en-us/library/ms178630(v=sql.110).aspx –

3

To jest monit o utworzenie grupy obiektów, takich jak sp_help_diagram (?), Które nie istnieją.

To nie powinno mieć nic wspólnego z właścicielem bazy danych.

+1

Czy możesz wyjaśnić, dlaczego nie jestem już monitowany o to po zmianie właściciela? Czy obiekty są tworzone automatycznie, czy program SQL Server przestaje mnie pytać, ponieważ moje konto nie jest już właścicielem? –

+0

W tym przypadku DB był własnością logowania, które zostało usunięte. Nie wiem dlaczego, ponieważ "sa" jest właścicielem wszystkich naszych baz danych. – gbn

62

Aby zmienić właściciela bazy danych:

ALTER AUTHORIZATION ON DATABASE::YourDatabaseName TO sa 

Począwszy od SQL Server 2014 można nadal używać sp_changedbowner, a także, choć Microsoft obiecał usunąć go w "przyszłej" wersji po SQL Server 2012. Usunięto go jednak z SQL Server 2014 BOL.

+2

@ilter - nie jestem pewien, czy zrozumiałem Twój komentarz. Pytanie brzmiało: "Jaka jest składnia zmiany właściciela tej bazy danych na" sa "?". Wierzę, że odpowiedziałem na to pytanie. Jeśli uruchomisz to polecenie, właściciel bazy danych zostanie zmieniony na sa.Ponadto zalecana jest składnia używana jako przeciwieństwo używania starszej sp_changedbowner, która prawdopodobnie zostanie ostatecznie wycofana. –

0

Oto sposób, aby zmienić właściciela na wszystkich DBS (bez systemu)

EXEC sp_msforeachdb' 
USE [?] 
IF ''?'' <> ''master'' AND ''?'' <> ''model'' AND ''?'' <> ''msdb'' AND ''?'' <> ''tempdb'' 
BEGIN 
exec sp_changedbowner ''sa'' 
END 
' 
+1

Nie używaj sp_msforeachdb, chyba że lubisz brakujące bazy danych okazjonalnie, jest to udokumentowany problem. – ConstantineK

Powiązane problemy