国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

在SQL Server 2000里設(shè)置和使用數(shù)據(jù)庫(kù)復(fù)制

2024-08-31 00:50:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

2005-08 余楓
                                   
    在SQL Server 2000里設(shè)置和使用數(shù)據(jù)庫(kù)復(fù)制之前,應(yīng)先檢查相關(guān)的幾臺(tái)SQL Server服務(wù)器下面幾點(diǎn)是否滿足:
   
    1、MSSQLserver和Sqlserveragent服務(wù)是否是以域用戶身份啟動(dòng)并運(yùn)行的(./administrator用戶也是可以的)
   
        如果登錄用的是本地系統(tǒng)帳戶local,將不具備網(wǎng)絡(luò)功能,會(huì)產(chǎn)生以下錯(cuò)誤:
       
        進(jìn)程未能連接到Distributor '@Server name'
       
      (如果您的服務(wù)器已經(jīng)用了SQL Server全文檢索服務(wù), 請(qǐng)不要修改MSSQLserver和Sqlserveragent服務(wù)的local啟動(dòng)。
       會(huì)照成全文檢索服務(wù)不能用。請(qǐng)換另外一臺(tái)機(jī)器來(lái)做SQL Server 2000里復(fù)制中的分發(fā)服務(wù)器。)   
       
      修改服務(wù)啟動(dòng)的登錄用戶,需要重新啟動(dòng)MSSQLserver和Sqlserveragent服務(wù)才能生效。   
       
    2、檢查相關(guān)的幾臺(tái)SQL Server服務(wù)器是否改過(guò)名稱(需要srvid=0的本地機(jī)器上srvname和datasource一樣)
   
       在查詢分析器里執(zhí)行:
         use master
         select srvid,srvname,datasource from sysservers   
        
       如果沒(méi)有srvid=0或者srvid=0(也就是本機(jī)器)但srvname和datasource不一樣, 需要按如下方法修改:
        
         USE master
        GO
        -- 設(shè)置兩個(gè)變量
        DECLARE @serverPRoperty_servername  varchar(100),
                @servername    varchar(100)
        -- 取得Windows NT 服務(wù)器和與指定的 SQL Server 實(shí)例關(guān)聯(lián)的實(shí)例信息
        SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
        -- 返回運(yùn)行 Microsoft SQL Server 的本地服務(wù)器名稱
        SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
        -- 顯示獲取的這兩個(gè)參數(shù)
        select @serverproperty_servername,@servername
        --如果@serverproperty_servername和@servername不同(因?yàn)槟愀倪^(guò)計(jì)算機(jī)名字),再運(yùn)行下面的
        --刪除錯(cuò)誤的服務(wù)器名
        EXEC sp_dropserver @server=@servername
        --添加正確的服務(wù)器名
        EXEC sp_addserver @server=@serverproperty_servername, @local='local'
       
       修改這項(xiàng)參數(shù),需要重新啟動(dòng)MSSQLserver和Sqlserveragent服務(wù)才能生效。   
      
       這樣一來(lái)就不會(huì)在創(chuàng)建復(fù)制的過(guò)程中出現(xiàn)18482、18483錯(cuò)誤了。

    3、檢查SQL Server企業(yè)管理器里面相關(guān)的幾臺(tái)SQL Server注冊(cè)名是否和上面第二點(diǎn)里介紹的srvname一樣
   
        不能用ip地址的注冊(cè)名。
       
      (我們可以刪掉IP地址的注冊(cè),新建以SQL Server管理員級(jí)別的用戶注冊(cè)的服務(wù)器名)
       
       這樣一來(lái)就不會(huì)在創(chuàng)建復(fù)制的過(guò)程中出現(xiàn)14010、20084、18456、18482、18483錯(cuò)誤了。   
       
    4、檢查相關(guān)的幾臺(tái)SQL Server服務(wù)器網(wǎng)絡(luò)是否能夠正常訪問(wèn)
   
        如果ping主機(jī)IP地址可以,但ping主機(jī)名不通的時(shí)候,需要在   
       
            winnt/system32/drivers/etc/hosts   (WIN2000)
            windows/system32/drivers/etc/hosts (WIN2003)
           
               文件里寫(xiě)入數(shù)據(jù)庫(kù)服務(wù)器IP地址和主機(jī)名的對(duì)應(yīng)關(guān)系。
              
           例如:   
              
           127.0.0.1       localhost
           192.168.0.35    Oracledb    oracledb
           192.168.0.65    fengyu02    fengyu02
           202.84.10.193   bj_db       bj_db   
              
               或者在SQL Server客戶端網(wǎng)絡(luò)實(shí)用工具里建立別名,例如:


      5、系統(tǒng)需要的擴(kuò)展存儲(chǔ)過(guò)程是否存在(如果不存在,需要恢復(fù)):
     
         sp_addextendedproc 'xp_regenumvalues',@dllname ='xpstar.dll'
         go
         sp_addextendedproc 'xp_regdeletevalue',@dllname ='xpstar.dll'
         go
         sp_addextendedproc 'xp_regdeletekey',@dllname ='xpstar.dll'
         go             
         sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll' 


    接下來(lái)就可以用SQL Server企業(yè)管理器里[復(fù)制]-> 右鍵選擇
        ->[配置發(fā)布、訂閱服務(wù)器和分發(fā)]的圖形界面來(lái)配置數(shù)據(jù)庫(kù)復(fù)制了。
   
    下面是按順序列出配置復(fù)制的步驟:

    一、建立發(fā)布和分發(fā)服務(wù)器
   
        [歡迎使用配置發(fā)布和分發(fā)向?qū)->[選擇分發(fā)服務(wù)器]
   
       ->[使"@servername"成為它自己的分發(fā)服務(wù)器,SQL Server將創(chuàng)建分發(fā)數(shù)據(jù)庫(kù)和日志]
      
       ->[制定快照文件夾]-> [自定義配置] -> [否,使用下列的默認(rèn)配置] -> [完成]
      
    上述步驟完成后, 會(huì)在當(dāng)前"@servername" SQL Server數(shù)據(jù)庫(kù)里建立了一個(gè)distribion庫(kù)和
   
            一個(gè)distributor_admin管理員級(jí)別的用戶(我們可以任意修改密碼)
           
    服務(wù)器上新增加了四個(gè)作業(yè):
                [ 代理程序歷史記錄清除: distribution ]
                [ 分發(fā)清除: distribution ]
                [ 復(fù)制代理程序檢查 ]
                [ 重新初始化存在數(shù)據(jù)驗(yàn)證失敗的訂閱 ]
   
    SQL Server企業(yè)管理器里多了一個(gè)復(fù)制監(jiān)視器, 當(dāng)前的這臺(tái)機(jī)器就可以發(fā)布、分發(fā)、訂閱了。
   
    我們?cè)俅卧赟QL Server企業(yè)管理器里[復(fù)制]-> 右鍵選擇
        ->[配置發(fā)布、訂閱服務(wù)器和分發(fā)],可以看到類似下圖:

    我們可以在 [發(fā)布服務(wù)器和分發(fā)服務(wù)器的屬性] 窗口
       
        -> [發(fā)布服務(wù)器] -> [新增]        -> [確定]
        -> [發(fā)布數(shù)據(jù)庫(kù)] -> [事務(wù)]/[合并] -> [確定]
        -> [訂閱服務(wù)器] -> [新增]        -> [確定]
       
       把網(wǎng)絡(luò)上的其它SQL Server服務(wù)器添加成為發(fā)布或者訂閱服務(wù)器.

       新增一臺(tái)發(fā)布服務(wù)器的選項(xiàng):

    我這里新建立的JIN001發(fā)布服務(wù)器是用管理員級(jí)別的數(shù)據(jù)庫(kù)用戶test連接的,
      
    到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框, 默認(rèn)的是選中的,
    在新建的JIN001發(fā)布服務(wù)器上建立和分發(fā)服務(wù)器FENGYU/FENGYU的鏈接的時(shí)需要輸入distributor_admin用戶的密碼

         到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框,也可以不選,
         也就是不需要密碼來(lái)建立發(fā)布到分發(fā)服務(wù)器的鏈接(這當(dāng)然欠缺安全,在測(cè)試環(huán)境下可以使用)
        
       新增一臺(tái)訂閱服務(wù)器的選項(xiàng):

    二、新建立的網(wǎng)絡(luò)上另一臺(tái)發(fā)布服務(wù)器(例如JIN001)選擇分發(fā)服務(wù)器
   
    [歡迎使用配置發(fā)布和分發(fā)向?qū)->[選擇分發(fā)服務(wù)器]
   
     -> 使用下列服務(wù)器(選定的服務(wù)器必須已配置為分發(fā)服務(wù)器) -> [選定服務(wù)器](例如FENGYU/FENGYU)
    
     -> [下一步] -> [輸入分發(fā)服務(wù)器(例如FENGYU/FENGYU)的distributor_admin用戶的密碼兩次]
    
     -> [下一步] -> [自定義配置] -> [否,使用下列的默認(rèn)配置]
    
     -> [下一步] -> [完成] -> [確定]
    
     建立一個(gè)數(shù)據(jù)庫(kù)復(fù)制發(fā)布的過(guò)程:
    
     [復(fù)制] -> [發(fā)布內(nèi)容] -> 右鍵選擇 -> [新建發(fā)布]
    
     -> [下一步] -> [選擇發(fā)布數(shù)據(jù)庫(kù)] -> [選中一個(gè)待發(fā)布的數(shù)據(jù)庫(kù)]
           
     -> [下一步] -> [選擇發(fā)布類型] -> [事務(wù)發(fā)布]/[合并發(fā)布]

     -> [下一步] -> [指定訂閱服務(wù)器的類型] -> [運(yùn)行SQL Server 2000的服務(wù)器]
       
     -> [下一步] -> [指定項(xiàng)目] -> [在事務(wù)發(fā)布中只可以發(fā)布帶主鍵的表] -> [選中一個(gè)有主鍵的待發(fā)布的表]
      
         ->[在合并發(fā)布中會(huì)給表增加唯一性索引和 ROWGUIDCOL 屬性的唯一標(biāo)識(shí)符字段[rowguid],默認(rèn)值是newid()]
                
               (添加新列將: 導(dǎo)致不帶列列表的 INSERT 語(yǔ)句失敗,增加表的大小,增加生成第一個(gè)快照所要求的時(shí)間)
              
         ->[選中一個(gè)待發(fā)布的表]
    
     -> [下一步] -> [選擇發(fā)布名稱和描述] ->
    
     -> [下一步] -> [自定義發(fā)布的屬性] -> [否,根據(jù)指定方式創(chuàng)建發(fā)布]
    
     -> [下一步] -> [完成] -> [關(guān)閉]
    
     發(fā)布屬性里有很多有用的選項(xiàng):設(shè)定訂閱到期(例如24小時(shí))

     設(shè)定發(fā)布表的項(xiàng)目屬性:
    
     常規(guī)窗口可以指定發(fā)布目的表的名稱,可以跟原來(lái)的表名稱不一樣。
    
     下圖是命令和快照窗口的欄目




    ( SQL Server 數(shù)據(jù)庫(kù)復(fù)制技術(shù)實(shí)際上是用insert,update,delete操作在訂閱服務(wù)器上重做發(fā)布服務(wù)器上的事務(wù)操作
    
      看文檔資料需要把發(fā)布數(shù)據(jù)庫(kù)設(shè)成完全恢復(fù)模式,事務(wù)才不會(huì)丟失
     
      但我自己在測(cè)試中發(fā)現(xiàn)發(fā)布數(shù)據(jù)庫(kù)是簡(jiǎn)單恢復(fù)模式下,每10秒生成一些大事務(wù),10分鐘后再收縮數(shù)據(jù)庫(kù)日志,
          這期間發(fā)布和訂閱服務(wù)器上的作業(yè)都暫停,暫停恢復(fù)后并沒(méi)有丟失任何事務(wù)更改 )
    
     發(fā)布表可以做數(shù)據(jù)篩選,例如只選擇表里面的部分列:

   例如只選擇表里某些符合條件的記錄, 我們可以手工編寫(xiě)篩選的SQL語(yǔ)句:

    發(fā)布表的訂閱選項(xiàng),并可以建立強(qiáng)制訂閱:



    成功建立了發(fā)布以后,發(fā)布服務(wù)器上新增加了一個(gè)作業(yè): [ 失效訂閱清除 ]
   
    分發(fā)服務(wù)器上新增加了兩個(gè)作業(yè):
                [ JIN001-dack-dack-5 ] 類型[ REPL快照 ]
                [ JIN001-dack-3 ]      類型[ REPL日志讀取器 ]

         上面藍(lán)色字的名稱會(huì)根據(jù)發(fā)布服務(wù)器名,發(fā)布名及第幾次發(fā)布而使用不同的編號(hào)
           
 REPL快照作業(yè)是SQL Server復(fù)制的前提條件,它會(huì)先把發(fā)布的表結(jié)構(gòu),數(shù)據(jù),索引,約束等生成到發(fā)布服務(wù)器的OS目錄下文件
    (當(dāng)有訂閱的時(shí)候才會(huì)生成, 當(dāng)訂閱請(qǐng)求初始化或者按照某個(gè)時(shí)間表調(diào)度生成)

 REPL日志讀取器在事務(wù)復(fù)制的時(shí)候是一直處于運(yùn)行狀態(tài)。(在合并復(fù)制的時(shí)候可以根據(jù)調(diào)度的時(shí)間表來(lái)運(yùn)行)
 
      建立一個(gè)數(shù)據(jù)庫(kù)復(fù)制訂閱的過(guò)程: 
     
     [復(fù)制] -> [訂閱] -> 右鍵選擇 -> [新建請(qǐng)求訂閱]
    
     -> [下一步] -> [查找發(fā)布] -> [查看已注冊(cè)服務(wù)器所做的發(fā)布]
           
     -> [下一步] -> [選擇發(fā)布] -> [選中已經(jīng)建立發(fā)布服務(wù)器上的數(shù)據(jù)庫(kù)發(fā)布名]     

     -> [下一步] -> [指定同步代理程序登錄](méi) -> [當(dāng)代理程序連接到代理服務(wù)器時(shí):使用SQL Server身份驗(yàn)證]
                                               (輸入發(fā)布服務(wù)器上distributor_admin用戶名和密碼)     
                                              
     -> [下一步] -> [選擇目的數(shù)據(jù)庫(kù)] -> [選擇在其中創(chuàng)建訂閱的數(shù)據(jù)庫(kù)名]/[也可以新建一個(gè)庫(kù)名]  
    
     -> [下一步] -> [允許匿名訂閱] -> [是,生成匿名訂閱]     
   
     -> [下一步] -> [初始化訂閱] -> [是,初始化架構(gòu)和數(shù)據(jù)]     

     -> [下一步] -> [快照傳送] -> [使用該發(fā)布的默認(rèn)快照文件夾中的快照文件]
                    (訂閱服務(wù)器要能訪問(wèn)發(fā)布服務(wù)器的REPLDATA文件夾,如果有問(wèn)題,可以手工設(shè)置網(wǎng)絡(luò)共享及共享權(quán)限)     

     -> [下一步] -> [快照傳送] -> [使用該發(fā)布的默認(rèn)快照文件夾中的快照文件]     

     -> [下一步] -> [設(shè)置分發(fā)代理程序調(diào)度] -> [使用下列調(diào)度] -> [更改] -> [例如每五分鐘調(diào)度一次]     

     -> [下一步] -> [啟動(dòng)要求的服務(wù)] -> [該訂閱要求在發(fā)布服務(wù)器上運(yùn)行SQLServerAgent服務(wù)]     

     -> [下一步] -> [完成] -> [確定]     
    
    成功建立了訂閱后,訂閱服務(wù)器上新增加了一個(gè)類別是[REPL-分發(fā)]作業(yè)(合并復(fù)制的時(shí)候類別是[REPL-合并])
    它會(huì)按照我們給的時(shí)間調(diào)度表運(yùn)行數(shù)據(jù)庫(kù)同步復(fù)制的作業(yè)
   
    查看它的歷史記錄運(yùn)行情況,例圖:

    在分發(fā)服務(wù)器的[復(fù)制監(jiān)視器]->[發(fā)布服務(wù)器]->[發(fā)布名稱]->[日志讀取器]->右鍵選擇->[代理程序歷史記錄](méi), 例圖:

    三、SQL Server復(fù)制配置好后, 可能出現(xiàn)異常情況的實(shí)驗(yàn)日志:
 
    1.發(fā)布服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制沒(méi)有多大影響
 
        中斷期間,分發(fā)和訂閱都接收到?jīng)]有復(fù)制的事務(wù)信息
 
    2.分發(fā)服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制有一些影響
 
        中斷期間,發(fā)布服務(wù)器的事務(wù)排隊(duì)堆積起來(lái)
           (如果設(shè)置了較長(zhǎng)時(shí)間才刪除過(guò)期訂閱的選項(xiàng), 繁忙發(fā)布數(shù)據(jù)庫(kù)的事務(wù)日志可能會(huì)較快速膨脹),
       
        訂閱服務(wù)器會(huì)因?yàn)樵L問(wèn)不到發(fā)布服務(wù)器,反復(fù)重試
            我們可以設(shè)置重試次數(shù)和重試的時(shí)間間隔(最大的重試次數(shù)是9999, 如果每分鐘重試一次,可以支持約6.9天不出錯(cuò))
 
        分發(fā)服務(wù)器sql server服務(wù)啟動(dòng),網(wǎng)絡(luò)接通以后,發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上:
 
        會(huì)需要一個(gè)比較長(zhǎng)的時(shí)間(實(shí)際上是生成所有事務(wù)的insert,update,delete語(yǔ)句,在訂閱服務(wù)器上去執(zhí)行)
        我們?cè)谄胀ǖ腜C機(jī)上實(shí)驗(yàn)的58個(gè)事務(wù)100228個(gè)命令執(zhí)行花了7分28秒.
 
    3.訂閱服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制影響比較大,可能需要重新初試化
 
        我們實(shí)驗(yàn)環(huán)境(訂閱服務(wù)器)從18:46分意外停機(jī)以, 第二天8:40分重啟動(dòng)后,
            已經(jīng)設(shè)好的復(fù)制在8:40分以后又開(kāi)始正常運(yùn)行了, 發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上
            但復(fù)制管理器里出現(xiàn)快照的錯(cuò)誤提示, 快照可能需要重新初試化,復(fù)制可能需要重新啟動(dòng).
            (我們實(shí)驗(yàn)環(huán)境的機(jī)器并沒(méi)有進(jìn)行快照初試化,復(fù)制仍然是成功運(yùn)行的)
   
    四、刪除已經(jīng)建好的發(fā)布和定閱可以直接用delete刪除按鈕
   
    我們最好總是按先刪定閱,再刪發(fā)布,最后禁用發(fā)布的順序來(lái)操作。
   
    如果要徹底刪去SQL Server上面的復(fù)制設(shè)置, 可以這樣操作:

    [復(fù)制] -> 右鍵選擇 [禁用發(fā)布] -> [歡迎使用禁用發(fā)布和分發(fā)向?qū)
 
     -> [下一步] -> [禁用發(fā)布] -> [要在"@servername"上禁用發(fā)布]
           
     -> [下一步] -> [完成禁用發(fā)布和分發(fā)向?qū) -> [完成]
    
   我們也可以用T-SQL命令來(lái)完成復(fù)制中發(fā)布及訂閱的創(chuàng)建和刪除, 選中已經(jīng)設(shè)好的發(fā)布和訂閱, 按屬標(biāo)右鍵
   可以[生成SQL腳本]。(這里就不詳細(xì)講了, 后面推薦的網(wǎng)站內(nèi)有比較詳細(xì)的內(nèi)容)
  
   當(dāng)你試圖刪除或者變更一個(gè)table時(shí),出現(xiàn)以下錯(cuò)誤
   Server: Msg 3724, Level 16, State 2, Line 1
   Cannot drop the table 'object_name' because it is being used for replication.

   比較典型的情況是該table曾經(jīng)用于復(fù)制,但是后來(lái)又刪除了復(fù)制

   處理辦法:
   select * from sysobjects where replinfo >'0'

   sp_configure 'allow updates', 1
   go
   reconfigure with override
   go
   begin transaction
   update sysobjects set replinfo = '0' where replinfo >'0'
   commit transaction
   go
   rollback transaction
   go
   sp_configure 'allow updates', 0
   go
   reconfigure with override
   go

 


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 马关县| 睢宁县| 监利县| 桐乡市| 阿城市| 田东县| 石棉县| 马龙县| 江川县| 瑞昌市| 昆山市| 易门县| 宝山区| 沁水县| 青田县| 宝兴县| 长宁县| 淮北市| 九江市| 禹城市| 德令哈市| 苗栗市| 姜堰市| 重庆市| 金秀| 西乌珠穆沁旗| 平乐县| 铜梁县| 扬州市| 观塘区| 西安市| 儋州市| 中山市| 海城市| 广安市| 宁德市| 甘德县| 栾城县| 忻州市| 沈阳市| 云林县|