




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、、基礎(chǔ)(建表、建約束、關(guān)系)約束(Constraint)是MicrosoftSQLServer提供的自動保持?jǐn)?shù)據(jù)庫完整性的一種方法,定義了可輸入表或表的單個列中的數(shù)據(jù)的限制條件(有關(guān)數(shù)據(jù)完整性的介紹請參見第9章)。在SQLServer中有5種約束:主關(guān)鍵字約束(PrimaryKeyConstraint)、外關(guān)鍵字約束(ForeignKeyConstraint)、惟一性約束(UniqueConstraint)、檢查約束(CheckConstraint)和缺省約束(DefaultConstraint)。(最后幾頁介紹SQL基礎(chǔ)約束)1、說明:創(chuàng)建數(shù)據(jù)庫CREATEDATABASEdatabase-
2、name2、說明:刪除數(shù)據(jù)庫dropdatabasedbname3、說明:備份sqlserver創(chuàng)建備份數(shù)據(jù)的deviceUSEmasterEXECsp_addumpdevicedisk,testBack,c:mssql7backupMyNwind_1.dat開始備份BACKUPDATABASEpubsTOtestBack4、說明:創(chuàng)建新表createtabletabname(col1type1notnullprimarykey,col2type2notnull,.)-建表、建約束、關(guān)系createtabletableok(col1int,col2_notnullintnotnull,col3
3、_defaultnchar(1)notnulldefault(男),-默認(rèn)男col4_defaultdatetimenotnulldefault(getdate(),-默認(rèn)得到系統(tǒng)時間col5_checkintnotnullcheck(col5_check=18andcol5_check=55),-添加約束,數(shù)據(jù)值在18到55之間col6_checknchar(9)notnullcheck(col6_checklikemsd09020-9A6-9),-添加約束,數(shù)據(jù)值前7位必須是msd0902倒數(shù)第兩位可以是0-9中任意一個數(shù)字,最后一位不是6-9之間的數(shù)字。cola_primarynchar
4、(5)notnullprimarykey,-建立主鍵colb_uniqueintunique,-唯一約束col7_Identityintnotnullidentity(100,1),-自增長,從100開始,每列值增加1個col8_identitynumeric(5,0)notnullidentity(1,1)-自增長,從1開始,每列值增加1個,最大值是5位的整數(shù)col9_guiduniqueidentifiernotnulldefault(newid()-使用newid()函數(shù),隨機獲取列值)-alter-主外鍵/引用/關(guān)系約束altertable從表名withcheck-啟用withnoch
5、eck-禁用約束addconstraintFK_主表名_從表名foreignkey(從表中的字段名)references主表名(主表中的字段名)-其它非主外鍵約束altertablewfaddconstraint約束名約束類型具體的約束說明altertablewf-修改聯(lián)合主鍵addconstraintPk_cola_primaryprimarykey(cola_primary,col1)根據(jù)已有的表創(chuàng)建新表:A:createtabletab_newliketab_old(使用舊表創(chuàng)建新表)B:createtabletab_newasselectcol1,col2.fromtab_olddef
6、initiononly5、說明:刪除新表droptabletabname6、說明:增加一個列Altertabletabnameaddcolumncoltype注:列增加后將不能刪除。DB2中列加上后數(shù)據(jù)類型也不能改變,唯一能改變的是增加varchar類型的長度。7、說明:添加主鍵:Altertabletabnameaddprimarykey(col)說明:刪除主鍵:Altertabletabnamedropprimarykey(col)8、說明:創(chuàng)建索引:createuniqueindexidxnameontabname(col.)刪除索引:dropindexidxname注:索引是不可更改的
7、,想更改必須刪除重新建。9、說明:創(chuàng)建視圖:createviewviewnameasselectstatement刪除視圖:dropviewviewname10、說明:幾個簡單的基本的sql語句選擇:select*fromtable1where范圍插入:insertintotable1(field1,field2)values(value1,value2)刪除:deletefromtable1where范圍更新:updatetable1setfield1=value1where范圍查找:select*fromtablelwherefieldllike%value1%like的語法很精妙,查資料
8、!排序:select*fromtablelorderbyfield1,field2desc總數(shù):selectcountastotalcountfromtable1求和:selectsum(field1)assumvaluefromtable1平均:selectavg(field1)asavgvaluefromtable1最大:selectmax(field1)asmaxvaluefromtable1最小:selectmin(field1)asminvaluefromtable111、說明:幾個高級查詢運算詞A:UNION運算符UNION運算符通過組合其他兩個結(jié)果表(例如TABLE1和TABLE
9、2)并消去表中任何重復(fù)行而派生出一個結(jié)果表。當(dāng)ALL隨UNION起使用時(即UNIONALL),不消除重復(fù)行。兩種情況下,派生表的每一行不是來自TABLE1就是來自TABLE2。B:EXCEPT運算符EXCEPT運算符通過包括所有在TABLE1中但不在TABLE2中的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng)ALL隨EXCEPT一起使用時(EXCEPTALL),不消除重復(fù)行。C:INTERSECT運算符INTERSECT運算符通過只包括TABLE1和TABLE2中都有的行并消除所有重復(fù)行而派生出一個結(jié)果表。當(dāng)ALL隨INTERSECT一起使用時(INTERSECTALL),不消除重復(fù)行。注:使用
10、運算詞的幾個查詢結(jié)果行必須是一致的。12、說明:使用外連接A、left(outer)join:左外連接(左連接):結(jié)果集幾包括連接表的匹配行,也包括左連接表的所有行。SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.cB:right(outer)join:右外連接(右連接):結(jié)果集既包括連接表的匹配連接行,也包括右連接表的所有行。C:full/cross(outer)join:全外連接:不僅包括符號連接表的匹配行,還包括兩個連接表中的所有記錄。12、分組:Groupby:一張表,一旦分組完成后,查詢后只能得到組相關(guān)的信息。組相關(guān)
11、的信息:(統(tǒng)計信息)count,sum,max,min,avg分組的標(biāo)準(zhǔn))在SQLServer中分組時:不能以text,ntext,image類型的字段作為分組依據(jù)在selecte統(tǒng)計函數(shù)中的字段,不能和普通的字段放在一起;13、對數(shù)據(jù)庫進行操作:分離數(shù)據(jù)庫:sp_detach_db;附加數(shù)據(jù)庫:sp_attach_db后接表明,附加需要完整的路徑名14.如何修改數(shù)據(jù)庫的名稱:sp_renamedbold_name,new_name二、提升1、說明:復(fù)制表(只復(fù)制結(jié)構(gòu),源表名:a新表名:b)(Access可用)法一:select*intobfromawhere11(僅用于SQlServer)法
12、二:selecttop0*intobfroma2、說明:拷貝表(拷貝數(shù)據(jù),源表名:a目標(biāo)表名:b)(Access可用)insertintob(a,b,c)selectd,e,ffromb;3、說明:跨數(shù)據(jù)庫之間表的拷貝(具體數(shù)據(jù)使用絕對路徑)(Access可用)insertintob(a,b,c)selectd,e,ffrombin具體數(shù)據(jù)庫where條件例子:.frombin&Server.MapPath(.)&data.mdb&where.4、說明:子查詢(表名1:a表名2:b)selecta,b,cfromawhereaIN(selectdfromb)或者:selecta,b,cfrom
13、awhereaIN(1,2,3)5、說明:顯示文章、提交人和最后回復(fù)時間selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b6、說明:外連接查詢(表名1:a表名2:b)selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c7、說明:在線視圖查詢(表名1:a)select*from(SELECTa,b,cFROMa)Twheret.a1;8、說明:between的用法between限
14、制查詢數(shù)據(jù)范圍時包括了邊界值,notbetween不包括select*fromtable1wheretimebetweentime1andtime2selecta,b,c,fromtable1whereanotbetween數(shù)值1and數(shù)值29、說明:in的使用方法select*fromtablelwhereanotin(值1,值2,值4,值6)10、說明:兩張關(guān)聯(lián)表,刪除主表中已經(jīng)在副表中沒有的信息deletefromtable1wherenotexists(select*fromtable2wheretable1.field1=table2.field1)11、說明:四表聯(lián)查問題:sele
15、ct*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere12、說明:日程安排提前五分鐘提醒SQL:select*from日程安排wheredatediff(minute,f開始時間,getdate()513、說明:一條sql語句搞定數(shù)據(jù)庫分頁selecttop10b.*from(selecttop20主鍵字段,排序字段from表名orderby排序字段desc)a,表名bwhereb.主鍵字段=a.主鍵字段orderbya.排序字段具體實現(xiàn):關(guān)于數(shù)據(jù)庫分頁:declarestartint,en
16、dintsqlnvarchar(600)setsql=selecttop+str(end-start+1)+fromTwhereridnotin(selecttop+str(str-1)+RidfromTwhereRid-1)execsp_executesqlsql注意:在top后不能直接跟一個變量,所以在實際應(yīng)用中只有這樣的進行特殊的處理。Rid為一個標(biāo)識列,如果top后還有具體的字段,這樣做是非常有好處的。因為這樣可以避免top的字段如果是邏輯索引的,查詢的結(jié)果后實際表中的不一致(邏輯索引中的數(shù)據(jù)有可能和數(shù)據(jù)表中的不一致,而查詢時如果處在索引則首先查詢索引)14、說明:前10條記錄sele
17、cttop10*formtable1where范圍15、說明:選擇在每一組b值相同的數(shù)據(jù)中對應(yīng)的a最大的記錄的所有信息(類似這樣的用法可以用于論壇每月排行榜,每月熱銷產(chǎn)品分析,按科目成績排名,等等.)selecta,b,cfromtablenametawherea=(selectmax(a)fromtablenametbwheretb.b=ta.b)16、說明:包括所有在TableA中但不在TableB和TableC中的行并消除所有重復(fù)行而派生出一個結(jié)果表(selectafromtableA)except(selectafromtableB)except(selectafromtableC)1
18、7、說明:隨機取出10條數(shù)據(jù)selecttop10*fromtablenameorderbynewid()18、說明:隨機選擇記錄selectnewid()19、說明:刪除重復(fù)記錄1),deletefromtablenamewhereidnotin(selectmax(id)fromtablenamegroupbycol1,col2,.)2),selectdistinct*intotempfromtablenamedeletefromtablenameinsertintotablenameselect*fromtemp評價:這種操作牽連大量的數(shù)據(jù)的移動,這種做法不適合大容量但數(shù)據(jù)操作3),例如
19、:在一個外部表中導(dǎo)入數(shù)據(jù),由于某些原因第一次只導(dǎo)入了一部分,但很難判斷具體位置,這樣只有在下一次全部導(dǎo)入,這樣也就產(chǎn)生好多重復(fù)的字段,怎樣刪除重復(fù)字段altertabletablename-添加一個自增列addcolumn_bintidentity(1,1)deletefromtablenamewherecolumn_bnotin(selectmax(column_b)fromtablenamegroupbycolumn1,column2,.)altertabletablenamedropcolumncolumn_b20、說明:列出數(shù)據(jù)庫里所有的表名selectnamefromsysobjec
20、tswheretype=U/U代表用戶21、說明:列出表里的所有的列名selectnamefromsyscolumnswhereid=object_id(TableName)22、說明:列示type、vender、pcs字段,以type字段排列,case可以方便地實現(xiàn)多重選擇,類似select中的case。selecttype,sum(casevenderwhenAthenpcselse0end),sum(casevenderwhenCthenpcselse0end),sum(casevenderwhenBthenpcselse0end)FROMtablenamegroupbytype顯示結(jié)果
21、:typevenderpcs電腦A1電腦A1光盤B2光盤A2手機B3手機C323、說明:初始化表table1TRUNCATETABLEtable124、說明:選擇從10到15的記錄selecttop5*from(selecttop15*fromtableorderbyidasc)table_別名orderbyiddesc三、技巧1、1=1,1=2的使用,在SQL語句組合時用的較多“where1=1”是表示選擇全部“where1=2”全部不選,如:ifstrWhere!=beginsetstrSQL=selectcount(*)asTotalfrom+tblName+where+strWhere
22、endelsebeginsetstrSQL=selectcount(*)asTotalfrom+tblName+end我們可以直接寫成錯誤!未找到目錄項。setstrSQL=selectcount(*)asTotalfrom+tblName+where1=1安定+strWhere2、收縮數(shù)據(jù)庫-重建索引DBCCREINDEXDBCCINDEXDEFRAG-收縮數(shù)據(jù)和日志DBCCSHRINKDBDBCCSHRINKFILE3、壓縮數(shù)據(jù)庫dbccshrinkdatabase(dbname)4、轉(zhuǎn)移數(shù)據(jù)庫給新用戶以已存在用戶權(quán)限execsp_change_users_loginupdate_one,
23、newname,oldnamego5、檢查備份集RESTOREVERIFYONLYfromdisk=E:dvbbs.bak6、修復(fù)數(shù)據(jù)庫ALTERDATABASEdvbbsSETSINGLE_USERGODBCCCHECKDB(dvbbs,repair_allow_data_loss)WITHTABLOCKGOALTERDATABASEdvbbsSETMULTI_USERGO7、日志清除SETNOCOUNTONDECLARELogicalFileNamesysname,MaxMinutesINT,NewSizeINTUSEtablename-要操作的數(shù)據(jù)庫名SELECTLogicalFileN
24、ame=tablename_log,-日志文件名MaxMinutes=10,-Limitontimeallowedtowraplog.NewSize=1-你想設(shè)定的日志文件的大小(M)Setup/initializeDECLAREOriginalSizeintSELECTOriginalSize=sizeFROMsysfilesWHEREname=LogicalFileNameSELECTOriginalSizeof+db_name()+LOGis+CONVERT(VARCHAR(30),OriginalSize)+8Kpagesor+CONVERT(VARCHAR(30),(Original
25、Size*8/1024)+MBFROMsysfilesWHEREname=LogicalFileNameCREATETABLEDummyTrans(DummyColumnchar(8000)notnull)DECLARECounterINT,StartTimeDATETIME,TruncLogVARCHAR(255)SELECTStartTime=GETDATE(),TruncLog=BACKUPLOG+db_name()+WITHTRUNCATE_ONLYDBCCSHRINKFILE(LogicalFileName,NewSize)EXEC(TruncLog)-Wrapthelogifnec
26、essary.WHILEMaxMinutesDATEDIFF(mi,StartTime,GETDATE()-timehasnotexpiredANDOriginalSize=(SELECTsizeFROMsysfilesWHEREname=LogicalFileName)AND(OriginalSize*8/1024)NewSizeBEGIN-Outerloop.SELECTCounter=0WHILE(CounterOriginalSize/16)AND(Counter50000)BEGIN-updateINSERTDummyTransVALUES(FillLog)DELETEDummyTr
27、ansSELECTCounter=Counter+1ENDEXEC(TruncLog)ENDSELECTFinalSizeof+db_name()+LOGis+CONVERT(VARCHAR(30),size)+8Kpagesor+CONVERT(VARCHAR(30),(size*8/1024)+MBFROMsysfilesWHEREname=LogicalFileNameDROPTABLEDummyTransSETNOCOUNTOFF8、說明:更改某個表execsp_changeobjectownertablename,dbo9、存儲更改全部表CREATEPROCEDUREdbo.User
28、_ChangeObjectOwnerBatchOldOwnerasNVARCHAR(128),NewOwnerasNVARCHAR(128)ASDECLARENameasNVARCHAR(128)DECLAREOwnerasNVARCHAR(128)DECLAREOwnerNameasNVARCHAR(128)DECLAREcurObjectCURSORFORselectName=name,Owner=user_name(uid)fromsysobjectswhereuser_name(uid)=OldOwnerorderbynameOPENcurObjectFETCHNEXTFROMcurO
29、bjectINTOName,OwnerWHILE(FETCH_STATUS=0)BEGINifOwner=OldOwnerbeginsetOwnerName=OldOwner+.+rtrim(Name)execsp_changeobjectownerOwnerName,NewOwnerend-selectname,NewOwner,OldOwnerFETCHNEXTFROMcurObjectINTOName,OwnerENDclosecurObjectdeallocatecurObjectGO10、SQLSERVER中直接循環(huán)寫入數(shù)據(jù)declareiintseti=1whilei30begin
30、insertintotest(userid)values(i)seti=i+1end案例:有如下表,要求就裱中所有沒有及格的成績,在每次增長0.1的基礎(chǔ)上,使他們剛好及格:NamescoreZhangshan80Lishi59Wangwu50Songquan69while(selectmin(score)fromtb_table)60)beginupdatetb_tablesetscore=score*1.01wherescore60breakelsecontinueend數(shù)據(jù)開發(fā)-經(jīng)典1.按姓氏筆畫排序:Select*FromTableNameOrderByCustomerNameColla
31、teChinese_PRC_Stroke_ci_as/從少到多2.數(shù)據(jù)庫加密:selectencrypt(原始密碼)selectpwdencrypt(原始密碼)selectpwdcompare(原始密碼,加密后密碼)=1-相同;否則不相同encrypt(原始密碼)selectpwdencrypt(原始密碼)selectpwdcompare(原始密碼,加密后密碼)=1-相同;否則不相同3.取回表中字段:declarelistvarchar(1000),sqlnvarchar(1000)selectlist=list+,+fromsysobjectsa,syscolumnsbwherea.id=b
32、.idand=表Asetsql=select+right(list,len(list)-1)+from表Aexec(sql)4.查看硬盤分區(qū):EXECmaster.xp_fixeddrives5比較A,B表是否相等:if(selectchecksum_agg(binary_checksum(*)fromA)(selectchecksum_agg(binary_checksum(*)fromB)print相等elseprint不相等6.殺掉所有的事件探察器進程:DECLAREhcforeachCURSORGLOBALFORSELECTkill+RTRIM(spid)FROMmaster.dbo.
33、sysprocessesWHEREprogram_nameIN(SQLprofiler,NSQL事件探查器)EXECsp_msforeach_worker?7.記錄搜索:開頭到N條記錄SelectTopN*From表N到M條記錄(要有主索引ID)SelectTopM-N*From表WhereIDin(SelectTopMIDFrom表)OrderbyIDDescN到結(jié)尾記錄SelectTopN*From表OrderbyIDDesc案例例如1:一張表有一萬多條記錄,表的第一個字段RecID是自增長字段,寫一個SQL語句,找出表的第31到第40個記錄。selecttop10recidfromAwh
34、ererecidnotin(selecttop30recidfromA)分析:如果這樣寫會產(chǎn)生某些問題,如果recid在表中存在邏輯索引。selecttop10recidfromAwhere是從索引中查找,而后面的selecttop30recidfromA則在數(shù)據(jù)表中查找,這樣由于索引中的順序有可能和數(shù)據(jù)表中的不一致,這樣就導(dǎo)致查詢到的不是本來的欲得到的數(shù)據(jù)。解決方案1,用orderbyselecttop30recidfromAorderbyricid如果該字段不是自增長,就會出現(xiàn)問題2,在那個子查詢中也加條件:selecttop30recidfromAwhererecid-1例2:查詢表中的
35、最后以條記錄,并不知道這個表共有多少數(shù)據(jù),以及表結(jié)構(gòu)。sets=selecttop1*fromTwherepidnotin(selecttop+str(count-1)+pidfromT)printsexecsp_executesqls9:獲取當(dāng)前數(shù)據(jù)庫中的所有用戶表selectNamefromsysobjectswherextype=uandstatus=010:獲取某一個表的所有字段selectnamefromsyscolumnswhereid=object_id(表名)selectnamefromsyscolumnswhereidin(selectidfromsysobjectswher
36、etype=uandname=表名)兩種方式的效果相同11:查看與某一個表相關(guān)的視圖、存儲過程、函數(shù)selecta.*fromsysobjectsa,syscommentsbwherea.id=b.idandb.textlike%表名%12:查看當(dāng)前數(shù)據(jù)庫中所有存儲過程selectnameas存儲過程名稱fromsysobjectswherextype=P13:查詢用戶創(chuàng)建的所有數(shù)據(jù)庫select*frommaster.sysdatabasesDwheresidnotin(selectsidfrommaster.sysloginswherename=sa)或者selectdbid,nameAS
37、DB_NAMEfrommaster.sysdatabaseswheresid0 x0114:查詢某一個表的字段和數(shù)據(jù)類型selectcolumn_name,data_typefrominformation_schema.columnswheretable_name=表名15:不同服務(wù)器數(shù)據(jù)庫之間的數(shù)據(jù)操作-創(chuàng)建鏈接服務(wù)器execsp_addlinkedserverITSV,SQLOLEDB,遠程服務(wù)器名或ip地址execsp_addlinkedsrvloginITSV,false,null,用戶名,密碼-查詢示例select*fromITSV.數(shù)據(jù)庫名.dbo.表名-導(dǎo)入示例select*in
38、to表fromITSV.數(shù)據(jù)庫名.dbo.表名-以后不再使用時刪除鏈接服務(wù)器execsp_dropserverITSV,droplogins-連接遠程/局域網(wǎng)數(shù)據(jù)(openrowset/openquery/opendatasource)-1、openrowset-查詢示例select*fromopenrowset(SQLOLEDB,sql服務(wù)器名;用戶名;密碼,數(shù)據(jù)庫名.dbo.表名)-生成本地表select*into表fromopenrowset(SQLOLEDB,sql服務(wù)器名;用戶名;密碼,數(shù)據(jù)庫名.dbo.表名)-把本地表導(dǎo)入遠程表insertopenrowset(SQLOLEDB,s
39、ql服務(wù)器名;用戶名;密碼,數(shù)據(jù)庫名.dbo.表名)select*from本地表-更新本地表updatebsetb.列A=a.列Afromopenrowset(SQLOLEDB,sql服務(wù)器名;用戶名;密碼,數(shù)據(jù)庫名.dbo.表名)asainnerjoin本地表bona.column1=b.column1-openquery用法需要創(chuàng)建一個連接-首先創(chuàng)建一個連接創(chuàng)建鏈接服務(wù)器execsp_addlinkedserverITSV,SQLOLEDB,遠程服務(wù)器名或ip地址-查詢select*FROMopenquery(ITSV,SELECT*FROM數(shù)據(jù)庫.dbo.表名)-把本地表導(dǎo)入遠程表ins
40、ertopenquery(ITSV,SELECT*FROM數(shù)據(jù)庫.dbo.表名)select*from本地表-更新本地表updatebsetb.列B=a.列BFROMopenquery(ITSV,SELECT*FROM數(shù)據(jù)庫.dbo.表名)asainnerjoin本地表bona.列A=b.列A-3、opendatasource/openrowsetSELECT*FROMopendatasource(SQLOLEDB,DataSource=ip/ServerName;UserID=登陸名Password=密碼).test.dbo.roy_ta-把本地表導(dǎo)入遠程表insertopendatasou
41、rce(SQLOLEDB,DataSource=ip/ServerName;UserID=登陸名;Password=密碼).數(shù)據(jù)庫.dbo.表名select*from本地表SQLServer基本函數(shù)SQLServer基本函數(shù)1.字符串函數(shù)長度與分析用datalength(Char_expr)返回字符串包含字符數(shù),但不包含后面的空格substring(expression,start,length)取子串,字符串的下標(biāo)是從1”,start為起始位置,length為字符串長度,實際應(yīng)用中以len(expression)取得其長度right(char_expr,int_expr)返回字符串右邊第in
42、t_expr個字符,還用left于之相反4,isnull(check_expression,replacement_value)如果check_expression為空,則返回replacement_value的值,不為空,就返回check_expression字符操作類5,Sp_addtype自定義數(shù)據(jù)類型例如:使返回的結(jié)果中不包含有關(guān)受語句影響的行數(shù)的信息。如果存儲過程中包含的一些語句并不返回許多實際的數(shù)據(jù),則該設(shè)置由于大量減少了網(wǎng)絡(luò)流量,因此可顯著提高性能。設(shè)置是在執(zhí)行或運行時設(shè)置,而不是在分析時設(shè)置。為時,不返回計數(shù)(表示受語句影響的行數(shù))。為時,返回計數(shù)常識在查詢中:后最多可以跟多少
43、張表或視圖:在語句中出現(xiàn)查詢時,先排序,后取在中,一個字段的最大容量是,而對于由于是碼。同步復(fù)制技術(shù)實現(xiàn)步驟一、預(yù)備工作發(fā)布服務(wù)器訂閱服務(wù)器都創(chuàng)建一個同名的用戶并設(shè)置相同的密碼做為發(fā)布快照文件夾的有效訪問用戶管理工具計算機管理用戶和組右鍵用戶新建用戶建立一個隸屬于組的登陸的用戶()在發(fā)布服務(wù)器上新建一個共享目錄做為發(fā)布的快照文件的存放目錄操作我的電腦新建一個目錄名為右鍵這個新建的目錄屬性共享選擇共享該文件夾通過權(quán)限按紐來設(shè)置具體的用戶權(quán)限保證第一步中創(chuàng)建的用戶具有對該文件夾的所有權(quán)限確定設(shè)置代理服務(wù)的啟動用戶發(fā)布訂閱服務(wù)器均做此設(shè)置開始管程管序管管管理工具管管服務(wù)右鍵屬性登陸選擇此賬戶輸入或者
44、選擇第一步中創(chuàng)建的登錄用戶名()密碼中輸入該用戶的密碼設(shè)置身份驗證模式解決連接時的權(quán)限問題發(fā)布訂閱服務(wù)器均做此設(shè)置企業(yè)管理器右鍵實例屬性-安全性-身份驗證TOC o 1-5 h z選擇和確定5在.發(fā)布服務(wù)器和訂閱服務(wù)器上互相注冊企業(yè)管理器右鍵組新建注冊下一步可用的服務(wù)器中輸入你要注冊的遠程服務(wù)器名添加下一步連接使用選擇第二個身份驗證下一步輸入用戶名和密碼()下一步選擇組也可以創(chuàng)建一個新組新下新一步新新完成對于只能用不能用計算機名的為其注冊服務(wù)器別名(此步在實施中沒用到)在連接端配置比如在訂閱服務(wù)器上配置的話服務(wù)器名稱中輸入的是發(fā)布服務(wù)器的開始程序客戶端網(wǎng)絡(luò)實用工具別名添加網(wǎng)絡(luò)庫選擇服務(wù)器別名輸
45、入服務(wù)器名連接參數(shù)服務(wù)器名稱中輸入服務(wù)器地址如果你修改了的端口取消選擇動態(tài)決定端口并輸入對應(yīng)的端口號二、正式配置1、配置發(fā)布服務(wù)器打開企業(yè)管理器,在發(fā)布服務(wù)器(、)上執(zhí)行以下步驟(1從)工具下拉菜單的復(fù)制子菜單中選擇配置發(fā)布、訂閱服務(wù)器和分發(fā)出現(xiàn)配置發(fā)布和分發(fā)向?qū)В?)下一步選擇分發(fā)服務(wù)器可以選擇把發(fā)布服務(wù)器自己作為分發(fā)服務(wù)器或者其他的服務(wù)器(選擇自己)(3)下一步設(shè)置快照文件夾采用默認(rèn)(4)下一步自定義配置可以選擇:是并讓我設(shè)置分發(fā)數(shù)據(jù)庫屬性啟用發(fā)布服務(wù)器或設(shè)置發(fā)布設(shè)置否并使用下列默認(rèn)設(shè)置(推薦)(5)下一步設(shè)置分發(fā)數(shù)據(jù)庫名稱和位置采用默認(rèn)值(6)下一步啟用發(fā)布服務(wù)器選擇作為發(fā)布的服務(wù)器下一
46、步選擇需要發(fā)布的數(shù)據(jù)庫和發(fā)布類型(8)下一步選擇注冊訂閱服務(wù)器(9)下一步完成配置2、創(chuàng)建出版物發(fā)布服務(wù)器、上從工具菜單的復(fù)制子菜單中選擇創(chuàng)建和管理發(fā)布命令選擇要創(chuàng)建出版物的數(shù)據(jù)庫,然后單擊創(chuàng)建發(fā)布(3在)創(chuàng)建發(fā)布向?qū)У奶崾緦υ捒蛑袉螕粝乱徊较到y(tǒng)就會彈出一個對話框。對話框上的內(nèi)容是復(fù)制的三個類型。我們現(xiàn)在選第一個也就是默認(rèn)的快照發(fā)布(其他兩個大家可以去看看幫助)(4單)擊下一步系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫服務(wù)器類型,允許在不同的數(shù)據(jù)庫如或之間進行數(shù)據(jù)復(fù)制。但是在這里我們選擇運行的數(shù)據(jù)庫服務(wù)器單擊下一步系統(tǒng)就彈出一個定義文章的對話框也就是選擇要出版的表注意如果前面選擇了事務(wù)發(fā)布則再這一步中
47、只能選擇帶有主鍵的表(6選)擇發(fā)布名稱和描述(7自)定義發(fā)布屬性向?qū)峁┑倪x擇:是我將自定義數(shù)據(jù)篩選,啟用匿名訂閱和或其他自定義屬性否根據(jù)指定方式創(chuàng)建發(fā)布(建議采用自定義的方式)(8下)一步選擇篩選發(fā)布的方式(9下)一步可以選擇是否允許匿名訂閱1如)果選擇署名訂閱,則需要在發(fā)布服務(wù)器上添加訂閱服務(wù)器方法:工具-復(fù)制-配置發(fā)布、訂閱服務(wù)器和分發(fā)的屬性-訂閱服務(wù)器中添加否則在訂閱服務(wù)器上請求訂閱時會出現(xiàn)的提示:改發(fā)布不允許匿名訂閱如果仍然需要匿名訂閱則用以下解決辦法企業(yè)管理器-復(fù)制-發(fā)布內(nèi)容-屬性-訂閱選項選擇允許匿名請求訂閱2如)果選擇匿名訂閱,則配置訂閱服務(wù)器時不會出現(xiàn)以上提示(10下)一步設(shè)
48、置快照代理程序調(diào)度(11下)一步完成配置當(dāng)完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫也就變成了一個共享數(shù)據(jù)庫有數(shù)據(jù)庫名有字段庫名有字段庫操名.a增加記錄則庫名記錄增加庫操名.a的字段更新,則庫名對應(yīng)字段更新要求:大-致的處理步驟在上創(chuàng)建連接服務(wù)器以便在中操作實現(xiàn)同步的實例名或用戶名密碼分布式事務(wù)處理服務(wù)并且在和這兩臺電腦中啟動設(shè)置為自動啟動。我的電腦-控制面板-管理工具-服-務(wù)-右鍵屬性啟動并將啟動類型設(shè)置為自動啟動-然-后創(chuàng)建一個作業(yè)定時調(diào)用上面的同步處理存儲過程就行了企業(yè)管理器啟管啟理代理右鍵作業(yè)啟新啟建作業(yè)啟啟常規(guī)項中輸入作業(yè)名稱啟啟步驟項啟新啟建啟啟步驟名中輸入步驟名類型中選擇腳本啟啟數(shù)據(jù)庫
49、選擇執(zhí)行命令的數(shù)據(jù)庫啟啟命令中輸入要執(zhí)行的語句:execp_proce啟確啟定啟啟調(diào)度項-新建調(diào)度-名稱中輸入調(diào)度名稱-調(diào)度類型中選擇你的作業(yè)執(zhí)行安排如-果選擇反復(fù)出現(xiàn)點-更改來設(shè)置你的時間安排然后將服務(wù)啟動并設(shè)置為自動啟動否則你的作業(yè)不會被執(zhí)行設(shè)置方法我的電腦控制面板管理工具服務(wù)右鍵屬性啟動類型選擇自動啟動確定實現(xiàn)同步處理的方法定時同步在中創(chuàng)建如下的同步處理存儲過程更控新修改過的數(shù)據(jù)庫名插控入新增的數(shù)據(jù)庫名庫名刪控除已經(jīng)刪除的數(shù)據(jù)(如果需要的話庫名SQL基礎(chǔ)創(chuàng)建約束約束(Constraint)是MicrosoftSQLServer提供的自動保持?jǐn)?shù)據(jù)庫完整性的一種方法,定義了可輸入表或表的單個
50、列中的數(shù)據(jù)的限制條件(有關(guān)數(shù)據(jù)完整性的介紹請參見第9章)。在SQLServer中有5種約束:主關(guān)鍵字約束(PrimaryKeyConstraint)、外關(guān)鍵字約束(ForeignKeyConstraint)、惟一性約束(UniqueConstraint)、檢查約束(CheckConstraint)和缺省約束(DefaultConstraint)。7.2.1主關(guān)鍵字約束主關(guān)鍵字約束指定表的一列或幾列的組合的值在表中具有惟一性,即能惟一地指定一行記錄。每個表中只能有一列被指定為主關(guān)鍵字,且IMAGE和TEXT類型的列不能被指定為主關(guān)鍵字,也不允許指定主關(guān)鍵字列有NULL屬性。定義主關(guān)鍵字約束的語法
51、如下:CONSTRAINTconstraint_namePRIMARYKEYCLUSTERED|NONCLUSTERED(column_name1,column_name2,.,column_name16)各參數(shù)說明如下:constraint_name指定約束的名稱約束的名稱。在數(shù)據(jù)庫中應(yīng)是惟一的。如果不指定,則系統(tǒng)會自動生成一個約束名。CLUSTERED|NONCLUSTERED指定索引類別,CLUSTERED為缺省值。其具體信息請參見下一章。column_name指定組成主關(guān)鍵字的列名。主關(guān)鍵字最多由16個列組成。例7-3:創(chuàng)建一個產(chǎn)品信息表,以產(chǎn)品編號和名稱為主關(guān)鍵字createtabl
52、eproducts(p_idchar(8)notnull,p_namechar(10)notnull,pricemoneydefault0.01,quantitysmallintnull,constraintpk_p_idprimarykey(p_id,p_name)onprimary7.2.2外關(guān)鍵字約束外關(guān)鍵字約束定義了表之間的關(guān)系。當(dāng)一個表中的一個列或多個列的組合和其它表中的主關(guān)鍵字定義相同時,就可以將這些列或列的組合定義為外關(guān)鍵字,并設(shè)定它適合哪個表中哪些列相關(guān)聯(lián)。這樣,當(dāng)在定義主關(guān)鍵字約束的表中更新列值,時其它表中有與之相關(guān)聯(lián)的外關(guān)鍵字約束的表中的外關(guān)鍵字列也將被相應(yīng)地做相同的更新。
53、外關(guān)鍵字約束的作用還體現(xiàn)在,當(dāng)向含有外關(guān)鍵字的表插入數(shù)據(jù)時,如果與之相關(guān)聯(lián)的表的列中無與插入的外關(guān)鍵字列值相同的值時,系統(tǒng)會拒絕插入數(shù)據(jù)。與主關(guān)鍵字相同,不能使用一個定義為TEXT或IMAGE數(shù)據(jù)類型的列創(chuàng)建外關(guān)鍵字。外關(guān)鍵字最多由16個列組成。定義外關(guān)鍵字約束的語法如下:CONSTRAINTconstraint_nameFOREIGNKEY(column_name1,column_name2,.,column_name16)REFERENCESref_table(ref_column1,ref_column2,.,ref_column16)ONDELETECASCADE|NOACTIONON
54、UPDATECASCADE|NOACTIONNOTFORREPLICATION各參數(shù)說明如下:REFERENCES指定要建立關(guān)聯(lián)的表的信息。ref_table指定要建立關(guān)聯(lián)的表的名稱。ref_column指定要建立關(guān)聯(lián)的表中的相關(guān)列的名稱。ONDELETECASCADE|NOACTION指定在刪除表中數(shù)據(jù)時,對關(guān)聯(lián)表所做的相關(guān)操作。在子表中有數(shù)據(jù)行與父表中的對應(yīng)數(shù)據(jù)行相關(guān)聯(lián)的情況下,如果指定了值CASCADE,則在刪除父表數(shù)據(jù)行時會將子表中對應(yīng)的數(shù)據(jù)行刪除;如果指定的是NOACTION,則SQLServer會產(chǎn)生一個錯誤,并將父表中的刪除操作回滾。NOACTION是缺省值。ONUPDATECASCADE|NOACTION指定在更新表中數(shù)據(jù)時,對關(guān)聯(lián)表所做的相關(guān)操作。在子表中有數(shù)據(jù)行與父表中的對應(yīng)數(shù)據(jù)行相
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 代運營公司推廣策劃方案
- 以案說法活動方案
- 價值營銷活動方案
- 企業(yè)為黨員獻禮活動方案
- 企業(yè)兒童節(jié)營銷活動方案
- 企業(yè)公司禁毒活動方案
- 企業(yè)團建室內(nèi)活動方案
- 企業(yè)女神節(jié)活動方案
- 企業(yè)家生日活動策劃方案
- 企業(yè)慶七一活動方案
- 2025屆高考歷史一輪復(fù)習(xí):統(tǒng)編版必修《中外歷史綱要下》知識考點提綱(全面!)
- 道路運輸企業(yè)安全生產(chǎn)教育培訓(xùn)
- 四年級義工課程
- 空乘禮儀知識
- 醫(yī)用氣體配送服務(wù)投標(biāo)方案(完整技術(shù)標(biāo))
- 數(shù)智賦能下的課程改革策略與實施路徑
- 2025年音樂節(jié)演唱會明星藝人歌手樂隊演出場費價格表
- 職業(yè)教育試題庫及答案
- 數(shù)據(jù)庫云服務(wù)市場分析-深度研究
- 2025年酒吧經(jīng)理考試題及答案
- 《信息安全技術(shù)基礎(chǔ)》課件 4.2Linux操作系統(tǒng)安全加固
評論
0/150
提交評論