使用sqlcmd将数据从SQL Server 2008移动到远程SQL Server 2000

时间:2014-06-04 18:40:26

标签: sql sql-server sql-server-2008 sql-server-2000 sqlcmd

设置:
我有两台不同的机器,一台是MS SQL Server 2008,它是我的主机,另一台是MS SQL Server 2000.新生成的数据存储在主服务器(2008)的特定表中。

问题:
我的主机具有有限的存储空间,而我的旧版机器具有较旧的SQL版本(2000),并没有这样的限制。

可能的解决方案:
至少作为临时解决方案,我可以尝试使用由Windows任务计划程序运行的sqlcmd,按日计划将一些数据从主计算机移动到辅助计算机。 我的数据中最大部分存储在一个表中,因此我们的想法是“切割”#34;它们来自主服务器上的表,并将它们附加到"备份/仓库/存储"我的辅助服务器上的表。

到目前为止我尝试了什么:
到目前为止,我还没有能够同时从主服务器连接到两台服务器,至少使用sqlcmd。 sqlcmd对它可以同时创建的连接有限制吗?

其他可能的方式:
那个案子有建议的做法吗?编写一个vbs脚本从主服务器导出并导入到辅助服务器是不是一个好主意?

欢迎所有更正和建议。谢谢你的时间。

1 个答案:

答案 0 :(得分:1)

首先,链接服务器。从要插入的服务器,运行此SQL(使用任何要运行SQL的工具... SQL Server Management Studio或SQLCMD或OSQL或其他):

EXEC sp_addlinkedServer N'remoteSqlServer\Instance', N'SQL Server'
EXEC sp_addlinkedsrvlogin @rmtsrvname = N'remoteSqlServer\Instance', @useself = 'FALSE', @rmtuser = N'user', @rmtpassword = N'password'

替换" remoteSqlServer \ Instance"使用要复制数据FROM的SQL Server的实际主机名\实例。同时替换"用户"和#34;密码"使用适当的登录凭据到该服务器。

完成此操作后,您可以针对此服务器执行以下SQL(从任何地方,包括SQLCMD):

INSERT INTO [LocalTable]
SELECT * FROM [remoteSqlServer\Instance].[DatabaseName].[schema].[TableName]

同样,这只是一个示例...您将所有这些值替换为适合您的源数据库和目标数据库的值(方括号中的所有内容)。例如,它可能看起来像这样:

INSERT INTO [HistoricalData]
SELECT * FROM [DBServer\SQL2008].[ProductionDatabase].[dbo].[CurrentData]

我希望这会有所帮助。