Pregunta

Acabo de importar una base de datos de producción de SQL Server 2008R2 existente en un proyecto de base de datos VS 2013.

Ahora obtengo una serie de errores a lo largo de las líneas de

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

Realmente no necesito mi proyecto VS DB para administrar a los usuarios, pero le preocupa que intentaría eliminarlos al desplegar si no estaban allí.

Los archivos en sí se generan como

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

o

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

El marcador de error muestra que es específicamente para el Iniciar sesión . Como ese es un objeto de nivel de sistema, puedo entender que está fuera del alcance del proyecto DB.

es preferible que los cambie a todos a

CREATE USER [mydbuser] WITHOUT LOGIN;

¿O agregue la cláusula de CREATE LOGIN al comienzo de cada archivo?

Eliminar la referencia de inicio de sesión parece ser más sencilla y eliminar los usuarios en conjunto sería el más simple.

Quiero asegurarme de que estoy usando la herramienta de la forma en que se pretendía. ¿Habrá problemas para volver a publicar a cualquiera de los de vuelta a la producción? ¿Cuál es el procedimiento adecuado para agregar un usuario / inicio de sesión a través de un proyecto?

¿Fue útil?

Solución

La forma más fácil es no administrar a los usuarios a través de SSDT (la mayoría de las personas no).Para que pueda simplemente despojarlos y no despliegue los inicios de sesión o los usuarios.

Hay tres formas:

  • Las nuevas opciones para ignorar a los usuarios / Logins
  • escribe un colaborador de despliegue para sacarlos
  • Usa mi colaborador de implementación http://agilesqlclub.codeplex.com

ed

Otros consejos

Tuve el mismo problema y encontré este enlace

el usuario tiene una referencia no resuelta a inicio de sesión

Si crea inicios de sesión específicos de la aplicación (que debe), entonces van a encontrar este error al intentar construir su solución. Para corregir este error, seleccione Incluir Tipos de objetos 'no aplicados por aplicación' en las opciones (icono de marcha en arriba) cuando hace un esquema de comparación (haga clic con el botón derecho en el proyecto de la base de datos para Buscar esquema comparar). A continuación, puede importar los inicios de sesión en su Proyecto regular, y las referencias están ordenadas. Nota: Si hace clic en La pestaña Tipos de objetos y cierra el diálogo (que hizo para mí), en su lugar, use la tecla TAB hasta que se resalte la aplicación al alcance de la aplicación, entonces Presione la flecha hacia abajo para resaltar la no aplicada y presione el barra espaciadora. Ahora debería poder hacer clic en Aceptar y vea los inicios de sesión.

Aparentemente, este problema aún está ocurriendo en los proyectos de base de datos VS2017 también.

He logrado resolverlo creando primero el inicio de sesión y luego cree el usuario.

    -- 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 bajo: CC-BY-SA con atribución
No afiliado a dba.stackexchange
scroll top