web-dev-qa-db-ja.com

SSDTデータベースプロジェクトをデータ層アプリケーションとして登録できません

SSDTデータベースプロジェクトの公開とデータ層アプリケーションとしての登録に問題があります。説明させてください。

リンクサーバーを介して他の2つのデータベース(BとC)を参照するデータベース(A)があります。 BとCに基づいてプロジェクトを作成し、プロジェクトのスナップショットを作成して、データベースBとCのdacpacを作成しました。dacpacを介してBとCへのデータベース参照を持つデータベースAのデータベースプロジェクトを作成しました。 SQLCMD変数を設定し、dbプロジェクトのddlスクリプトを変更して、未解決のリンクサーバー名の代わりにSQLCMD変数を使用しました。プロジェクトが構築されます!

プロジェクトをデータ層アプリケーションとして公開しようとしていますが、「DACデータベースとして登録されたデータベースは、SQL 2005 SP4、SQL 2008 SP2、SQL 2008 R2、SQL 2012、またはSQLAzureのインスタンスでホストする必要があります」というエラーが引き続き表示されます。 。ちなみに私はSQLServer2012を実行しています。

SSMSを介してデータ層アプリケーションとして登録できるかどうかをテストしようと思いました。 SSMS内では、[データ層アプリケーションとして登録]オプションがグレー表示されています。そのため、「データ層アプリケーションのエクスポート」を試みましたが、リンクされたサーバーオブジェクトに関して多くのエラーが発生しました。

私の質問は; SSDTデータベースプロジェクトを展開して、プロジェクトがリンクサーバーを使用しているデータ層アプリケーションとして登録することは可能ですか、それとも何か問題がありますか?可能であれば、誰かがアドバイスを提供することができます。

私は答えを探してグーグルを壊したので、どんな助けでも大歓迎です。私は以前に StackOverflow でこの質問をしましたが、応答がなかったので、よりターゲットを絞ったフォーラムに投稿しています。

3
Steve

私は最近このエラーが発生したので、これに遭遇した他の人のために私の解決策を追加します、

私のpublish.xmlで、RegisterDataTierApplicationをTrueに設定したことがわかりました。データベースを最初に公開したときは正常に機能しましたが、データベースがすでにデータ層アプリケーションとして登録されているため、同じエラーが発生しました。

Falseに設定する(またはGUIのチェックボックスをオフにする)と、正常に機能します。

 <?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.Microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <IncludeCompositeObjects>True</IncludeCompositeObjects>
    <TargetDatabaseName>foo</TargetDatabaseName>
    <DeployScriptFileName>foo.sql</DeployScriptFileName>
    <BlockWhenDriftDetected>False</BlockWhenDriftDetected>
    <RegisterDataTierApplication>False</RegisterDataTierApplication>
    <ProfileVersionNumber>1</ProfileVersionNumber>
    <TargetConnectionString>Data Source=foo;Integrated Security=True;Pooling=False</TargetConnectionString>
  </PropertyGroup>
</Project>

Publish Database Profile

Dacpacの抽出に関する注意として、ssmsを介して抽出すると、常にエラーが発生します。

VisualStudioでSQLServerオブジェクトエクスプローラーを使用する場合は、[抽出の検証]オプションのチェックを外すなど、さらに多くのオプションを設定できます。これにより、dacpacを作成できます。

1
Neerav Dodhia