web-dev-qa-db-ja.com

SSIS接続でのApplicationIntentパラメータの使用

SQL Server 2012可用性グループへのOLEDB接続を確立するSSISパッケージで、不可解な構成異常に遭遇しました。 AGを管理するDBAは、AGリスナー名とAGのDB部分を指定し、ApplicationIntent=ReadOnly接続文字列の追加パラメーターとして。セカンダリへのルーティングは-Kスイッチを使用してsqlcmdで機能しますが、SSISパッケージはまだプライマリにルーティングされていました。彼らが要求した接続文字列の例を以下に示します。これは、SSISDBカタログのプロジェクトレベルの構成項目として利用されました。

Provider=SQLNCLI11.1;Server=xxx.xxxx.xxxxx.xxx.com;UID=YourNameHere;Database=AGDB;ApplicationIntent=ReadOnly;Application Name=SomethingForProfilerAndXEToFilterOn

デバッグ中、OLEDB接続はSQL ServerデータツールGUIを使用して最初から作成されました。接続文字列の顕著な違いは、パラメータを読み取るためのスペースが追加されたことでしたApplication Intent=ReadOnly。これで、セカンダリへの接続が成功しました。

OLEDBドライバーは両方のバリエーションを受け入れるようですが、スペースのあるもののみがSSISパッケージで正しく実装されています。これはSSISまたはSQL Server Native client/OLEDBドライバーの異常ですか?

2
MattyZDBA

これは仕様による

使用しているSNACプロトコルによっては、アプリケーションインテント接続文字列のプロパティに若干の違いがあります。

SQL Native Access Client SQLを使用する場合SQL OLE DB、アプリケーションインテント接続文字列はスペースで指定する必要があります: 'Application Intent' SQLClientを使用して接続する場合ODBC=スペースなしで「ApplicationIntent」を指定します

https://blogs.msdn.Microsoft.com/alwaysonpro/2013/08/02/connect-to-sql-server-using-application-intent-read-only/

2
tamf