Errore durante la modifica della proprietà del database dalla pagina File nella finestra di dialogo delle proprietà del database


10

Ho ripristinato un database e creato un nuovo utente (stesso utente da cui ho effettuato l'accesso) come db_owner. Ora, quando volevo vedere il diagramma del database, ho ricevuto un errore

Gli oggetti di supporto del diagramma del database non possono essere installati perché questo database non ha un proprietario valido. Per continuare, utilizzare prima la pagina dei file della finestra di dialogo Proprietà database o l'istruzione Alter Authorization per impostare il proprietario del database su un accesso valido, quindi aggiungere gli oggetti di supporto del database

Ora, quando ho provato a cambiare la proprietà dalla pagina File delle proprietà del database, ricevo l'errore come

Impostazione del proprietario non riuscita per il database "ABC". (Microsoft.SqlServer.SMO) Informazioni aggiuntive: si è verificata un'eccezione in SMO Il nuovo proprietario del database proposto James-PC \ James è mappato come utente James in questo database. Nome parametro: James-PC \ James "

Aiutami a risolvere il problema in modo da poter visualizzare i diagrammi del database su questo computer dopo aver ripristinato il backup del database da un altro sistema.

Risposte:


8

Il proprietario del database è il login in sys.server_principals che possiede il database, come definito dal suo SID. Dopo un ripristino può facilmente accadere che il login utilizzato per ripristinare il database non sia il login che era il precedente proprietario del database. (Ciò è ancora più probabile che accada quando il database viene spostato tra i server.)

Quindi, potrebbero esserci tre impostazioni con cui hai problemi

  1. Il database owner_sid non è uguale al db_owner del database sid. È possibile confrontare questo per il database ABC per:

    SELEZIONA owner_sid FROM sys.d Database dove name = 'ABC';

    SELEZIONA sid da ABC.sys.database_principals WHERE name = 'dbo';

  2. Successivamente viene visualizzato un messaggio che indica che il database proposto owner_sid esiste anche come utente in sys.database_principals. Lo sappiamo dal messaggio di errore sulla mappatura del proprietario proposto.

Quindi i tuoi passaggi sono:

 USE ABC;
 DROP USER James;
 ALTER AUTHORIZATION ON DATABASE::ABC TO [James-PC\James];

Hai lasciato cadere l'utente che non è necessario, dal momento che lo stai trasformando in dbo. Una volta che è fuori mano, il tuo login può essere reso il proprietario del database.

EDIT: è inoltre possibile utilizzare SSMS per eliminare l'utente James dal database ABC. Quindi è possibile tornare alla scheda File delle proprietà del database per impostare il proprietario del database. (Mi dispiace, tendo a pensare agli script.)


1
Questo è interessante, in Management Studio il login che è stato fatto un dbo non appare sotto YOUR_DB / Sicurezza / Utenti,
joedotnot

-3
  1. database del tasto destro
  2. proprietà
  3. Seleziona i file
  4. correggere / impostare il proprietario (su yourpc \ you oppure sfogliare e selezionare facendo clic su "...")

questo ha funzionato per me in SQL Server Management Studio v17.1


2
Penso che esattamente questo non abbia funzionato per loro.
dezso,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.