Pergunta

Acabei de importar um banco de dados de produção existente do SQL Server 2008r2 para um projeto de banco de dados do VS 2013.

Agora recebo uma série de erros ao longo das linhas de

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

Eu realmente não preciso do meu projeto VS DB para gerenciar usuários, mas estou preocupado que ele tentaria removê-los na implantação, se eles não estivessem lá.

Os próprios arquivos são gerados como

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

ou

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

O marcador de erro mostra que é especificamente para o Conecte-se.Como se trata de um objeto de nível de sistema, posso entender que está fora do escopo do projeto de banco de dados.

É preferível que eu mude todos eles para

CREATE USER [mydbuser] WITHOUT LOGIN;

ou adicione o CREATE LOGIN cláusula no início de cada arquivo?

Remover a referência de login parece ser mais simples e remover completamente os usuários seria o mais simples.

Quero ter certeza de que estou usando a ferramenta da maneira pretendida.Haverá algum problema em republicar algum deles de volta à produção?Qual é o procedimento adequado para adicionar um usuário/login por meio de um projeto?

Foi útil?

Solução

A maneira mais fácil é não gerenciar usuários através do SSDT (a maioria das pessoas não o faz).Portanto, você pode simplesmente removê-los e não implantar logins ou usuários.

Existem três maneiras:

  • as novas opções para ignorar usuários/logins
  • escreva para um contribuidor de implantação para retirá-los
  • usar meu contribuidor de implantação http://agilesqlclub.Codeplex.com

Ed.

Outras dicas

Eu tive o mesmo problema e encontrei esse link

O usuário tem uma referência não resolvida ao Login

Se você criar logins específicos do aplicativo (que você deve), encontrará esse erro ao tentar criar sua solução.Para corrigir esse erro, selecione Inclua os tipos de objetos 'não escasculados por aplicativos' nas opções (ícone de engrenagem na parte superior) quando você fizer um esquema comparar (clique com o botão direito do mouse no projeto de banco de dados para encontrar o Schema Compare).Você pode apenas importar os logins para o seu projeto regular e as referências são classificadas.Observação:Se você clicar na guia Tipos de objeto e fechar a caixa de diálogo (o que fez para mim), use a tecla de guia até que o aplicativo seja destacado, pressione a seta para baixo para destacar não-aplicados e pressione a barra de espaço .Agora você deve conseguir clicar em OK e ver os logins.

Aparentemente, esse problema ainda ocorre em projetos de banco de dados VS2017.

Consegui resolver primeiro criando o login e depois criando o usuário.

    -- 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"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a dba.stackexchange
scroll top