"Невирішене посилання на Користувача" після імпорту у проект БД VS


11

Я щойно імпортував існуючу виробничу базу даних SQL Server 2008r2 в проект бази даних VS 2013.

Тепер я отримую ряд помилок у порядку

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

Мені не дуже потрібен мій проект VS DB для управління користувачами, але я стурбований тим, що він би намагався видалити їх при розгортанні, якби їх там не було.

Самі файли генеруються як

CREATE USER [mydbuser] FOR LOGIN [mydbuser];

або

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

Маркер помилок показує, що це спеціально для Входу . Оскільки це об’єкт на системному рівні, я можу зрозуміти, що він знаходиться поза рамками проекту db.

Чи бажано, щоб я змінив їх усіх

CREATE USER [mydbuser] WITHOUT LOGIN;

або додати CREATE LOGINпункт до початку кожного файлу?

Видалення посилання на вхід здається більш простим, а видалення користувачів взагалі було б найпростішим.

Я хочу переконатися, що я використовую інструмент так, як він був призначений. Чи будуть якісь проблеми при повторній публікації будь-якого з тих, хто повернувся до виробництва? Яка правильна процедура додавання користувача / логіна через проект?


1
Я щойно помітив, що це трапляється не для всіх користувачів. Всі вони були користувачами SQL, а деякі були відключені (хоча інші не були). Будь-які ідеї з чого почати шукати відмінності?
Грег

Відповіді:


9

Найпростіший спосіб - не керувати користувачами через ssdt (більшість людей це не робить). Таким чином, ви можете просто викреслити їх і не розгортати логіни або користувачів.

Є три способи:

  • нові варіанти ігнорування користувачів / входів
  • написати дописувача розгортання, щоб витягнути їх
  • скористатися моїм дописувачем розгортання http://agilesqlclub.Codeplex.com

Ред


Ваше посилання тут також було дуже корисним: blogs.msdn.com/b/ssdt/archive/2015/02/23/…
Грег,

1
Чи можете ви, будь ласка, детальніше розглянути "нові варіанти ігнорування користувачів / реєстрацій"?
Явар Муртаза


9

У мене була така ж проблема і я знайшов це посилання

Користувач має невирішене посилання на Вхід

Якщо ви створюєте конкретні входи для додатків (які ви повинні), ви збираєтесь зіткнутися з цією помилкою, намагаючись створити своє рішення. Щоб виправити цю помилку, виберіть у параметри (значок шестірні вгорі), коли ви робите схему порівняння (натисніть правою кнопкою миші проект бази даних, щоб знайти схему порівняння). Потім ви можете просто імпортувати входи в ваш звичайний проект, а посилання сортуються. Примітка. Якщо ви натиснете на вкладку "Типи об'єктів", і він закриє діалогове вікно (що він зробив для мене), замість цього використовуйте клавішу вкладки, доки не буде виділено область застосування, а потім натисніть стрілку вниз, щоб виділити Неприкладні програми та натисніть пробіл. Тепер ви маєте змогу натиснути ОК і побачити входи.


1
Дякую за відповідь! Чи можете ви надати певний контекст для цих інструкцій? Наприклад, що стосується порівняння схеми з цією помилкою? Де знаходиться вкладка Типи об’єктів? Де ви натискаєте клавішу вкладки? І т. Д.
Джейк

Звичайно. В основному у VS2013 / 2015 у вас є проект бази даних, який містить весь ваш SQL для рішення, яке ви використовуєте. Якщо ви клацніть правою кнопкою миші на проект БД і натисніть "Порівняти схему", ви можете порівняти те, що є у вашому проекті, і те, що знаходиться у вашій базі даних. У верхній частині вікна, що з'являється, знаходиться значок Cog для налаштувань. З якоїсь причини ви не можете натиснути прапорець "Не нанесено заявку", тому використовуйте клавішу вкладки. Натисніть клавішу вкладки один раз, потім клавішу зі стрілкою вниз, а потім пробіл, щоб вибрати її. Сподіваюся, що це допомагає.
SpeedOfSpin

1

Мабуть, ця проблема все ще виникає і в проектах баз даних VS2017.

Мені вдалося вирішити це, спершу створивши логін, а потім створивши користувача.

    -- 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"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.