4

既存の C# コードを CLR ストアド プロシージャに変換しようとしています。使用する明白な接続文字列は、コンテキスト接続 ("context connection = true") です。

私が直面している問題は、この接続タイプでは明らかに機能しないことがいくつかあります。最新のことは、SqlConnection.GetSchema メソッドが失敗することです。エラーは、コンテキスト接続では使用できないことを示しているだけです。コンテキスト接続で機能しないもののリストはどこかにありますか?

4

3 に答える 3

4

MSDN SQL Server 2008 Books Onlineで既にこれに遭遇している可能性がありますが、次のリンクでは、コンテキスト接続を使用するときに課せられる制限について説明しています。

通常接続とコンテキスト接続の制限

完全な例外とスタック トレースを投稿すると、.NET FX アセンブリ (.NET Reflector を使用)、または SQL 2005/2008 で展開されたアセンブリから、この例外がスローされる理由を確認できる場合があります。

于 2009-03-17T20:48:08.950 に答える
2

誰かがこれを便利だと思うかもしれません:

    System.Data.DataTable schema = null;
    using (System.Data.SqlClient.SqlCommand cmd = database.Connection.CreateCommand())
    {
        cmd.CommandText = string.Format( "SELECT TOP 1 * FROM {0}", mainTable );
        cmd.CommandType = System.Data.CommandType.Text;
        using (System.Data.SqlClient.SqlDataReader rdr = cmd.ExecuteReader())
        {
            schema = rdr.GetSchemaTable();
        }
    }
于 2009-06-16T08:24:40.620 に答える
1

さらに検索した後、コンテキスト接続で機能しないもののリストを見つけましたここ。これらの一部は、上記の SQL Books リンクにも記載されていますが、すべてについては言及されていません。

コンテキスト接続では機能しないもの。

  • ChangePassword メソッド
  • GetSchema メソッド
  • 接続プーリングおよび関連するパラメーターとメソッド
  • データベース ミラーリングを使用する場合の透過的なフェールオーバー
  • クライアント統計 PacketSize、WorkstationID、およびその他のクライアント情報
于 2009-03-17T21:48:21.660 に答える