跨服务器SQL

跨服务器SQL

Cross-server SQL

我想将数据从一台服务器的数据库移植到另一台服务器的数据库。
这些数据库都位于不同的mssql 2005服务器上。
复制可能不是一种选择,因为目标数据库是在[时间间隔]的基础上从头生成的。

最好我会做类似

的事情

1
2
3
4
INSERT *
FROM db1/table1
INTO db2/table2
WHERE rule1 = TRUE

很明显,连接凭据将在此脚本中存储。


我认为您想要做的就是按照此msdn文章创建链接服务器。然后,您将使用4部分对象名称进行选择,例如:

1
SELECT * FROM ServerName.DbName.SchemaName.TableName

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
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

您可以使用链接服务器的路由。

您只是不能使用select *,而必须在select中插入。

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

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


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

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

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


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

对于这两种选择,SSIS都能胜任,特别是如果您打算定期进行转移。

如果您只想从1或2个表中复制一些数据,而更喜欢在SQL Management Studio中使用TSQL进行复制,则可以使用pelser建议的链接服务器

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

    是否可以选择SQL Server Integration Services(SSIS)?如果是这样,我会用它。


    您可以使用数据转换服务来完成这项工作吗?这提供了各种各样的螺栓工具来完成这种事情。

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


    1
    2
    3
    CREATE VIEW newR1
    AS
    SELECT * FROM OPENQUERY ([INSTANCE_NAME], 'select * from DbName.SchemaName.TableName')


    推荐阅读