【问题标题】:How connect to 2 different sql servers VB.NET如何连接到 2 个不同的 sql 服务器 VB.NET
【发布时间】:2013-03-19 08:01:41
【问题描述】:

我正在处理我的小项目,并在此时停止 我有 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 个字符串,这很无聊)。

【问题讨论】:

    标签: .net vb.net sql-server-2008


    【解决方案1】:

    您可以将Server2 作为linked server 添加到Server1

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

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

    但您应该注意 performance implications 对链接服务器的查询。

    链接过程需要ALTER ANY LINKED SERVERServer1 的权限。您不必在每次查询前都重复此操作,链接服务器将永久存在,直到被删除。

    【讨论】:

    • 如果我有只读帐户,它完全可以工作吗? sp_addlinkedserver [@server=]'服务器'[,[@srvproduct=]'product_name'][,[@provider=]'provider_name'][,[@datasrc=]'data_source'][,[@location=]' location' ] [ , [ @provstr= ] 'provider_string' ] [ , [ @catalog= ] 'catalog' ] 此代码必须始终在启动我的程序时运行,还是在 mssql 中仅运行 1 次?
    • 您需要 DBA 来配置 ReadOnly 服务器上的链接...或者您可以在 1 个方向上拥有链接 - 例如 Server2 可以使用 Server1.Db.dbo.T 但 Server1 不能使用 Server2.Db.dbo.T .只有一次
    • 这可能是唯一的方法。
    • @user2185412 要添加链接服务器,您必须对Server1 拥有ALTER ANY LINKED SERVER 权限。它执行一次,通常由 DBA 执行,正如 @Basic 已经指出的那样。有关Server2 登录映射的详细信息,请查看以下页面:msdn.microsoft.com/en-us/library/ms189811.aspx
    猜你喜欢
    • 2017-04-30
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 2017-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多