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ドライバーの異常ですか?
これは仕様による
使用しているSNACプロトコルによっては、アプリケーションインテント接続文字列のプロパティに若干の違いがあります。
SQL Native Access Client SQLを使用する場合SQL OLE DB、アプリケーションインテント接続文字列はスペースで指定する必要があります: 'Application Intent' SQLClientを使用して接続する場合ODBC=スペースなしで「ApplicationIntent」を指定します