2

私は小さなプロジェクトに取り組んでおり、この時点で停止しました.2つのSQLサーバーがあり、1つは部門のSQLサーバー(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

次の段階では、2 番目のサーバーに接続し、別のサーバーから情報を取得します。テキストも同様です。しかし、たとえばSQLスクリプト言語を使用して2つのサーバーでどのように機能するかは興味深い

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

私のバリアントでは2が遅いためです。そしておそらく2番目の質問は、完全な比較なしで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 に答える