Gli oggetti di supporto del diagramma del database non possono essere installati ... nessun proprietario valido


132

Ho provato a creare un diagramma di database con SQL Server 2008, ma si verifica 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 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 diagramma del database.

Quindi ho provato quanto segue:

EXEC sp_dbcmptlevel 'Ariha', '90';
GO
ALTER AUTHORIZATION ON DATABASE::Ariha TO [WIN-NDKPHUPPNFL\Administrator]
GO
USE Ariha
GO
EXECUTE AS USER = N'dbo' REVERT
GO

Viene visualizzato il messaggio seguente:

Messaggio 15404, livello 16, stato 11, riga 1 Impossibile ottenere informazioni sul gruppo / utente Windows NT "WIN-NDKPHUPPNFL \ Administrator", codice di errore 0x534.

Il problema è che il nome del PC è cambiato in "DevPC". Anche questo è cambiato nello script di aggiornamento, ma è sempre lo stesso errore 15404.

Cosa posso fare per correggere questo fastidioso errore?


4
Questo problema si presenta anche quando si ripristina un backup da un altro computer.
Tim Abell,

Quando si ripristina un db da un'altra macchina, è possibile correggere questo errore eseguendo due comandi: 1) alter authorization on database::[db_name] to [sa]e quindi 2) eseguire nuovamente lo stesso comando e sostituirlo [sa]con l'utente proprietario del database immediatamente dopo il ripristino.
James L.

Risposte:


182

È necessario considerare l'account di autenticazione SQL per la proprietà del database; quindi non devi preoccuparti degli account che vanno e vengono, che i database o le istanze si spostano su server diversi e che il tuo prossimo cambio di nome PC. Ho diversi sistemi in cui utilizziamo:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [sa];

Oppure, se si desidera modificare il proprietario in tale account amministratore locale, dovrebbe essere:

ALTER AUTHORIZATION ON DATABASE::Ariha TO [DevPC\Administrator];

Perché rinominare la macchina in DevPCha eliminato l'account locale che era chiamatoWIN-ND...\Administrator e questo ha anche invalidato l'attuale proprietario del database.

Se SELECT @@SERVERNAME;non è accurato (dovrebbe dire DevPC), quindi al fine di garantire che la ridenominazione del server abbia preso piede all'interno di SQL Server, potresti anche voler emettere quanto segue:

EXEC sp_dropserver @server = N'old server name';
GO
EXEC sp_addserver @server = N'DevPC', @local = N'local';
GO

mostra: "WIN-NDKPHUPPNFL" Ho usato la tua istruzione sql e funziona ... ma questa configurazione è corretta o devo fare altro?
Rookian,

Bene, dipende davvero. Se hai bisogno che il tuo database sia di proprietà di un utente di dominio / gruppo di lavoro di Windows, probabilmente c'è ancora molto lavoro da fare. Personalmente, lo trovo problematico. Magari leggi prima questo: sqlblog.com/blogs/tibor_karaszi/archive/2009/12/30/…
Aaron Bertrand,

1
Ci sono problemi con l'impostazione su sase hai l'autenticazione sql disabilitata?
Tim Abell,

@AaronBertrand Ciao, ho una domanda. Per impostazione predefinita, se creiamo un proprietario del database del database è impostato sull'utente di Windows corrente e se l'utente di Windows corrente è anche amministratore. Perché dobbiamo cambiarlo in Login di autenticazione SQL. In effetti non riesco a capire questo errore. Se lo cambiamo in un login funziona. Ma l'amministratore di Windows Login è anche amministratore di sistema. Potresti aiutarci?
UfukSURMEN,

Ho ripristinato un gruppo di database e tutti hanno visualizzato l'errore nella domanda dell'OP, anche se le proprietà di ciascun database hanno mostrato un utente valido. Ho usato il primo comando per cambiarlo in [sa]e poi l'ho cambiato di nuovo all'utente che diceva che era prima, e viola, non più errori. Non sono sicuro del motivo per cui un ripristino del database non abbia impostato correttamente il proprietario del database ...
James L.

208

In SQL Server Management Studio procedi come segue:

  1. Fare clic con il tasto destro sul database, selezionare Proprietà
  2. Vai alla pagina delle opzioni
  3. Nel menu a discesa con etichetta "Livello di compatibilità" selezionare "SQL Server 2005 (90)" 3-1. scegliere "SQL Server 2008" se si riceve un errore di comparabilità.
  4. Vai alla pagina dei file
  5. Inserisci "sa" nella casella di testo del proprietario. 5-1 o fai clic sui puntini di sospensione (...) e scegli un legittimo proprietario.
  6. Premi OK

dopo averlo fatto, sarai ora in grado di accedere ai diagrammi del database.

inserisci qui la descrizione dell'immagine


2
C'è qualche motivo per cui un database NON dovrebbe avere un proprietario? Sto entrando nel database dei prodotti di qualcun altro e non è impostato alcun proprietario. Era intenzionale? (Non c'è nessuno al cliente che lo sappia).
Jason Kleban,

Il database dovrebbe avere un proprietario. Scegliere "sa" anziché un legittimo proprietario è semplicemente una scelta facile per correggere l'errore sopra. Ma anche la scelta di un legittimo proprietario ha risolto il problema.
Lesly Revenge,

3
Qualcuno potrebbe spiegare lo scopo di modificare il livello di compatibilità in questi passaggi? Basta impostare il proprietario sotto i file su 'sa' per me è stato sufficiente (anche se non ho abilitato sql auth, stranamente).
Tim Abell,

Questo ha funzionato per me. Tuttavia, ho dovuto rimuovere il mio utente da Databasename> Sicurezza.
Gezim,

Questo ha funzionato per me, su SQL Server 2017, utilizzando Management Studio 17.9, senza la necessità del passaggio 1
Giorgio Barchiesi,

7
USE [ECMIS]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

Funziona.


5

Immettere "SA" anziché "sa" nella casella di testo del proprietario. Questo ha funzionato per me.


5

Ho avuto lo stesso problema.
Volevo vedere il mio diagramma, che ho creato lo stesso giorno al lavoro, a casa. Ma non potevo a causa di questo messaggio.
Ho scoperto che il proprietario del database era l'utente del mio computer, come previsto. ma poiché il computer è nel dominio dell'azienda e non sono connesso alla rete dell'azienda, il database non è stato in grado di risolvere il proprietario.

Quindi quello che ho fatto è stato cambiare il proprietario in un utente locale e ha funzionato !!
Spero che questo aiuti qualcuno.

È possibile modificare l'utente facendo clic con il pulsante destro del mouse su database, proprietà, file, proprietario


3

Questo mi ha risolto. Imposta il proprietario trovato nella sezione "file" della finestra delle proprietà del database ed è gestito da script di Management Studio.

USE [your_db_name]
GO
EXEC dbo.sp_changedbowner @loginame = N'sa', @map = false
GO

Secondo la documentazione di sp_changedbowner, ora è obsoleto.

Basato sulla risposta di Israele. La risposta di Aaron è la variazione non deprecata di questo.


3

Seleziona il tuo database - Clic destro - Seleziona Proprietà

Seleziona FILE sul lato sinistro della pagina

Nella casella PROPRIETARIO, selezionare il pulsante che contiene tre punti (...)

Ora seleziona user 'sa e fai clic su OK


0

L'ho appena provato. Avevo letto i suggerimenti su questa pagina, così come i suggerimenti dell'autorità SQL (che è la stessa cosa) e nessuno dei precedenti ha funzionato.

Alla fine, ho rimosso l'account e ricreato (con lo stesso nome utente / password). Proprio così, tutti i problemi sono scomparsi.

Purtroppo, questo significa che non so cosa è andato storto, quindi non posso condividere nient'altro.


0

1.Fare clic con il pulsante destro del mouse sul database, quindi selezionare le proprietà. 3.Seleziona l'opzione nei livelli di compatibilità, scegli sql 2008 [100] se stai lavorando con Microsoft sql 2008.

4. Quindi selezionare il file e scrivere (sa) nella casella di testo del proprietario

Il 100% funziona per me.


0

Un modo più semplice per risolvere questi problemi sarebbe fare clic con il pulsante destro del mouse sul nome del database, scegliere "Nuova query", digitare "exec sp_changedbowner 'sa'" ed eseguire la query. Allora sarai a posto.


0

è necessario immettere come amministratore fare clic con il pulsante destro del mouse su microsofft sql server management studio ed eseguire come amministratore


0

Devi solo eseguirlo nell'editor di query ALTER AUTHORIZATION ON DATABASE :: YourDatabase TO [dominio \ account];


-3

Il vero problema è che il proprietario predefinito (dbo) non ha alcun accesso mappato su di esso. Mentre provavo a mappare il login sa al proprietario del database, ho ricevuto un altro errore che diceva "Utente, gruppo o ruolo" dbo " esiste già ... ". Tuttavia, se provi questo codice funzionerà effettivamente:

EXEC sp_dbcmptlevel 'yourDB', '90';

partire

ALTER AUTORIZZAZIONE SU DATABASE :: yourDB TO "yourLogin"

partire

usa [tuoDB]

partire

ESEGUI COME UTENTE = REVISIONE N'dbo

partire


-3

fare clic con il tasto destro sul database, quindi selezionare le proprietà. seleziona l'opzione nei livelli di compatibilità scegli sql 2005 [90] invece del 2008 se stai lavorando con Microsoft sql 2008. quindi seleziona il file e scrivi (sa) nella casella di testo del proprietario. funzionerà probabilmente

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.