2

我正在处理我的小项目,此时我停止了我有 2 台 sql 服务器,一台是部门 sql 服务器(只读)和我的本地服务器用于复制。在 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

所以下一阶段是连接到第二个服务器并从另一个服务器文本中获取信息是类似的。但是,我很感兴趣如何使用 2 个使用 SQL 脚本语言的服务器工作

ginfo = "SELECT * FROM srv1.bs1.dbo.tbl1 EXCEPT SELECT * FROM srv2.bs1.dbo.tbl1"

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

4

1 回答 1

5

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

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

use base1
SELECT field1 FROM table1 EXCEPT SELECT field1 FROM server2.base1.dbo.table1

但是您应该注意对链接服务器的查询对性能的影响。

链接过程ALTER ANY LINKED SERVER需要Server1. 您不必在每次查询前都重复此操作,链接服务器将保持不变,直到被删除。

于 2013-03-19T08:14:52.347 回答