Frage

Ich habe gerade eine vorhandene SQL Server 2008r2-Produktionsdatenbank in ein VS 2013-Datenbankprojekt importiert.

Ich bekomme jetzt eine Reihe von Fehlern in der Art von

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

Ich benötige mein VS DB-Projekt nicht wirklich zum Verwalten von Benutzern, befürchte jedoch, dass es versuchen würde, sie bei der Bereitstellung zu entfernen, wenn sie nicht vorhanden wären.

Die Dateien selbst werden als generiert

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

oder

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

Die Fehlermarkierung zeigt an, dass es sich speziell um das handelt Anmeldung.Da es sich um ein Objekt auf Systemebene handelt, kann ich verstehen, dass es außerhalb des Geltungsbereichs des Datenbankprojekts liegt.

Ist es vorzuziehen, dass ich sie alle ändere?

CREATE USER [mydbuser] WITHOUT LOGIN;

oder fügen Sie das hinzu CREATE LOGIN Klausel am Anfang jeder Datei?

Das Entfernen der Anmeldereferenz scheint einfacher zu sein, und das Entfernen der Benutzer insgesamt wäre am einfachsten.

Ich möchte sicherstellen, dass ich das Tool wie vorgesehen verwende.Wird es Probleme geben, einige davon wieder in Produktion zu bringen?Was ist das richtige Verfahren zum Hinzufügen eines Benutzers/Logins über ein Projekt?

War es hilfreich?

Lösung

Der einfachste Weg besteht darin, Benutzer nicht über SSDT zu verwalten (die meisten Leute tun dies nicht).Sie können sie also einfach entfernen und keine Anmeldungen oder Benutzer bereitstellen.

Es gibt drei Möglichkeiten:

  • die neuen Optionen zum Ignorieren von Benutzern/Anmeldungen
  • Schreiben Sie einen Deployment-Mitwirkenden, um sie herauszuholen
  • Verwenden Sie meinen Bereitstellungsmitarbeiter http://agilesqlclub.Codeplex.com

Ed

Andere Tipps

Ich hatte das gleiche Problem und habe diesen Link gefunden

Der Benutzer hat einen ungelösten Verweis auf die Anmeldung

Wenn Sie anwendungsspezifische Anmeldungen erstellen (die Sie sollten), werden Sie auf diesen Fehler stoßen, wenn Sie versuchen, Ihre Lösung zu erstellen.Um diesen Fehler zu korrigieren, wählen Sie Objekttypen von "Nichtantrags-Scoped" in die Optionen (Getriebe Symbol oben), wenn Sie ein Schema-Vergleichen durchführen (klicken Sie mit der rechten Maustaste auf das Datenbankprojekt, um Schema-Vergleiche zu finden).Sie können dann die Anmeldungen einfach in Ihr reguläres Projekt importieren und die Referenzen werden sortiert.Notiz:Wenn Sie auf die Registerkarte "Objekttypen" klicken und das Dialog (das für mich getan hat) geschlossen wird, verwenden Sie stattdessen die Registerkarte, bis die Anwendungsbeschaffung hervorgehoben ist .Jetzt sollten Sie in der Lage sein, auf OK zu klicken und die Anmeldungen anzuzeigen.

Anscheinend tritt dieses Problem auch bei VS2017-Datenbankprojekten immer noch auf.

Ich habe es geschafft, das Problem zu lösen, indem ich zuerst den Login und dann den Benutzer erstellt habe.

    -- 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"
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit dba.stackexchange
scroll top