Visual Studio 2010-le projet de base de données avec la base de données importée échoue à construire

Je regarde le projet de base de données dans VS2010, l'idée étant que je veux quelque chose que je peux utiliser pour garder une trace du schéma de base de données (dans le contrôle de source) et la possibilité de générer des scripts "new install", et changer les scripts.

Lorsque je crée un nouvel assistant de projet de base de données et que j'importe mon schéma de base de données existant, il ne "construit"pas. Je reçois l'erreur:

SQL03006: User: [scanner] a un référence non résolue à la connexion [scanner].

Le SQL qui génère cette erreur:

Créer un utilisateur [scanner] pour la connexion [scanner];

L'utilisateur "scanner" est un login défini dans la base de données que j'ai importée. Je n'ai aucune idée de ce que c'est que je télé, et google ne vomit pas beaucoup. Des idées?

23
demandé sur Matt Roberts 2011-03-29 18:54:52

4 réponses

La connexion est en fait définie dans la base de données maître de l'installation du serveur. L'instruction CREATE USER doit pointer sur une connexion existante, sinon elle est erronée. Le projet de base de données n'est pas au courant de la connexion au niveau du serveur. Vous pouvez soit créer un projet de serveur pour gérer les connexions, soit désactiver la vérification des objets de sécurité dans votre projet de base de données. Voir la réponse de Demetri M pour plus de détails: http://social.msdn.microsoft.com/Forums/eu/vstsdb/thread/1f8226fe-b791-4344-8735-3d38307e8664

16
répondu Judah Sali 2011-03-29 16:53:34

J'utilise Visual Studio 2012 pour un projet de base de données SQL Server 2008 R2. Les options listées par @ Judah ne semblent plus fonctionner.

Ils semblent maintenant être des paramètres que vous configurez lors d'une comparaison de schéma:

Faites un clic droit sur le projet de base de données > Choisissez 'Comparaison De Schéma' > Choisissez l'icône d'engrenage "paramètres" > Choisissez l'onglet 'Types D'objets' >

Les connexions ne sont pas étendues à L'Application. Les rôles de base de données, les autorisations, les appartenances de rôle et les utilisateurs sont tous Portée Application.

Malheureusement, la seule façon que je peux trouver pour les préserver est de sauvegarder la comparaison de schéma. Cela peut être un peu gênant si vous partagez cela sur une équipe et que vous souhaitez des paramètres de Projet/Base de données (ou serveur) pour toute comparaison de schéma.

, Il fait le travail, cependant.

8
répondu fordareh 2013-02-27 08:37:07

Vous pouvez modifier les scripts create user pour créer des rôles. Donc, au lieu de "créer un nom d'utilisateur utilisateur pour login loginName;"

Utilisez "créer un rôle [nom d'utilisateur] autorisation dbo;"

C'est un hack, mais tant que vous n'avez pas à traiter avec les utilisateurs et les rôles dans votre projet, vous pouvez heureusement faire ce qui suit:

GRANT EXECUTE Sur L'objet:: [dbo].[nom_sp] à [nom_utilisateur];

1
répondu Paul 2015-09-02 15:49:46

Apparemment, ce problème se produit toujours sur les projets de base de données VS2017.

J'ai réussi à le résoudre en créant d'abord la connexion, puis créer 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"
0
répondu reas 2018-05-07 17:18:27