VS DBプロジェクトとしてインポートした後の「ユーザーへの未解決の参照」


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を介してユーザーを管理しないことです(ほとんどの人は管理しません)。したがって、それらを削除して、ログインやユーザーをデプロイしないでください。

3つの方法があります。

  • ユーザー/ログインを無視する新しいオプション
  • それらを引き出すためのデプロイメント・コントリビューターを作成する
  • デプロイメントコントリビューターhttp://agilesqlclub.Codeplex.comを使用する

エド


あなたのリンクはこちらも非常に役立ちました:blogs.msdn.com/b/ssdt/archive/2015/02/23/...
グレッグ

1
「ユーザー/ログインを無視する新しいオプション」について詳しく説明していただけますか?
Yawar Murtaza、


9

私は同じ問題を抱えており、このリンクを見つけました

ユーザーにはログインへの未解決の参照があります

アプリケーション固有のログインを作成すると(必要です)、ソリューションを構築しようとすると、このエラーが発生します。このエラーを修正するには、スキーマ比較(データベースプロジェクトを右クリックしてスキーマ比較を検索)するときに、オプション(上部の歯車のアイコン)で[アプリケーションスコープ以外のオブジェクトタイプを含める]を選択します。その後、ログインを通常のプロジェクトにインポートするだけで、参照がソートされます。注:[オブジェクトの種類]タブをクリックしてダイアログが閉じた場合は(ダイアログボックスが閉じました)、アプリケーションスコープが強調表示されるまでタブキーを使用してから、下矢印を押して[アプリケーションスコープ以外]を強調表示し、スペースキー。これで、[OK]をクリックしてログインを確認できます。


1
ご回答ありがとうございます!これらの指示にいくつかのコンテキストを提供できますか?たとえば、スキーマ比較はこのエラーとどのように関係していますか?[オブジェクトタイプ]タブはどこにありますか?どこでタブキーを押しますか?等
ジェイク

承知しました。基本的にVS2013 / 2015では、使用しているソリューションのすべてのSQLを含むデータベースプロジェクトがあります。そのDBプロジェクトを右クリックして「スキーマ比較」をクリックすると、プロジェクトの内容とデータベースの内容を比較できます。ポップアップ表示されるウィンドウの上部には、設定用のCogアイコンがあります。何らかの理由でマウスで「アプリケーションスコープ以外」のチェックボックスをクリックできないため、代わりにタブキーを使用してください。Tabキーを1回押してから、下矢印キーを押してから、スペースバーを押して選択します。お役に立てば幸いです。
SpeedOfSpin 2016年

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"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.