VS DBプロジェクトとしてインポートした後の「ユーザーへの未解決の参照」
-
28-09-2020 - |
質問
既存の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
句を各ファイルの先頭に追加しますか?
ログイン参照の削除は、より単純で、ユーザーを完全に削除するようです。
私は私が道具を使っていたことを意図していたことを確認したいです。それらのいずれかを生産に再発行することに問題がありますか?プロジェクトを介してユーザー/ログインを追加するための適切な手順は何ですか?
解決
最も簡単な方法は、SSDTを介してユーザーを管理しないことです(ほとんどの人がしない)。そのため、それらを削除するだけでログインまたはユーザーを展開しないでください。
3つの方法があります:
- ユーザー/ Logins を無視するための新しいオプション
- それらを引き出すために展開の貢献者を書きなさい
- 展開の寄稿者を使用してください http://agilesqlclub.codeplex.com
ed
他のヒント
私は同じ問題を抱えてこのリンク
を見つけました
アプリケーション固有のログイン(あなたが必要です)を作成した場合 あなたの構築を試みるときにこのエラーに出かけるつもりです 解決。このエラーを修正するには、[含む]を選択します オプションの「アプリケーション以外のスコープ」オブジェクトタイプ(ギアアイコン) TOP)スキーマを比較すると(データベースプロジェクトを右クリックしてください。 スキーマの比較を見つけます。その後、ログインをインポートするだけです 通常のプロジェクトと参照はソートされています。注:をクリックすると [オブジェクトタイプ]タブとダイアログを閉じます(MEのためにしました)。 代わりに、アプリケーションスコープが強調表示されるまでTABキーを使用してください。 下矢印を押して、非アプリケーションスコープをハイライトして押します。 スペースキー。これでOKをクリックしてログインを見ることができるはずです。
明らかに、この問題はまだ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"
.