如何连接到2个不同的sql服务器VB.NET

use*_*412 2 .net vb.net sql-server-2008

我正在处理我的小项目,此时停止我有2个sql服务器,一个是 - 部门sql server(READONLY)和我的本地服务器进行复制.在VB.net中,我打开与adodb lib的连接

    connectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security   Info=False;Initial Catalog=Work;Data Source=server1\SQLEXPRESS"
        ginfo = "Select * From base1.dbo.table1 "
        cn = New ADODB.Connection
        rs = New ADODB.Recordset
        cn.Open(connectionString)
        rs.Open(ginfo, cn, ADODB.CursorTypeEnum.adOpenStatic)
        i = 0
        With rs
            If rs.BOF = False Then
                Do While Not .EOF
                    ReDim Preserve users(i)
                    users(i).name = rs.Fields(2).Value
                    lb_sfio.Items.Add(users(i).name)
                    i = i + 1
                    .MoveNext()
                Loop
            End If
        End With
Run Code Online (Sandbox Code Playgroud)

因此,下一阶段是连接到第二个服务器,从另一个服务器文本获取信息是类似的.但是,我很有趣的是如何使用SQL脚本语言处理2台服务器

ginfo = "SELECT * FROM srv1.bs1.dbo.tbl1 EXCEPT SELECT * FROM srv2.bs1.dbo.tbl1"
Run Code Online (Sandbox Code Playgroud)

因为在我的变种中是两个慢.也许第二个问题是如何在没有完全比较的情况下找到DB中的更新(db有4k字符串,这很无聊).

Art*_*lev 5

您可以添加Server2链接服务器Server1.

然后,您的查询Server1将如下所示:

use base1
SELECT field1 FROM table1 EXCEPT SELECT field1 FROM server2.base1.dbo.table1
Run Code Online (Sandbox Code Playgroud)

但是,您应该了解对链接服务器的查询的性能影响.

链接过程需要ALTER ANY LINKED SERVER许可Server1.您不必每次在查询之前重复此操作,链接的服务器将变为持久性,直到被删除.