sql2000数据同步
㈠ sql2000同步失败,求方法
将
SQL2000的数据库文件,附加到SQL2104上面,提示失败,点击消息查看,在其他信息中记录:无法升级数据库,因为此版本的SQL
Server不支持该数据库的非发布版(539)。不能打开与此版本的sqlservr.exe不兼容的数据库。必须重新创建数据库。无法打开信数据库。
Create Database终止。(错误:950)
2
出现的问题是文件拦让悄中记录的信息版本未知,(对于高版本的无法识别过老的2000版本),解决方法很简单,在有2005或2008数据库的电脑上,附加一下该2000的数据库,相当于转换一下数据格式,然后分离重新附加即可。
3
首先进入SQL2005,并在左侧数据库上点击右键选择“附加”→在弹出窗口点击“添加按钮”→并在路径选简渣择框中,找到要附加的数据库,点击确定。
4
附加完毕之后,文件格式就已经转换完毕了。这个时候将刚才附加的数据库分离出来。依旧在2015的数据库上点击右键→在弹出右键菜单中,选择任务→并再次选择分离,在弹出窗口中直接点确定即可。
5
将
刚在SQL2005/2008中附加的数据库文件,拷贝,并在SQL2014/2012中再次附加数据库。在SQL2014数据库界面上,右键点击数据库
→在弹出窗口点击“添加按钮”→并在路径选择框中,找到要附加的数据库,点滑棚击确定。然后就看见附加窗口一闪,就附加成功了。
6
分离的方法同上,依旧是右键点击刚才附加的数据库的名称→并在弹出窗口点击任务→分离即可完成数据库分离。
㈡ sql2000 在同一个数据库一张表的修改,同步到另一张表。
可以建触发器来实现:
更新
Create
Trigger
truTable1
On
表1
for
Update
-------------------------------------------------------
--Memo
:
临时写写的,给你作个Sample。没有调试阿。
-------------------------------------------------------
As
Update
表2
Set
表2.Name=i.username
,表2.CardID=i.usercardno
From
表2
,
Deleted
d
,Inserted
i
表2.CardID=d.usercardno
and
d.userstate
=
'0'
删除
Create
trigger
trdTable1
On
表1
for
Delete
-------------------------------------------------------
--Memo
:
临时写写的,给你作个Sample。没有调试阿。
-------------------------------------------------------
As
Delete
表2
From
表2,
Deleted
d
Where
表2.CardID=d.usercardno
and
d.userstate
=
'0'
【有疑问可以HI我,或追问,但请不要关闭问题,谢谢!】
㈢ sql server 2000 同步数据问题
发布订阅方式里有分快照方式、事务方式,建议楼主仔细看下,事务方罩坦式可以满足你的要求。事务复制只会把你的操作到另迟侍一台机物旦桐器再执行一次。
㈣ 本台电脑SQL SERVER 2000 的服务器 如何与另一台电脑的SQL SERVER 2000服务器同步
呵呵,这个问题很好,你也用到同步了,很简单。主要是利用sql server的replecation功能,具体地方:控制台根目录->SQL server组->local->数据库->复制->发布和订阅。这个功能主要是进行数据库数据同步的,分为几种情况,可即时同步,也可以在一固定时间同步,也可间隔时间同步。除了SQL Server之间同步,也可以与Oracle同步。希望能够帮到你吧。
可以参考一下,有助于理解:http://www.javaeye.com/topic/82511
㈤ 实现sql2000数据库双向同步
以前模式,一台是服务器,另一台是客户端,共用一个数据库;现在,你可能服务端系统重装过了,计算机名或IP地址改变了,数据库不能共享了。需要在客户机中管理软件中配置文件中改下配置就可以了。
㈥ SQL2000 怎么把数据同步
连接同冲塌一个IP地址.
就是把你其中一台机做位主机.
比如IP是192.168.0.1
那你就把SQL连接改为datasource=192.168.0.1
远程连接
一定要用实际IP..
给你一芹判游个例子
server=IP;Initial
Catalog=DATANAME;
Persist
Security
Info=True;User
ID=NAME;
Password=PASS(这嫌销是有密码的数据库
最好带上密码)
㈦ sql server 2000中如何实现数据同步,有几种复制技术,特点分别是什么
1.快照复制。是指在某一时刻给出版服务器数据库中的数据摄取照相,然后将数据复制倒订阅服务器。此法比较简单,所复制的只是咐笑伏某一时刻数据库的瞬间数据。
2事务复制。可连续监视出版服务器事务日志的改变,事务复制时修改只是在出版服务器上,订阅服务器只以读取数据的方式把衡携修改反应倒订阅服务升腊器。
3合并复制。允许订阅服务器对出版服务器的数据库修改,并将修改合并到目标服务器,目标服务器可以时出版服务器,也可以时订阅服务器。
老师讲的我就记住这些,怎么用我也没用过。
㈧ sql2000 在同一个数据库一张表的修改,同步到另一张表。
使用触发器
创建触发器,触发器是一种特殊的存储过程,在用户试图对指定的表执行指定的数据修改语句时自动执行。Microsoft? SQL Server允许为任何给定的 INSERT、UPDATE 或 DELETE 语句创建多个触发器。
语法
CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
{ { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
[ WITH APPEND ]
[ NOT FOR REPLICATION ]
AS
[ { IF UPDATE ( column )
[ { AND | OR } UPDATE ( column ) ]
[ ...n ]
| IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
{ comparison_operator } column_bitmask [ ...n ]
} ]
sql_statement [ ...n ]
}
}
参数
trigger_name
是触发器的名称。触发器名称必须符合标识符规则,并且在数据库中必须唯一。可以选择是否指定触发器所有者名称。
Table | view
是在其上执行触发器的表或视图,有时称为触发器表或触发器视图。可以选择是否指定表或视图的所有者名称。
WITH ENCRYPTION
加密 syscomments 表中包含 CREATE TRIGGER 语句文本的条目。使用 WITH ENCRYPTION 可防止将明纤触发器作为 SQL Server 复制的一部分发布。
AFTER
指定触发器只有在触发 SQL 语句中指定的所有操作都已成功执行后才激发。所有的引用级联操作和约束检查也必须成功完成后,才能执行此触发器。
如果仅指定 FOR 关键字,则 AFTER 是默认设置。
不能在视图上定义 AFTER 触发器。
INSTEAD OF
指定执行触发器而不是执行触发 SQL 语句,从而替代触发语句的操作。
在表或视图上,每个 INSERT、UPDATE 或 DELETE 语句最多可以定义一个 INSTEAD OF 触发器。然而,可以在每个具有 INSTEAD OF 触发器的视图上定义视图。
INSTEAD OF 触发器不能在 WITH CHECK OPTION 的可更新视图上定义。如果向指定了 WITH CHECK OPTION 选项的可更新慧槐蔽视图添加 INSTEAD OF 触发器,SQL Server 将产生一个错误。用户必须用 ALTER VIEW 删除该选项后才能定义 INSTEAD OF 触发器。
{ [DELETE] [,] [INSERT] [,] [UPDATE] }
是指定在前州表或视图上执行哪些数据修改语句时将激活触发器的关键字。必须至少指定一个选项。在触发器定义中允许使用以任意顺序组合的这些关键字。如果指定的选项多于一个,需用逗号分隔这些选项。
对于 INSTEAD OF 触发器,不允许在具有 ON DELETE 级联操作引用关系的表上使用 DELETE 选项。同样,也不允许在具有 ON UPDATE 级联操作引用关系的表上使用 UPDATE 选项。
WITH APPEND
指定应该添加现有类型的其它触发器。只有当兼容级别是 65 或更低时,才需要使用该可选子句。如果兼容级别是 70 或更高,则不必使用 WITH APPEND 子句添加现有类型的其它触发器(这是兼容级别设置为 70 或更高的 CREATE TRIGGER 的默认行为)。有关更多信息,请参见 sp_dbcmptlevel。
WITH APPEND 不能与 INSTEAD OF 触发器一起使用,或者,如果显式声明 AFTER 触发器,也不能使用该子句。只有当出于向后兼容而指定 FOR 时(没有 INSTEAD OF 或 AFTER),才能使用 WITH APPEND。以后的版本将不支持 WITH APPEND 和 FOR(将被解释为 AFTER)。
NOT FOR REPLICATION
表示当复制进程更改触发器所涉及的表时,不应执行该触发器。
AS
是触发器要执行的操作。
sql_statement
是触发器的条件和操作。触发器条件指定其它准则,以确定 DELETE、INSERT 或 UPDATE 语句是否导致执行触发器操作。
当尝试 DELETE、INSERT 或 UPDATE 操作时,Transact-SQL语句中指定的触发器操作将生效。
触发器可以包含任意数量和种类的 Transact-SQL 语句。触发器旨在根据数据修改语句检查或更改数据;它不应将数据返回给用户。触发器中的 Transact-SQL 语句常常包含控制流语言。CREATE TRIGGER 语句中使用几个特殊的表:
deleted 和 inserted 是逻辑(概念)表。这些表在结构上类似于定义触发器的表(也就是在其中尝试用户操作的表);这些表用于保存用户操作可能更改的行的旧值或新值。例如,若要检索 deleted 表中的所有值,请使用:
SELECT *
FROM deleted
如果兼容级别等于 70,那么在 DELETE、INSERT 或 UPDATE 触发器中,SQL Server 将不允许引用 inserted 和 deleted 表中的 text、ntext 或 image 列。不能访问 inserted 和 deleted 表中的 text、ntext 和 image 值。若要在 INSERT 或 UPDATE 触发器中检索新值,请将 inserted 表与原始更新表联接。当兼容级别是 65 或更低时,对 inserted 或 deleted 表中允许空值的text、ntext 或 image 列,将返回空值;如果这些列不可为空,则返回零长度字符串。
当兼容级别是 80 或更高时,SQL Server 允许在表或视图上通过 INSTEAD OF 触发器更新 text、ntext 或 image 列。
n
是表示触发器中可以包含多条 Transact-SQL 语句的占位符。对于 IF UPDATE (column) 语句,可以通过重复 UPDATE (column) 子句包含多列。
IF UPDATE (column)
测试在指定的列上进行的 INSERT 或 UPDATE 操作,不能用于 DELETE 操作。可以指定多列。因为在 ON 子句中指定了表名,所以在 IF UPDATE 子句中的列名前不要包含表名。若要测试在多个列上进行的 INSERT 或 UPDATE 操作,请在第一个操作后指定单独的 UPDATE(column) 子句。在 INSERT 操作中 IF UPDATE 将返回 TRUE 值,因为这些列插入了显式值或隐性 (NULL) 值。
说明 IF UPDATE (column) 子句的功能等同于 IF、IF...ELSE 或 WHILE 语句,并且可以使用 BEGIN...END 语句块。有关更多信息,请参见控制流语言。
可以在触发器主体中的任意位置使用 UPDATE (column)。
column
是要测试 INSERT 或 UPDATE 操作的列名。该列可以是 SQL Server 支持的任何数据类型。但是,计算列不能用于该环境中。有关更多信息,请参见数据类型。
IF (COLUMNS_UPDATED())
测试是否插入或更新了提及的列,仅用于 INSERT 或 UPDATE 触发器中。COLUMNS_UPDATED 返回 varbinary 位模式,表示插入或更新了表中的哪些列。
COLUMNS_UPDATED 函数以从左到右的顺序返回位,最左边的为最不重要的位。最左边的位表示表中的第一列;向右的下一位表示第二列,依此类推。如果在表上创建的触发器包含 8 列以上,则 COLUMNS_UPDATED 返回多个字节,最左边的为最不重要的字节。在 INSERT 操作中 COLUMNS_UPDATED 将对所有列返回 TRUE 值,因为这些列插入了显式值或隐性 (NULL) 值。
可以在触发器主体中的任意位置使用 COLUMNS_UPDATED。
bitwise_operator
是用于比较运算的位运算符。
updated_bitmask
是整型位掩码,表示实际更新或插入的列。例如,表 t1 包含列 C1、C2、C3、C4 和 C5。假定表 t1 上有 UPDATE 触发器,若要检查列 C2、C3 和 C4 是否都有更新,指定值 14;若要检查是否只有列 C2 有更新,指定值 2。
comparison_operator
是比较运算符。使用等号 (=) 检查 updated_bitmask 中指定的所有列是否都实际进行了更新。使用大于号 (>) 检查 updated_bitmask 中指定的任一列或某些列是否已更新。
column_bitmask
是要检查的列的整型位掩码,用来检查是否已更新或插入了这些列。
注释
触发器常常用于强制业务规则和数据完整性。SQL Server 通过表创建语句(ALTER TABLE 和 CREATE TABLE)提供声明引用完整性 (DRI);但是 DRI 不提供数据库间的引用完整性。若要强制引用完整性(有关表的主键和外键之间关系的规则),请使用主键和外键约束(ALTER TABLE 和 CREATE TABLE 的 PRIMARY KEY 和 FOREIGN KEY 关键字)。如果触发器表存在约束,则在 INSTEAD OF 触发器执行之后和 AFTER 触发器执行之前检查这些约束。如果违反了约束,则回滚 INSTEAD OF 触发器操作且不执行(激发)AFTER 触发器。
可用 sp_settriggerorder 指定表上第一个和最后一个执行的 AFTER 触发器。在表上只能为每个 INSERT、UPDATE 和 DELETE 操作指定一个第一个执行和一个最后一个执行的 AFTER 触发器。如果同一表上还有其它 AFTER 触发器,则这些触发器将以随机顺序执行。
如果 ALTER TRIGGER 语句更改了第一个或最后一个触发器,则将除去已修改触发器上设置的第一个或最后一个特性,而且必须用 sp_settriggerorder 重置排序值。
只有当触发 SQL 语句(包括所有与更新或删除的对象关联的引用级联操作和约束检查)成功执行后,AFTER 触发器才会执行。AFTER 触发器检查触发语句的运行效果,以及所有由触发语句引起的 UPDATE 和 DELETE 引用级联操作的效果。
触发器限制
CREATE TRIGGER 必须是批处理中的第一条语句,并且只能应用到一个表中。
触发器只能在当前的数据库中创建,不过触发器可以引用当前数
㈨ SQl 2000数据库同步问题
数据的同步中主要考虑的三部分,可以理解成三台主机。发布服务器,分发服务器和订阅服务器;可以从字面的意思理解,要实现的功能实际就是让订阅服务器通过分发服务器保持数据及时地和发布服务器上的数据一致。整个执行过程是这样一来的:
a.订阅服务器应该有个初始化,一般来说我们开始做这个同步任务的时候,发布服务器已经有了相当的数据量了,而我们的订阅服务器应该是新建的服务。即使发布中没有数据,也需要把他的数据库结构初始化到订阅服务器上。
b.我采用的是事物复制,发布服务器的数据发生变化后,相当于触发了一个更新操作,而事物复制可以在设定的时间把数据更新的操作更新到订阅服务器中去。当然,这个操作需要经过分发服务器。在我的测试中,我是把发布服务器和分发服务器设置为同一台主机,可以顺利实现数据在案分钟内同步。
>>在操作的起始,需要考虑订阅服务器是否有和发布服务器相同结构的数据库,如果有,需要做的就是使用代理把发布服务器现有的数据初始化过去;昌祥唯如果没有对应的相同结构的数据库,就需要要把发布服务器当前的数据库结构和当前的数据都初始化到订阅服务器中。当然这里所说的操作都是在下面的实施步骤中实现,不需要单独处理。
>>如果说对Windows系统有所要求的话,就应该保证这三个服务器(发布,分发,订阅)在同个域中,以同一个域管理员帐号身份运行,操作如下:
a.进入相应的服务器,控制面板->服务->SQLSERVERAGENT,设置登录,三台服务器同样设置。
b.操作前,也不允许这三台服务器对应的别名使用呢称,比如"LOCAL",这样的别名要删除重建,可以采用主机名,比如:server02.
下面开始执行数据库同步的操作:
>>配置发布服务器和分发服务器:
a.选中对应服务器的注册名->工具->复制->配置发布、订阅和分发,直接按照默认设置向下执行,直到完成。关闭。
b.再一次选中这个服务器服务器的注册名->工具->复制->配置发布、订阅和分发,可以看到这次界面和步骤a中的界面有所不同,我们只需要配置一下 发布服务器,发布数据库,订阅服务器。(我的发布数据库采用的是事物性的)。点“确定”完成操作。<标记P>
>>创建发布,可以选中相应的注册,用工具->复制->创建和管理发布或者在该注册下面的 复制->发布内容 选中后,在右边空白处,右键,新建发布,来创建你的发布。我选择的是事物发布,按照默认设置,选择你要发布的表或其他对象,其他地方不需要修改,直到完成操作。
>>修改发布属性:选择“状态”->立即运行代理程序;代理程序属性->设置你的调度,比如一分钟一次。(调度->编辑->更改;通知->写入windows应用程序事件日志),"确定"完成操作。
>>创建订阅:选择发布服务器对应的注册,复制->发耐培布内容->在这个内容上右键,强制新订阅,->"下一步",选择订阅服务器(在标记P那一步选择的订阅服务器)->“下一步”->选择你有的数据库,或者新建一个数据库
->"下一步"-> 修改你需要的调度->按照默认设置,直到完成。
到这里就可以完成了,修改发布服务器数据库中的内容,等一两分钟,数据就同步到订阅服务器中了。不过由于第一次执行需要快照,如果发布库中有一定的内容,第一次执行可能需要几分钟宴态时间。如果数据不能同步过去,大家是调度设置时间太短(比如1分钟)使快照不能完成,所以后面的步骤无法执行,遇到这样的情况的话,
选中你发布的内容,设置属性,在“状态”中“立即运行代理程序”,这样的话,数据会马上同步过去的。
㈩ 如何把sql2000中数据库定时同步到sql2008数据库
只有一张表,数据量不大的情况。
在B服务器的SQL
2008
数据库上创建A服务的服务器连接,然后定时删除b1表数据重新插入。
--创建链接服务器
exec
sp_addlinkedserver
'
SQL2000
',
'
',
'SQLOLEDB
',
'远程服务器名或ip地址
'
exec
sp_addlinkedsrvlogin
'SQL2000',
'false
',null,
'用户名
',
'密码
'
--配置计划任务定期执行
TRUNCATE
TABLEB.dbo.b1
INSERT
INTO
B.dbo.b1
SELECT
*
from
SQL2000.A.dbo.a1
如果a1表有自增列,或
时间戳
可以增量同步
--另外可以使用同义词,相当
于建
一个
超链接
,数据不会存储高B服务器,但数据与A服务器是时时的。
CREATE
SYNONYM
[dbo].[b1]
FOR
SQL2000.A.dbo.a1
GO
--还可以利用SQL
Server
的复制功能,具体参考相关资料。