2013年のSQL Serverデータベースプロジェクトでログインするためにユーザーを作成する方法

StackOverflow https://stackoverflow.com/questions/19848722

質問

SSDTデータベースプロジェクトのログインでユーザーを作成しようとしています。ターゲットサーバーにログインは既に存在しています。次のSQLで:

CREATE USER [MyLogin]
        FOR LOGIN [MyLogin]
        WITH DEFAULT_SCHEMA = dbo

GO

エラーが発生します:

エラー1 SQL71501:ユーザー:[MyLogin]は、ログイン[MyLogin]への未解決の参照があります。

私は2つの解決策を見つけましたが、どちらも2013年には動作しません。

1)ログインを参照するサーバープロジェクトを作成します。これは、SSDT / VS2013の現在のバージョンのオプションではありません

2)スキーマチェックを無効にします。オプションは2013年に欠落しています(私はそれがだったと思います Options -> Database Tools -> Schema Compare)

役に立ちましたか?

解決

標準のT-SQL構文を使用して、SQL Serverデータベースプロジェクト内で実際にサーバーレベルのログインを作成できます。

CREATE LOGIN [Login_Name] WITH PASSWORD = '<Password>';

ノート: :データベースプロジェクトを右クリックして「新しいアイテムの追加」を選択し、SQL Server> Security(Templatesダイアログ内)に移動し、「ログイン(SQL Server)」を選択することもできます。

これにより、SQL71501エラーが解決され、(展開にsqlpackage.exeを使用していると仮定すると)sqlpackage.exeは、展開と公開が発生する前にセキュリティオブジェクトをターゲットデータベースと比較する機能を可能にします。

それが役立つことを願っています:)

他のヒント

サーバーでログインすることが保証されている場合、マスターDACPACファイルを調整することが最善です。ここでこれを行う方法についていくつかの指示があります:http://sqlproj.com/index.php/2013/02/how-to-add-objects-to-master-dacpac

または、SSDT部分からログインへの参照を削除し、デプロイ後のスクリプトで処理することもできます。異なるサーバー(開発、QA、生産)で異なるアクセス許可を適用する必要がある環境がある場合、それがより良い選択肢かもしれません。ここでこれについてブログを書いています: http://schottsql.blogspot.com/2013/05/ssdt-setting-different-permissions-per.html

うまくいけば、それらの1つが役立つでしょう。私は実際に最初のオプションを使用して、Execute ASを使用する必要があることで問題を回避しました。これには、ユーザーがプロジェクトに参加する必要があります。正確なXMLを取得するのは少し難しいことでしたが、そのログイン、構築、DACPACからXMLをマスターDACPACにコピーして空のプロジェクトを作成することで、それを回避しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top