« Référence non résolue à l'utilisateur » après l'importation en tant que projet VS DB

dba.stackexchange https://dba.stackexchange.com/questions/107556

Question

Je viens d'importer une base de données de production SQL Server 2008r2 existante dans un projet de base de données VS 2013.

Je reçois maintenant un certain nombre d'erreurs du type

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

Je n'ai pas vraiment besoin de mon projet VS DB pour gérer les utilisateurs, mais je crains qu'il essaie de les supprimer lors du déploiement s'ils n'étaient pas là.

Les fichiers eux-mêmes sont générés comme

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

ou

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

Le marqueur d'erreur indique qu'il s'agit spécifiquement du Se connecter.Comme il s'agit d'un objet au niveau du système, je peux comprendre qu'il sorte du cadre du projet de base de données.

Est-il préférable que je les change tous en

CREATE USER [mydbuser] WITHOUT LOGIN;

ou ajoutez le CREATE LOGIN clause au début de chaque fichier ?

Supprimer la référence de connexion semble être plus simple et supprimer complètement les utilisateurs serait le plus simple.

Je veux m'assurer que j'utilise l'outil comme prévu.Y aura-t-il des problèmes lors de la réédition de l'un d'entre eux en production ?Quelle est la procédure appropriée pour ajouter un utilisateur/login via un projet ?

Était-ce utile?

La solution

Le moyen le plus simple est de ne pas gérer les utilisateurs via SSD (la plupart des gens ne le font pas).Vous pouvez donc simplement les supprimer et ne pas déployer de connexions ou d'utilisateurs.

Il existe trois manières :

  • les nouvelles options pour ignorer les utilisateurs/connexions
  • écrire un contributeur de déploiement pour les extraire
  • utiliser mon contributeur de déploiement http://agilesqlclub.Codeplex.com

Éd

Autres conseils

J'ai eu le même problème et j'ai trouvé ce lien

L'utilisateur a une référence non résolue à la connexion

Si vous créez des connexions spécifiques à l'application (que vous devriez), vous allez rencontrer cette erreur lorsque vous essayez de créer votre solution.Pour corriger cette erreur, sélectionnez Inclure les types d'objets «non applicables» dans les options (icône de vitesse en haut) lorsque vous faites un schéma compare (cliquez avec le bouton droit sur le projet de base de données pour trouver le schéma compare).Vous pouvez ensuite importer simplement les connexions dans votre projet régulier, et les références sont triées.Note:Si vous cliquez sur l'onglet Types d'objets et qu'il ferme la boîte de dialogue (ce qu'elle a fait pour moi), utilisez plutôt la touche Tab jusqu'à ce que l'application soit mise en surbrill .Vous devriez maintenant pouvoir cliquer sur OK et voir les connexions.

Apparemment, ce problème persiste également sur les projets de base de données VS2017.

J'ai réussi à le résoudre en créant d'abord le login, puis en créant l'utilisateur.

    -- 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"
Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top