我想将数据从一台服务器的数据库移植到另一台服务器的数据库。这两个数据库都位于不同的 mssql 2005 服务器上。复制可能不是一个选项,因为目标数据库是按[时间间隔]从头开始生成的。

我最好会做类似的事情

insert *
from db1/table1
into db2/table2
where rule1 = true

很明显,连接凭据将出现在该脚本的某个位置。

有帮助吗?

解决方案

我认为你想要做的是创建一个链接服务器 msdn 文章。然后,您可以选择使用由 4 部分组成的对象名称,例如:

Select * From ServerName.DbName.SchemaName.TableName

其他提示

您可以像这样使用开放数据源:

EXEC sp_configure 'show advanced options', 1
GO
RECONFIGURE
GO

EXEC sp_configure 'Ad Hoc Distributed Queries', 1
GO
RECONFIGURE
GO


SELECT  *
FROM    OPENDATASOURCE('SQLOLEDB',
                   'Data Source=<Ip Of Your Server>;
                    User ID=<SQL User Name>;Password=<SQL password>').<DataBase name>.<SchemaName>.<Table Or View Name>

Go

SQL Server 集成服务 (SSIS) 是一个选项吗?如果是这样,我会用它。

您会将数据库的全部内容从一台服务器传输到另一台服务器,还是仅传输几个表中的部分数据?

对于这两个选项,SSIS 都可以完成这项工作,特别是如果您计划定期进行传输。

如果您只想从 1 个或 2 个表复制一些数据,并且更喜欢在 SQL Management Studio 中使用 TSQL 来执行此操作,那么您可以按照 pelser 的建议使用链接服务器

  1. 将源数据库服务器设置为链接服务器
  2. 使用以下语法来访问数据
select columnName1, columnName2, etc from serverName.databaseName.schemaName.tableName

好吧,我不同意你对复制的评论。您可以通过从头开始创建数据库来启动复制,并且可以控制通过更新可用客户端数据库或简单地重新创建数据库来完成更新。

自动复制将通过自动管理密钥和关系来简化您的工作。

我认为最简单的做法是通过MSSQL Server Studio启动快照复制,获取T-SQL相应的脚本(即发布和订阅相应的T-SQL指令),并将这些脚本记录为作业的一部分SQL 代理的作业列表或作为复制文件夹中的复制作业。

您可以走链接服务器路线。

你只是不能使用 select * into 你必须插入到 select 中。

如果您没有相关经验,我会避免复制,因为如果它损坏,则很难修复,并且如果管理不当,可能容易出现其他问题。

保持简单,尤其是在数据库较小的情况下。

您可以使用数据转换服务来完成这项工作吗?这提供了各种用于执行此类操作的组合工具。

您可以从 Microsoft 网站下载 SQL Server 2005 功能包这里

CREATE VIEW newR1 
AS
SELECT * from OPENQUERY ([INSTANCE_NAME], 'select * from DbName.SchemaName.TableName')
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top