给大家说明怎么从一台sql server服务器拷贝数据到另外一台sql server服务器
2014-09-14 20:36
351 查看
平台说明:两台sql server2005服务器,上面装了两个相同的数据库
最近由于项目需要,需要将其中一台服务器上的数据库的数据拷贝到另外一台服务器上的数据库上,经过了很多google后终于完成了,在此做个详细的记录,希望能够帮到大家及自己。
一、第一步:sql添加服务器
首先,我们需要用sql 脚本连接上另外一个服务器,
[sql] view
plaincopy
use master
go
/*添加服务器*/
EXEC sp_addlinkedserver
@server = 'hang', /*此名字可以随便取*/
@srvproduct = 'SQL',
@provider = 'SQLOLEDB',
@datasrc = '10.130.26.x' /*说明:另外一台服务器的IP*/
go
/*登陆服务器*/
EXEC sp_addlinkedsrvlogin
@rmtsrvname ='hang', /*需要跟前面连接的同一个名字*/
@useself = 'false',
@locallogin = 'sa',
@rmtuser = 'sa',
@rmtpassword = 'wlw' /*登陆密码*/
上面的代码是sql连接sql的代码,其他数据库之间的连接可参考:http://msdn.microsoft.com/zh-cn/library/ms190479.aspx
二、第二步: 编写脚本测试
这里需要说明一下的是,当我们用上面的代码添加好服务器之后,以后就不用再次连接了,比如我要查询:
[sql] view
plaincopy
select * from hang.epark.dbo.parkHistory
/*hang是刚刚我建立的服务器名字,epark是服务器上的数据库,dbo.parkHistory是具体的表*/
然后就可以编写我们需要用到的代码先在查询窗口测试一下,是否能够成功执行
[sql] view
plaincopy
insert hang.epark.dbo.parkHistory(userNo,cardID,parkingNo_longquan)
select userNo,cardID,parkingNo
from epark.dbo.parkHistory where not exists(select * from hang.epark.dbo.parkHistory where parkingNo_longquan=epark.dbo.parkHistory.parkingNo)
这里用到表的复制语句:insert into ()selcet ,还有not exists(),这个not exists就是将一个表中有,而另外一个表没有的列返回。比如我的这个语句,因为我需要定时将一台服务器上的parkHistory更新的数据上传到另外一台服务器上的parkHistory上面,所以我已经上传过的数据就不再上传,not exists就是这么个功能。
代码测试通过后,我们就可以建立定时任务了。
三、第三步: 添加定时任务
首先我们打开数据库后在 服务器对象->连接服务器,如图
然后右键hang(具体是你自己连接的数据库,这个就是我之前用sql语句连接的)->属性
如图:
原本是没有NT AUTHORITY\SYSTEM账号的,这是我自己添加的,你也需要将NT AUTHORITY\SYSTEM添加到用户映射,远程用户和远程密码就是另外一台数据库登陆的密码,一般用sa,或是你自己建的用户名。然后在下面选择用 使用此安全上下文建立连接 然后输入用户名和密码;以上这个操作主要是为了避免出现“已以用户
NT AUTHORITY/SYSTEM 的身份执行。 用户 'NT AUTHORITY/ANONYMOUS LOGON' 登录失败。 [SQLSTATE 28000] (错误 18456). 该步骤失败。”的错误
接下来需要打开sql server代理服务:开始-->>>运行-->>>输入"services.msc"-->>>进入服务,开启SQL Server Agent服务,并设置为自动
接下来开启一个任务:http://www.cnblogs.com/IPrograming/archive/2012/03/08/2384776.html
注:错误处理
SQL SERVER2005里面,启动SQL代理服务,启动正常,但是在sql server 代理还是显示已禁用代理 xp ,在查询窗口执行以下代码:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE; --加上WITH OVERRIDE
GO
sp_configure 'Agent XPs', 1;
GO
RECONFIGURE WITH OVERRIDE --加上WITH OVERRIDE
GO
最近由于项目需要,需要将其中一台服务器上的数据库的数据拷贝到另外一台服务器上的数据库上,经过了很多google后终于完成了,在此做个详细的记录,希望能够帮到大家及自己。
一、第一步:sql添加服务器
首先,我们需要用sql 脚本连接上另外一个服务器,
[sql] view
plaincopy
use master
go
/*添加服务器*/
EXEC sp_addlinkedserver
@server = 'hang', /*此名字可以随便取*/
@srvproduct = 'SQL',
@provider = 'SQLOLEDB',
@datasrc = '10.130.26.x' /*说明:另外一台服务器的IP*/
go
/*登陆服务器*/
EXEC sp_addlinkedsrvlogin
@rmtsrvname ='hang', /*需要跟前面连接的同一个名字*/
@useself = 'false',
@locallogin = 'sa',
@rmtuser = 'sa',
@rmtpassword = 'wlw' /*登陆密码*/
上面的代码是sql连接sql的代码,其他数据库之间的连接可参考:http://msdn.microsoft.com/zh-cn/library/ms190479.aspx
二、第二步: 编写脚本测试
这里需要说明一下的是,当我们用上面的代码添加好服务器之后,以后就不用再次连接了,比如我要查询:
[sql] view
plaincopy
select * from hang.epark.dbo.parkHistory
/*hang是刚刚我建立的服务器名字,epark是服务器上的数据库,dbo.parkHistory是具体的表*/
然后就可以编写我们需要用到的代码先在查询窗口测试一下,是否能够成功执行
[sql] view
plaincopy
insert hang.epark.dbo.parkHistory(userNo,cardID,parkingNo_longquan)
select userNo,cardID,parkingNo
from epark.dbo.parkHistory where not exists(select * from hang.epark.dbo.parkHistory where parkingNo_longquan=epark.dbo.parkHistory.parkingNo)
这里用到表的复制语句:insert into ()selcet ,还有not exists(),这个not exists就是将一个表中有,而另外一个表没有的列返回。比如我的这个语句,因为我需要定时将一台服务器上的parkHistory更新的数据上传到另外一台服务器上的parkHistory上面,所以我已经上传过的数据就不再上传,not exists就是这么个功能。
代码测试通过后,我们就可以建立定时任务了。
三、第三步: 添加定时任务
首先我们打开数据库后在 服务器对象->连接服务器,如图
然后右键hang(具体是你自己连接的数据库,这个就是我之前用sql语句连接的)->属性
如图:
原本是没有NT AUTHORITY\SYSTEM账号的,这是我自己添加的,你也需要将NT AUTHORITY\SYSTEM添加到用户映射,远程用户和远程密码就是另外一台数据库登陆的密码,一般用sa,或是你自己建的用户名。然后在下面选择用 使用此安全上下文建立连接 然后输入用户名和密码;以上这个操作主要是为了避免出现“已以用户
NT AUTHORITY/SYSTEM 的身份执行。 用户 'NT AUTHORITY/ANONYMOUS LOGON' 登录失败。 [SQLSTATE 28000] (错误 18456). 该步骤失败。”的错误
接下来需要打开sql server代理服务:开始-->>>运行-->>>输入"services.msc"-->>>进入服务,开启SQL Server Agent服务,并设置为自动
接下来开启一个任务:http://www.cnblogs.com/IPrograming/archive/2012/03/08/2384776.html
注:错误处理
SQL SERVER2005里面,启动SQL代理服务,启动正常,但是在sql server 代理还是显示已禁用代理 xp ,在查询窗口执行以下代码:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE WITH OVERRIDE; --加上WITH OVERRIDE
GO
sp_configure 'Agent XPs', 1;
GO
RECONFIGURE WITH OVERRIDE --加上WITH OVERRIDE
GO
相关文章推荐
- 教你怎么从一台sql server服务器拷贝数据到另外一台sql server服务器
- 三条命令实现Mysql,InnoDB数据从一台服务器拷贝到另外一台服务器
- TCP/IP系列之网络分层和数据是怎么从一台主机传送到另外一台主机的
- sqlserver 从一台服务器的数据复制到另外一台服务器上
- 把一个用sql server 2005内置加密方法加密数据的DB从一台电脑备份后,还原到另外一台电脑上,出现的问题的处理办法
- 迁移mysql数据文件从一台服务器到另外一台服务器
- SQL SERVER 数据库 怎么从一个服务器一个表中把数据插入到另一个服务器中的一个表内(纯复制)
- 从一台服务器向另一台服务器拷贝文件
- SQL Server把一台服务器上的数据库转移到另外一台服务器上。而转移完成后,需要给一个"登录"关联一个"用户"时,发生错误:“错误15023:当前数据库中已存在用户或角色”或“用户、组或角色 在当前数据库中已存在”
- Innodb之拷贝InnoDB表从一服务器到另一台服务器
- 定时从一个数据库表中的数据存储到另外一个数据库中的表,而且怎么处理重复的数据?
- ASP.Net如何把文件从一台服务器上传到另外一台服务器
- 如何拷贝sql server 2005中的数据库到另外一台机器
- 从一个表向另外一个表拷贝数据
- sql server 中不同服务器上的数据库中表怎么互导数据
- Innodb之拷贝InnoDB表从一服务器到另一台服务器2
- 拷贝数据库到另外一台服务器
- 从一台机器上的客户端怎么连接到另一台机器的服务器
- ASP.Net如何把文件从一台服务器上传到另外一台服务器
- 如何重装Domino服务器或者将Domino服务器从一台机器迁移到另外一台