Domanda

Ho appena importato un database di produzione di SQL Server 2008R2 esistente in un progetto di database VS 2013.

Ora ottengo un numero di errori lungo le linee di

Error       SQL71501: User: [mydbuser] has an unresolved reference to Login [mydbuser].
.

Non ho davvero bisogno del mio progetto VS DB per gestire gli utenti, ma sono preoccupato che cercherebbe di rimuoverli su implementazione se non fossero lì.

I file stessi sono generati come

CREATE USER [mydbuser] FOR LOGIN [mydbuser];
.

o

CREATE USER [mydomainuser] FOR LOGIN [MYDOMAIN\mydomainuser];
.

Il marker di errore mostra che è specificamente per il login . Poiché è un oggetto a livello di sistema, posso capirlo di essere al di fuori dell'ambito del progetto DB.

è preferito che li cambino tutti a

CREATE USER [mydbuser] WITHOUT LOGIN;
.

o aggiungere la clausola CREATE LOGIN all'inizio di ciascun file?

Rimozione del riferimento di accesso sembra essere più semplice e rimuovere gli utenti del tutto sarebbe il più semplice.

Voglio assicurarmi che sto usando lo strumento come è stato inteso. Ci saranno problemi nel ri-pubblicare uno di quelli di ritorno alla produzione? Qual è la procedura corretta per aggiungere un utente / login tramite un progetto?

È stato utile?

Soluzione

Il modo più semplice è quello di non gestire gli utenti tramite SSDT (la maggior parte delle persone non lo fa).Quindi puoi semplicemente spuntarli e non distribuire login o utenti.

Ci sono tre modi:

    .
  • Le nuove opzioni per ignorare utenti / logins
  • Scrivi un contributore di implementazione per tirarli fuori
  • Usa il mio contributore di implementazione http://agilesqlclub.codeplex.com

ED

Altri suggerimenti

Ho avuto lo stesso problema e ho trovato questo link

L'utente ha un riferimento irrisolto per il login

.

Se crei login specifici dell'applicazione (che dovresti) allora tu stanno per incontrare questo errore quando cerchi di costruire il tuo soluzione. Per correggere questo errore, selezionare Includi Tipi di oggetti "non applicazioni-scoped" nelle opzioni (icona del margine a in alto) quando si esegue uno schema Confronta (fai clic con il pulsante destro del mouse sul progetto del database su Trova schema Confronta). Puoi quindi importare i login nel tuo Progetto regolare e i riferimenti sono ordinati. Nota: se fai clic su La scheda Tipi di oggetti e chiude la finestra di dialogo (che ha fatto per me), Utilizzare invece il tasto Tab fino a quando non è evidenziato l'applicazione, quindi Premere la freccia verso il basso per evidenziare Non-application-swoped e premere il barra spaziatrice. Ora dovresti essere in grado di fare clic su OK e vedere i login.

Apparentemente, questo problema è ancora avvenuto su progetti di database VS2017 pure.

Sono riuscito a risolverlo creando prima il login e quindi creare l'utente.

    -- Windows Account
    CREATE LOGIN [Domain\Username]
    FROM WINDOWS WITH DEFAULT_LANGUAGE = [us_english];

    GO

    CREATE USER [Domain\Username] FOR LOGIN [Domain\Username];
    GO

    -- Sql Acccount

    CREATE LOGIN [sql_account] WITH PASSWORD = 'Ch@ngeth1spA$swurD'
    GO

    CREATE USER [sql_account]
    FROM LOGIN [sql_account]
    WITH DEFAULT_SCHEMA = dbo

    GO


    -- Then set the sql file Build Action to "Build"
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a dba.stackexchange
scroll top