从一个域上的数据库中选择记录,将它们插入到不同域的数据库中

时间:2010-11-11 14:52:23

标签: sql sql-server tsql

假设我有一个名为MessageLog的表:

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

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

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

我可以在Dev域内看到Production域名,但我无法在Production域内看到Dev域名。这意味着我将不得不在Production域中工作。

如何撰写从MessageLog中选择Production条记录的查询并将其插入Dev

在伪SQL中,我想像这样:

Select Message From AppDb.dbo.MessageLog
Into Dev.DevSql\Sql2k5.AppDb.dbo.MessageLog

2 个答案:

答案 0 :(得分:1)

您希望在Production实例上设置Linked Server instance,该实例使用开发实例上的帐户指向开发实例,并在相应的表上使用INSERT权限。防火墙/网络访问提供...

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

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

TSQL / SQL Server中的SELECT ... INTO ...语法要求该表尚不存在。

答案 1 :(得分:0)

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

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

从生产环境中看到开发环境看起来并不是一个好主意,因为有可能在生产中显示开发数据。

将MessageLog表转储到文件的作业,将其复制到DEV可以访问的位置,然后将其加载到开发服务器上,该怎么办?