4

我正在尝试将一些现有的 C# 代码转换为 CLR 存储过程。要使用的明显连接字符串是上下文连接(“上下文连接 = true”)。

我遇到的问题是某些事情显然不适用于这种连接类型。最新的是 SqlConnection.GetSchema 方法失败。该错误只是说它在上下文连接上不可用。是否有一个在上下文连接上不起作用的列表?

4

3 回答 3

4

您可能已经在MSDN SQL Server 2008 联机丛书中遇到过这种情况,但是,以下链接解释了使用上下文连接时施加的限制:

常规和上下文连接的限制

如果您发布完整的异常和堆栈跟踪,则可以从 .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 书籍链接中,但并未全部提及。

不适用于上下文连接的事物。

  • 更改密码方法
  • GetSchema 方法
  • 连接池和相关的参数和方法
  • 使用数据库镜像时的透明故障转移
  • 客户端统计 PacketSize、WorkstationID 和其他客户端信息
于 2009-03-17T21:48:21.660 回答