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
的復制功能,具體參考相關資料。