单项数据同步 内网一台SQL Server 外网一台SQL Server

fanshuyi 2005-06-07 03:56:35
单项数据同步 内网一台SQL Server 外网一台SQL Server
当内网数据库变化时 马上修改外网数据库
外网数据库只做查询用,因此外网不允许访问内网的数据库。
...全文
307 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjcxc 2005-06-08
  • 打赏
  • 举报
回复
如果能方便地把文件传递给外网服务器(稳定性要得到保障),可以考虑日志传送或者快照发布.
duanduan1122 2005-06-07
  • 打赏
  • 举报
回复
如何删除日志传送(企业管理器)
删除日志传送

展开一个服务器组,然后展开一个主服务器。


展开管理,然后单击"数据库维护计划"。


在详细信息窗格中,右击要删除的数据库维护计划,然后单击"属性"。


单击"日志传送"选项卡,然后单击"删除日志传送"。
这可以停止主服务器上的日志传送,并删除所有辅助服务器以及监视服务器。必须删除数据库维护计划,才能删除附加的作业。
duanduan1122 2005-06-07
  • 打赏
  • 举报
回复
如何配置日志传送(企业管理器)
新增信息 - SQL Server 2000 SP3。

使用数据库维护计划向导配置日志传送



说明 在配置日志传送之前,必须在主数据库上创建一个共享以使事务日志可用。这是从事务日志转储目录创建的共享。例如,如果将日志转储到目录 e:\data\tlogs\,则可以从该目录创建 \\logshipping\tlogs 共享。

在"选择数据库"屏幕上,选择"如下数据库"复选框,然后选择要进行日志传送的数据库。
如果选择了多个数据库,则不会执行日志传送,日志传送选项也不可用。不允许选择已配置了日志传送的数据库。

选择"将事务日志传送到其它的 SQL Server(日志传送)"复选框。


继续执行向导,指定其余的数据库维护选项,直到到达"指定日志传送目的"屏幕。


单击"添加"按钮添加目的数据库。
要使该选项可用,必须已经在向导的前面步骤中选择了使用日志传送。

在"添加目的数据库"屏幕中,选择一个服务器名。
该服务器必须已经注册,而且正在运行 Microsoft® SQL Server™ 2000 企业版,这样才能显示在下拉列表中。如果要使该目的成为可用的源数据库,必须选择“允许数据库采用主角色”复选框。如果该复选框未被选中,则该目的数据库将来就无法采用源数据库角色。如果已选定“允许数据库采用主角色”复选框,还必须在日志将要备份到的目的数据库中指定"事务日志备份目录"。

若要从默认位置更改事务日志目的数据库,请在"目录"框中输入一个位置。


如果源数据库不在目的数据库上,则选择"创建新数据库"复选框。
"数据库名称"框将默认为源数据库名。如果想要在目的服务器上用另一个数据库名,则指定一个新名称。如果已经选择了允许该目的数据库承担源角色,就无法从默认值改变该数据库的名称。

如果已经选择了"创建新数据库"复选框,则还必须在"用于数据"和"用于日志"框中指定目的数据库上数据和日志的文件目录。


如果源数据库已经存在于目的数据库上,则选择"使用现有数据库"复选框。如果目的服务器上的数据库名不同,则在"数据库名称"框中输入该名。该数据库必须是使用 WITH STANDBY 选项还原过的,以便正确接受日志。


在"初始化目的数据库"屏幕上,执行下列操作之一:
单击"立即提取完全数据库备份"。
–或-

单击"使用最新备份文件"以初始化目的数据库。
在"日志传送调度"屏幕上,查看默认的日志传送调度。如果要改变调度,请单击"更改"。


在"复制/装载的频率"框中,设置希望目的服务器从源服务器备份和还原事务日志的频率(以分钟计)。


在"装载延迟"框中,设置希望目的数据库从源服务器还原事务日志之前要等待的延迟(以分钟计)。
该框的默认值为 0 分钟,表示目的数据库应立即还原所有事务日志备份。

在"文件保持期"框中指定事务日志在删除之前应该存留的时间长度。


从"日志传送阈值"对话框中,设置"备份警报阈值"。
这是距离源服务器上一次事务日志备份时间的最长期限。一旦时间超过此指定阈值,监视服务器将生成警报。

在"不同步警报阈值"框中,指定源服务器上最近一次事务日志备份与目的服务器最近一次事务日志还原之间的时间。
一旦时间超过此指定阈值,监视服务器将生成警报。

在"指定日志传送监视器信息"屏幕中,键入将监视日志传送的服务器名称。


单击"使用 Windows 身份验证"或"使用 SQL Server 身份验证"连接到监视服务器。log_shipping_monitor_probe 登录名是固定的,必须使用它连接到监视服务器。如果这是一个新帐户,则选择一个新密码。如果该帐户已经存在于监视服务器上,则必须指定现有的密码。


安全说明 如果可能,请使用 Windows 身份验证。



说明 使用数据库维护向导设置日志传送,只可以向磁盘传送日志,而不能使用"备份到磁带"选项。
duanduan1122 2005-06-07
  • 打赏
  • 举报
回复
日志传送
在 Microsoft® SQL Server™ 2000 企业版中,可以使用日志传送不间断地将事务日志从一个数据库提供给另一个。不间断地从源数据库中备份事务日志,然后将它们复制并还原到目的数据库,使目的数据库与源数据库保持同步。这使您得以有一台备用服务器,为将查询处理从主计算机(源服务器)卸载到只读目的服务器上提供了一条途径。日志传送使用的所有服务器上都必须安装 SQL Server 2000 企业版。

在下例中,企业有五台服务器:服务器 A、服务器 B、服务器 C、服务器 D 和服务器 E。服务器 B 是源服务器,在该服务器上执行和复制日志的备份和还原。服务器 C、服务器 D和服务器 E 包含目的数据库,而服务器 B 的日志备份将还原到目的数据库,以保持这些服务器与服务器 B 同步。服务器 A 是监视服务器,在该服务器上监视整个企业内的日志传送。每台目的服务器或源服务器只由一台监视服务器维护。数据库维护计划向导用于定义服务器 B 备份日志备份的时间与服务器 C、D 和 E 必须还原日志备份的时间之间的适当延迟。如果延迟超出了定义的时间,服务器 A 将使用 SQL Server 代理程序生成警报。该警报助于诊断目的服务器还原备份失败的原因。

不要将监视服务器作为源服务器,因为监视服务器用于维护关于日志传送系统的关键信息。应定期备份监视服务器。保持监视服务器独立对性能也有益,因为监视会增加不必要的开销。而且,源服务器作为支持生产工作负荷的服务器,最有可能出现故障,从而使监视中断。源服务器和目的服务器可以位于同一台计算机上。但在这种情况下,SQL Server 2000 故障转移群集可能提供更好的结果。有关更多信息,请参见故障转移群集。

如果将为日志传送配置的所有辅助数据库从辅助服务器中删除,则不能再使用日志传送数据库维护计划将辅助数据库重新添加到计划中来。必须首先删除日志传送数据库维护计划,然后为要在辅助数据库上运行的日志传送重新进行配置。

使用数据库维护计划向导配置日志传送
若要很容易地配置日志传送,请使用数据库维护计划向导。利用此向导您将可以:

定义日志生成频率、备份与还原操作之间的时间以及什么时候目的服务器与源服务器异步。


注册任何新的服务器。


在所有目的服务器上创建源数据库。在通过数据库维护计划向导添加目的数据库时,可以选择在目的服务器上创建数据库或使用现有数据库。在为日志传送配置数据库之前,任何现有数据库必须为备用模式。


指定哪台目的服务器可以采用源服务器角色。


设置还原延迟。还原延迟定义还原事务日志前必须等待的时间。如果源服务器出现故障,该延迟将为损坏的日志被还原到目的服务器上之前提供额外时间。


创建调度来设置备份调度。
在使用数据库维护计划向导之前,需要考虑下列事项:

配置日志传送的用户必须是 sysadmin 服务器角色成员,以便有权修改要进行日志传送的数据库。


一次只能在一个数据库上配置日志传送。如果选择的数据库不止一个,向导上的日志传送选项将禁用。


用于启动 MSSQLServer 和 SQLServerAgent 服务的登录必须能够访问日志传送计划作业、源服务器和目的服务器。


当使用数据库维护计划向导配置日志传送时,只能将日志传送到磁盘。备份到磁带选项不可用。
手工配置日志传送
如果在运行 SQL Server 7.0 Service Pack 2 (SP2) 的计算机上启用挂起升级选项,则 SQL Server 2000 支持从 SP2 事务日志手工传送日志。

若要启用此选项,请执行下列代码:

EXEC sp_dboption 'database name', 'pending upgrade', 'true'

但是,当在传送日志后还原数据库时,只能使用 NORECOVERY 选项恢复数据库。



说明 在运行 SP2 的计算机和运行 SQL Server 2000 实例的计算机之间手工配置日志传送时,不能使用 SQL Server 复制。

fanshuyi 2005-06-07
  • 打赏
  • 举报
回复
我考虑过这个方法 因为数据太庞大了 实现起来非常有难度。
zjcxc 2005-06-07
  • 打赏
  • 举报
回复
--用触发器即时同步两个表的实例(同服务器):

--测试环境:SQL2000,数据库名:test1,test2,表名:test

--实现test1上的修改,同步数据库test2

--创建测试表,不能用标识列做主键,因为不能进行正常更新
use test2
go

if exists (select * from dbo.sysobjects where id = object_id(N'[test]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [test]
go

create table test(id int not null constraint PK_test primary key
,name varchar(10))
go

use test1
go

if exists (select * from dbo.sysobjects where id = object_id(N'[test]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [test]
go

create table test(id int identity(1,1) primary key
,name varchar(10))
go

--创建同步的触发器(仅test1上需要)
create trigger t_test on test
for insert,update,delete
as
set XACT_ABORT on
begin tran
delete from test2..test
where id in(select id from deleted)
insert into test2..test
select * from inserted
commit tran
go

--插入数据测试
insert into test
select 1,'aa'
union all select 2,'bb'
union all select 3,'c'
union all select 4,'dd'
union all select 5,'ab'
union all select 6,'bc'
union all select 7,'ddd'

--删除数据测试
delete from test where id in(1,4,6)

--更新数据测试
update test set name=name+'_123' where id in(3,5)

--显示测试的结果
select * from test a
full join test2..test b on a.id=b.id
zjcxc 2005-06-07
  • 打赏
  • 举报
回复
/*--同步两个数据库的示例

测试环境及同步要求:

有数据库服务器srv1和srv2,两台电脑能互相访问,有数据
srv1.库名..author有字段:id,name,phone,
srv2.库名..author有字段:id,name,telphone,adress

要求:
srv1.库名..author增加记录则srv1.库名..author记录增加
srv1.库名..author的phone字段更新,则srv1.库名..author对应字段telphone更新

--邹建 2004.12(引用请保留此信息)--*/

--大致的处理步骤
--1.在 srv1 上创建连接服务器,以便在 srv1 中操作 srv2,实现同步
exec sp_addlinkedserver 'srv2','','SQLOLEDB','srv2的sql实例名或ip'
exec sp_addlinkedsrvlogin 'srv2','false',null,'用户名','密码'
go

--2.在 srv1 和 srv2 这两台电脑中,启动 msdtc(分布式事务处理服务),并且设置为自动启动
我的电脑--控制面板--管理工具--服务--右键 Distributed Transaction Coordinator--属性--启动--并将启动类型设置为自动启动
go


--3.实现同步处理
--在srv1中创建如下的同步处理存储过程
create proc p_process
as
--更新修改过的数据
update b set name=i.name,telphone=i.telphone
from srv2.库名.dbo.author b,author i
where b.id=i.id and
(b.name<>i.name or b.telphone<>i.telphone)

--插入新增的数据
insert srv2.库名.dbo.author(id,name,telphone)
select id,name,telphone from author i
where not exists(
select * from srv2.库名.dbo.author where id=i.id)

--删除已经删除的数据(如果需要的话)
delete b
from srv2.库名.dbo.author b
where not exists(
select * from author where id=b.id)
go

--然后创建一个作业定时调用上面的同步处理存储过程就行了

企业管理器
--管理
--SQL Server代理
--右键作业
--新建作业
--"常规"项中输入作业名称
--"步骤"项
--新建
--"步骤名"中输入步骤名
--"类型"中选择"Transact-SQL 脚本(TSQL)"
--"数据库"选择执行命令的数据库
--"命令"中输入要执行的语句: exec p_process
--确定
--"调度"项
--新建调度
--"名称"中输入调度名称
--"调度类型"中选择你的作业执行安排
--如果选择"反复出现"
--点"更改"来设置你的时间安排


然后将SQL Agent服务启动,并设置为自动启动,否则你的作业不会被执行

设置方法:
我的电脑--控制面板--管理工具--服务--右键 SQLSERVERAGENT--属性--启动类型--选择"自动启动"--确定.
fanshuyi 2005-06-07
  • 打赏
  • 举报
回复
怎么实现?

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧