web-dev-qa-db-fra.com

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

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 dans le sens de

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 montre qu'il s'agit spécifiquement de Login. Comme il s'agit d'un objet au niveau du système, je peux comprendre qu'il est hors de la portée du projet db.

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

CREATE USER [mydbuser] WITHOUT LOGIN;

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

La suppression de la référence de connexion semble être plus simple et la suppression totale des utilisateurs serait la plus simple.

Je veux m'assurer que j'utilise l'outil comme il était prévu. Y aura-t-il des problèmes lors de la republication de ceux-ci de retour à la production? Quelle est la procédure appropriée pour ajouter un utilisateur/login via un projet?

11
Greg

Le moyen le plus simple est de ne pas gérer les utilisateurs via ssdt (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 façons:

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

Ed

8
Ed Elliott

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 à une application (ce que vous devriez), vous rencontrerez cette erreur lors de la création de votre solution. Pour corriger cette erreur, sélectionnez inclure les types d'objet "sans étendue d'application" dans les options (icône d'engrenage en haut) lorsque vous effectuez une comparaison de schéma (cliquez avec le bouton droit sur le projet de base de données pour trouver la comparaison de schéma). Vous pouvez ensuite simplement importer les connexions dans votre projet normal et les références sont triées. Remarque: Si vous cliquez sur l'onglet Types d'objet et qu'il ferme la boîte de dialogue (ce qu'il a fait pour moi), utilisez plutôt la touche de tabulation jusqu'à ce que la portée de l'application soit mise en surbrillance, puis appuyez sur la flèche vers le bas pour mettre en évidence la portée sans application et appuyez sur la touche barre d'espace. Vous devriez maintenant pouvoir cliquer sur OK et voir les connexions.

9
SpeedOfSpin

Apparemment, ce problème se produit é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"
1
reas