【问题标题】:The difference between the connections strings in SQLCLRSQLCLR中连接字符串的区别
【发布时间】:2010-09-08 13:54:53
【问题描述】:

我正在查看顾问签入的一些代码,并注意到他们正在使用 SQLCLR。我没有任何经验,所以我想我会研究它是关于什么的。我注意到他们使用了

Dim cn As New SqlConnection("server=LOCALHOST;integrated security=yes;database=" & sDb)

而不是

DIM conn As New SqlConnection("context connection=true")

我想知道第一个是 localhost 有什么区别?

【问题讨论】:

    标签: sqlclr


    【解决方案1】:

    上下文连接使用用户已经建立的到服务器的连接。因此,您可以继承它们的数据库上下文、连接选项等内容。

    使用 localhost 将使用普通的共享内存连接连接到服务器。如果您不想使用用户的连接(即,如果您想连接到不同的数据库,或者使用不同的选项等),这可能很有用。

    在大多数情况下,您应该使用上下文连接,因为它不会创建到服务器的单独连接。

    另外,请注意,使用单独的连接意味着您不是用户事务的一部分,并且受制于正常的锁定语义。

    【讨论】:

      【解决方案2】:

      考虑一个大型办公电话系统:

      我的办公室有一个内部电话系统。但是每部电话也有一个外部电话号码(使用一组真实 TELCO 线路的虚拟号码)。我可以通过直接拨打他们的电话分机来呼叫另一个办公室,并且该呼叫将通过我们的内部电话系统(单跳)进行路由。或者,我可以拨打该电话的公共号码,然后呼叫从大楼的系统路由到 TELCO 交换局,然后通过大楼的系统返回到办公室分机(3 跳)。

      当连接到连接字符串中指定的服务器时,第一个 SQL 连接的行为与任何标准 SQL 连接一样。使用标准本机 SQL 连接创建新连接。这就像拨打另一部办公电话的完整公共电话号码一样。当然,您正在连接到本地计算机,但连接的路由方式不同。

      上下文连接具有使用正在执行 SQLCLR 对象的现有连接的新 SqlConnection 实例。它使用现有/本地上下文。这就像直接拨打我办公室同事的分机一样。本地上下文更高效。

      虽然我不肯定,但我相信在使用上下文连接时,对 SQLCLR 对象的调用也会参与上下文的事务。如果我错了,请有人纠正我。

      彼得

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-08-08
        • 2012-10-10
        • 2019-01-12
        • 2014-06-12
        • 2015-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多