0

私は 2 つの SQL Server を持っています。1 つはフランスのディジョンにあります。米国コロラド州アルバダに 1 つ。それらの間でデータの複製が設定されています。

ユーザーが SQL Server 2008 R2 Dijon データベースに接続しようとすると、すべて正常に動作します。

しかし、ユーザーの 1 人が VB.Net アプリケーションから SQL Server 2012 US データベースに接続しようとすると、エラーが発生します。

エラーは次のとおりです。

「サーバーとの接続は正常に確立されましたが、ログイン プロセス中にエラーが発生しました (プロバイダー: TCP プロバイダー、エラー: 0 - 既存の接続がリモート ホストによって強制的に閉じられました。)」

このエラーは、1 人のユーザーに対してのみ表示されます。他は問題なく接続できています。私はおそらくこれについて手がかりを持っています。彼は多くの AD セキュリティ グループに属していたため、すでに接続の問題が発生しています

接続文字列は次のとおりです。

Data Source=server\instance;Initial Catalog=db;Integrated Security=SSPI;Connection Timeout=0;

米国のユーザーが同じサーバーに接続しようとすると、同じ問題が発生します。しかし、彼がディジョンに接続しようとしたときではありません。この問題を解決するのに役立つ手がかりはありますか?

Web から StackOverflow スレッドやその他のソリューションを確認しましたが、何も役に立ちませんでした...

4

2 に答える 2

0

予想どおり、ユーザーの AD セキュリティ グループが多すぎるため、 Kerberos 認証の問題でした... 解決策は、ここで説明されています: ユーザーが多くのグループに属している場合の Kerberos 認証の問題。 2012年

認証しようとしているユーザーの認証データが MaxTokenSize より大きい場合、そのプロトコルを使用したその接続の認証は失敗します。

Windows 7 および Windows Server 2008R2 では、MaxTokenSize(Kerberos の既定のバッファー サイズ) は12kです。そのサイズは、Windows 8 および Windows Server 2012 で48kに増加しました。私の場合は十分ではありませんでした。

レジストリにキーを追加する必要がありましたHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters\MaxTokenSize( 10 進値65535にREG_DWORD入力します)。 次に、サーバーを再起動しました。

ユーザーはエラーなしでデータにアクセスできるようになりました。

于 2015-08-07T14:41:42.477 に答える
0

以下の URL を参照

トラブルシューティング: 接続が強制的に閉じられた

TCP プロバイダー、エラー:

接続が強制的に切断されました

次の手順を実行します

  1. 最初にサービスに移動し、「SQL Server Browser」サービスが開始されているかどうかを確認します。開始されていない場合は、サービスを開始します。

  2. SQL Server 構成マネージャーを開く

  3. MSSQLSERVER の Goto プロトコル
  4. すべてのプロトコルを有効にする
  5. SQL ネイティブ クライアントに移動
  6. クライアント プロトコルを選択し、すべて有効にする
  7. SQL Server サービスを再起動します。

.. (.NET Framework Data Provider for SQL Server) をプロバイダーとして使用する

接続文字列

  1. データ ソース=server\instance;初期カタログ=;Persist Security Info=True;ユーザー ID=;パスワード=;ネットワーク ライブラリ=dbmssocn
于 2015-08-07T08:58:27.783 に答える