代码之家  ›  专栏  ›  技术社区  ›  Ben McCormack

从一个域上的数据库中选择记录以将其插入到另一个域上的数据库中

  •  0
  • Ben McCormack  · 技术社区  · 15 年前

    假设我有一张桌子叫 MessageLog :

    MessageLog
    ==========
    MessageLogID int (Identity)
    Message text
    

    我在不同域的不同计算机上的不同数据库中设置了相同的表:

    Domain           Machine          SQLServername      Database      Table
    =============================================================================
    Production       ProdSql1                            AppDB         MessageLog
    Dev              DevSql           Sql2k5             AppDB         MessageLog
    

    我能看到 Dev 域中的 Production 域,但我看不到 生产 域中的 DEV 领域。这意味着我必须在 生产 领域。

    如何编写一个查询来选择 信息电报 记录来自 生产 把它们插入 DEV ?

    在pseudo sql中,我想象如下:

    Select Message From AppDb.dbo.MessageLog
    Into Dev.DevSql\Sql2k5.AppDb.dbo.MessageLog
    
    2 回复  |  直到 15 年前
        1
  •  1
  •   OMG Ponies    15 年前

    你想设置 Linked Server instance 在生产实例上,它使用开发实例上的帐户指向开发实例,该帐户在相应表上具有INSERT权限。防火墙/网络访问提供…

    使用四个名称表示法引用链接服务器实例上的表:

    INSERT INTO development.appdb.dbo.messagelog
    SELECT message 
      FROM appdb.dbo.messagelog
    

    这个 SELECT ... INTO ... tsql/sql server中的语法要求表不存在。

        2
  •  0
  •   Mike Forman    15 年前

    只要您有正确的网络和防火墙设置,就可以在生产环境中创建指向dev的链接服务器,并运行您用作示例的查询

    http://msdn.microsoft.com/en-us/library/ff772782.aspx

    不过,让您的开发环境在生产中可见听起来并不是一个好主意,因为有可能在生产中显示开发数据。

    如果一个作业将消息日志表转储到一个文件中,并将其复制到dev可以访问的地方,然后将其加载到dev服务器上,那该怎么办?