Kusimamia usalama wa seva ya SQL kwa kutumia Microsoft Access (hati). Jina la jukumu la hifadhidata isiyobadilika. Uendeshaji usiokatizwa na usalama wa data

Toleo la kwanza Seva za Microsoft SQL ilianzishwa na kampuni nyuma mnamo 1988. DBMS iliwekwa mara moja kama ya uhusiano, ambayo, kulingana na mtengenezaji, ilikuwa na faida tatu:

  • taratibu zilizohifadhiwa, shukrani ambazo urejeshaji wa data uliharakishwa na uadilifu wake ulidumishwa katika hali ya watumiaji wengi;
  • upatikanaji wa mara kwa mara kwa utawala bila kukata watumiaji;
  • jukwaa la seva wazi ambalo hukuruhusu kuunda programu za wahusika wengine wanaotumia Seva ya SQL.

2005, iliyopewa jina la msimbo Yukon yenye uwezo wa hali ya juu wa kuongeza ukubwa, lilikuwa toleo la kwanza kusaidia kikamilifu teknolojia ya .NET. Usaidizi wa data iliyosambazwa umeboreshwa, na zana za kwanza za kuripoti na uchambuzi wa habari zimeonekana.

Kuunganishwa na Mtandao kulifanya iwezekane kutumia SQL Servers 2005 kama msingi wa kuunda mifumo biashara ya mtandaoni na ufikiaji rahisi na salama wa data kupitia vivinjari maarufu kwa kutumia toleo lililojumuishwa la Firewall Enterprise linalotumika kompyuta sambamba kwa idadi isiyo na kikomo ya wasindikaji.

Toleo lililobadilishwa la 2005 Microsoft SQL Server 2008, ambayo bado ni mojawapo ya wengi seva maarufu hifadhidata, na baadaye kidogo toleo lililofuata likatokea - SQL Servers 2012, kwa usaidizi wa upatanifu na .NET Framework na teknolojia zingine za hali ya juu za usindikaji wa habari na mazingira ya ukuzaji. Studio ya Visual. Moduli maalum ya SQL Azure iliundwa ili kuipata.

Transact-SQL

Tangu 1992, SQL imekuwa kiwango cha kupata hifadhidata. Karibu lugha zote za programu huitumia kupata hifadhidata, hata ikiwa inaonekana kwa mtumiaji kuwa anafanya kazi na habari moja kwa moja. Sintaksia ya msingi ya lugha inabaki kuwa ile ile ili kuhakikisha utangamano, lakini kila muuzaji wa mfumo wa usimamizi wa hifadhidata amejaribu kuongeza kwa SQL. kazi za ziada. Haikuwezekana kupata maelewano, na baada ya "vita vya viwango" kulikuwa na viongozi wawili walioachwa: PL/SQL kutoka Oracle na Transact-SQL katika Microsoft Servers SQL.

T-SQL hupanua SQL kiutaratibu kufikia Seva za Microsoft SQL. Lakini hii haizuii maendeleo ya programu kwenye waendeshaji "wa kawaida".

Badilisha biashara yako otomatiki na SQL Server 2008 R2

Uendeshaji wa kuaminika wa maombi ya biashara ni muhimu sana kwa biashara ya kisasa. Upungufu mdogo wa hifadhidata unaweza kusababisha hasara kubwa. Seva ya hifadhidata Data ya Microsoft SQL Server 2008 R2 hukuruhusu kuhifadhi kwa uhakika na kwa usalama kiasi kisicho na kikomo cha habari kwa kutumia zana za usimamizi zinazojulikana kwa wasimamizi wote. Kuongeza wima hadi vichakataji 256 kunatumika.

Teknolojia ya Hyper-V hutumia zaidi nguvu za mifumo ya kisasa ya msingi nyingi. Kusaidia mifumo mingi pepe kwenye kichakataji kimoja hupunguza gharama na kuboresha uimara.

Changanua data yako

Kwa uchambuzi wa haraka katika mitiririko ya data ya wakati halisi, kijenzi cha SQL Server StreamInsight kinatumika, ambacho kimeboreshwa kwa aina hii ya kazi. Inawezekana kutengeneza programu zako mwenyewe kulingana na .NET.

Uendeshaji usiokatizwa na usalama wa data

Usaidizi wa utendaji bora wakati wowote unahakikishwa na kidhibiti cha rasilimali kilichojengwa ndani ya seva. Msimamizi anaweza kusimamia mzigo na maana ya mfumo, kuweka kikomo kwa maombi juu ya matumizi ya processor na rasilimali za kumbukumbu. Vipengele vya usimbaji fiche hutoa ulinzi unaonyumbulika na uwazi wa habari na kudumisha kumbukumbu ya kuzifikia.

Ukubwa wa hifadhidata usio na kikomo

Hifadhi ya data inaweza kuongezwa haraka na kwa usalama. Watumiaji wanaweza kutumia templates tayari Ghala la Tarehe ya Ufuatiliaji Haraka ili kusaidia safu za diski hadi 48 TB. Mipangilio ya kimsingi inasaidia vifaa kutoka kwa kampuni zinazoongoza kama HP, EMC na IBM. Kazi za ukandamizaji wa habari kulingana na kiwango cha UCS 2 hukuruhusu kutumia nafasi ya diski kiuchumi zaidi.

Kuboresha ufanisi wa watengenezaji na wasimamizi

Mpya wachawi wa programu hukuruhusu kuondoa haraka seva ambazo hazitumiki sana, kuboresha udhibiti na kuboresha utendaji bila hitaji la wataalamu wa nje. Fuatilia utendakazi wa programu na hifadhidata, pata maboresho katika dashibodi, na uharakishe masasisho na usakinishaji.

Zana za uchambuzi wa biashara ya kibinafsi

Hakujawahi kuwa na makubaliano kati ya makampuni kuhusu nani anapaswa kufanya uchanganuzi-idara za IT au watumiaji moja kwa moja. Mfumo wa kuripoti kibinafsi hutatua tatizo hili kwa vyombo vya kisasa ujenzi salama na bora, uchambuzi na uundaji wa michakato ya biashara. Inasaidia ufikiaji wa moja kwa moja kwa hifadhidata ndani Ofisi ya Microsoft Na Seva ya SharePoint. Taarifa za ushirika inaweza kuunganishwa na aina nyingine za maudhui kama vile ramani, michoro na video.

Mazingira rahisi ya ushirikiano

Wape wafanyakazi wako idhini ya kufikia maelezo, ushirikiano na uchanganuzi wa data kwa kutumia programu ya PowerPivot e-commerce. Jedwali la Excel. Programu hukuruhusu kuchambua habari na kuigwa michakato ya biashara na kuchapisha ripoti za ufikiaji wa umma kwenye wavuti au SharePoint.

Kwa uundaji wa ripoti za ndani zinazoonekana, mfumo wa Report Builder 3.0 unatolewa, ambao unaauni miundo mingi na anuwai ya violezo vilivyoainishwa awali.

Fanya kazi na hifadhidata bila malipo

Kampuni hutoa miradi midogo na watengenezaji wa mwanzo na maalum toleo la bure Microsoft SQL Server Express. Hii inajumuisha teknolojia ya hifadhidata sawa na matoleo "kamili" ya Seva ya SQL.

Mazingira ya Visual Studio na Wasanidi Programu wa Wavuti yanaauniwa. Unda majedwali na maswali changamano, tengeneza programu za Intaneti kwa usaidizi wa hifadhidata, na upate ufikiaji wa moja kwa moja kwa taarifa kutoka PHP.

Chukua fursa ya uwezo kamili wa Transact-SQL na teknolojia ya juu zaidi ya kufikia data ya ADO.NET na LINQ. Taratibu zilizohifadhiwa, vichochezi na kazi zinaungwa mkono.

Zingatia mambo ya mantiki ya biashara, na mfumo utaboresha muundo wa hifadhidata peke yake.

Unda ripoti tajiri za utata wowote. Tumia mfumo mdogo wa utafutaji, unganisha ripoti na Programu za Microsoft Ofisi na uongeze maelezo ya eneo la kijiografia kwenye hati zako.

Programu zinazotengenezwa zinaweza kufanya kazi bila muunganisho kwenye seva ya hifadhidata. Usawazishaji unafanywa kiotomatiki kwa kutumia Mfumo wa Usawazishaji wa umiliki wa muamala.

Simamia miundombinu yako kwa kutumia sera za usimamizi kwa hifadhidata na programu zote. Matukio ya kawaida ya utendaji hupunguza muda wa uboreshaji wa hoja, kuunda na kurejesha nakala za chelezo kiwango cha biashara.

Toleo la SQL Server 2008 R2 Express ni bora kwa kusambaza tovuti na maduka ya mtandaoni kwa haraka, programu za matumizi ya kibinafsi na biashara ndogo ndogo. Hii chaguo kubwa kuanza kufanya kazi na kujifunza.

Dhibiti hifadhidata zako kwa kutumia Studio ya Usimamizi wa Seva ya SQL

Microsoft SQL Usimamizi wa seva ni mazingira maalum ya kuunda, kufikia, na kudhibiti hifadhidata na vipengele vyote vya Seva ya SQL, ikijumuisha huduma za kuripoti.

Mfumo unachanganya katika interface moja uwezo wote wa programu za utawala kutoka matoleo ya awali, kama vile Kichanganuzi cha Hoji na Meneja wa Biashara. Wasimamizi hupokea programu na seti kubwa ya vitu vya ukuzaji na usimamizi wa picha, pamoja na lugha iliyopanuliwa ya kuunda hati za kufanya kazi na hifadhidata.

Kihariri cha msimbo wa Studio ya Usimamizi wa Seva ya Microsoft kinastahili kuzingatiwa maalum. Inakuruhusu kuunda hati za maandishi katika Transact-SQL, panga hoja za ufikiaji wa data za pande nyingi na kuzichanganua kwa usaidizi wa kuhifadhi matokeo katika XML. Uundaji wa maswali na hati inawezekana bila kuunganishwa na mtandao au seva, na utekelezaji na ulandanishaji unaofuata. Inapatikana pana kuchagua violezo vilivyosakinishwa awali na mfumo wa udhibiti wa toleo.

Sehemu ya Kivinjari cha Kitu hukuruhusu kutazama na kudhibiti vipengee vyovyote vya SQL vya Seva za Microsoft vilivyojumuishwa kwenye seva zote na matukio ya hifadhidata. Ufikiaji rahisi wa habari unayohitaji ni muhimu sana maendeleo ya haraka programu na udhibiti wa toleo.

Mfumo huu umejengwa kwenye mfumo wa Visual Studio Isolated Shell, ambao unaauni mipangilio na viendelezi vinavyoweza kupanuka. watengenezaji wa chama cha tatu. Kuna jumuiya nyingi kwenye Mtandao ambapo unaweza kupata taarifa zote muhimu na mifano ya msimbo kwa ajili ya kutengeneza zana zako za usimamizi na usindikaji wa data.

Kulingana na kampuni ya utafiti ya Forrester Research, seva ya hifadhidata ya Microsoft SQL Server 2012 ilikuwa miongoni mwa viongozi watatu wa juu katika soko la uhifadhi wa taarifa za shirika mwishoni mwa 2013. Wataalamu wanabainisha kuwa ukuaji wa haraka wa sehemu ya soko ya Microsoft unatokana na mbinu ya shirika hilo ya uendeshaji wa michakato ya biashara kiotomatiki. Seva ya Microsoft SQL ni jukwaa la kisasa kwa ajili ya kusimamia na kuhifadhi data za aina yoyote, zikisaidiwa na uchanganuzi na zana za ukuzaji. Kando, inafaa kuzingatia urahisi wa kuunganishwa na bidhaa zingine za kampuni, kama vile Ofisi na SharePoint.

Kampuni yangu ilipitia mchakato wao wa ukaguzi wa kila mwaka na hatimaye niliwasadikisha kuwa ulikuwa wakati wa kutafuta suluhisho bora la kudhibiti schema/scenes zetu za SQL. Kwa sasa tuna hati chache tu za kusasisha mwenyewe.

Nilifanya kazi na Toleo la Hifadhidata la VS2008 katika kampuni nyingine na ni bidhaa ya kushangaza. Bosi wangu aliniuliza niangalie SQL Linganisha na Redgate na nitafute bidhaa zingine zozote ambazo zinaweza kuwa bora zaidi. Ulinganisho wa SQL pia ni bidhaa nzuri. Walakini, hawaonekani kumuunga mkono Perforce.

Je, ulitumia bidhaa mbalimbali kwa hili?

Je, unatumia zana gani kwa usimamizi wa SQL?

Ni nini kinachopaswa kujumuishwa katika mahitaji kabla ya kampuni yangu kufanya ununuzi?

10 majibu

Sidhani kama kuna zana ambayo inaweza kushughulikia sehemu zote. Toleo la Hifadhidata la VS halikuruhusu kuunda utaratibu mzuri wa kutoa. Kuendesha hati za kibinafsi kutoka kwa Kivinjari cha Suluhisho haileti kiwango cha kutosha katika miradi mikubwa.

Kwa kiwango cha chini unahitaji

  • IDE/mhariri
  • hazina msimbo wa chanzo ambayo inaweza kuzinduliwa kutoka kwa IDE yako
  • kutaja mkusanyiko na upangaji wa hati anuwai kwenye folda
  • mchakato wa kushughulikia mabadiliko, kudhibiti matoleo, na kutekeleza usambazaji.

Risasi ya mwisho ni mahali ambapo vitu kawaida huvunjika. Ndiyo maana. Kwa usimamizi bora na ufuatiliaji wa toleo, unataka kuhifadhi kila kitu cha db kwenye faili yake ya hati. Hiyo ni, kila meza, utaratibu uliohifadhiwa, mtazamo, index, nk. ina faili yake mwenyewe.

Kitu kinapobadilika unasasisha faili na unayo toleo jipya kwenye hazina yako na taarifa muhimu. Linapokuja suala la kuunganisha mabadiliko mengi katika toleo, usindikaji faili tofauti inaweza kuwa ngumu.

Chaguzi 2 nilizotumia:

    Mbali na kuhifadhi vitu vyote vya hifadhidata katika faili zao, una hati za kutolewa, ambazo ni muunganisho wa hati mahususi. Ubaya wa hii: una nambari katika sehemu 2 na hatari na hasara zote. Uwezekano: Kuendesha toleo ni rahisi kama kutekeleza hati moja.

    andika zana ndogo inayoweza kusoma metadata ya hati kutoka kwenye faili ya maelezo ya toleo na kutekeleza hati ya eadch iliyobainishwa kwenye faili ya maelezo kwenye seva inayolengwa. Hakuna upande wa chini kwa hii isipokuwa kwamba lazima uandike nambari. Mbinu hii haifanyi kazi kwa majedwali ambayo hayawezi kudondoshwa na kuundwa upya (mara tu ukiwa moja kwa moja na unayo data), kwa hivyo utakuwa na hati za mabadiliko za jedwali. Kwa hivyo itakuwa mchanganyiko wa njia zote mbili.

Niko kwenye kambi ya "script it yourself" kwa sababu bidhaa za mtu wa tatu itakufikisha tu katika kusimamia msimbo wa hifadhidata. Sina hati moja kwa kila kitu kwa sababu vitu hubadilika kwa wakati, na mara tisa kati ya kumi kusasisha hati yangu ya "meza ya uundaji" kuwa na safu wima tatu haitoshi.

Kuunda hifadhidata kwa kiasi kikubwa ni jambo dogo. Sanidi rundo la maandishi ya CREATE, uagize kwa usahihi (unda hifadhidata kabla ya schemas, schemas kabla ya meza, meza kabla ya taratibu, taratibu za kupiga simu kabla ya simu, nk) na uifanye. Kusimamia mabadiliko ya hifadhidata sio rahisi sana:

  • Ukiongeza safu wima kwenye jedwali, huwezi kuangusha jedwali na kuiunda kwa safu wima mpya kwa sababu hiyo itaharibu data yako yote muhimu ya uzalishaji.
  • Ikiwa Fred anaongeza safu kwenye jedwali XYZ na Mary anaongeza safu wima nyingine kwenye jedwali XYZ, ni safu gani inayoongezwa kwanza? Ndiyo, mpangilio wa safu wima katika majedwali haijalishi [kwa sababu hutumii SELECT *, sawa?], isipokuwa kama unajaribu kudhibiti hifadhidata na kufuatilia matoleo, wakati huo una hifadhidata mbili "halisi" ambazo msifananane, geuka kuwa maumivu ya kichwa kweli. Tunatumia ulinganisho wa SQL ili kudhibiti, lakini kukagua na kufuatilia mambo, haswa wakati wa ukuzaji, na hali chache "ni tofauti (lakini sio kubwa)" tunaweza kutuzuia tusitambue tofauti muhimu.
  • Vivyo hivyo, wakati miradi mingi (watengenezaji) inafanya kazi kwa wakati mmoja na tofauti kwenye hifadhidata ya kawaida, inaweza kuwa ngumu sana. Labda kila mtu anafanya kazi kwenye mradi wa Next Big Thing, wakati ghafla mtu lazima aanze kurekebisha hitilafu kwa mradi wa Kitu Kubwa Mwisho. Je, unadhibiti vipi urekebishaji wa msimbo unaohitajika wakati agizo la toleo ni tofauti na linaweza kunyumbulika? (Nyakati za kuchekesha kweli.)
  • Kubadilisha muundo wa jedwali kunamaanisha kubadilisha data, na hii inaweza kuwa ngumu sana wakati unapaswa kushughulikia nyuma sambamba. Unaongeza safu ya "DeltaFactor", sawa, kwa hivyo unafanya nini ili kujaza thamani hii ya esoteric kwa data yako yote iliyopo (soma: urithi)? Unaongeza jedwali jipya la utaftaji na safu wima inayolingana, lakini unaijazaje kwa safu zilizopo? Hali hizi haziwezi kutokea mara nyingi, lakini zinapotokea, unapaswa kufanya hivyo mwenyewe. Zana za wahusika wengine haziwezi kutarajia mahitaji ya mantiki ya biashara yako.

Kimsingi ninayo hati ya CREATE kwa kila hifadhidata ikifuatiwa na safu ya hati za ALTER kwani msingi wetu wa nambari hubadilika kwa wakati. Kila hati hukagua ili kuona ikiwa inaweza kuendeshwa: hii ndiyo "aina" sahihi ya hifadhidata, hati muhimu za awali zimetekelezwa, hati hii tayari inaendeshwa. Wakati tu ukaguzi unapitishwa, hati itafanya mabadiliko yake.

Kama zana, tunatumia Ngome ya SourceGear kwa usimamizi msingi wa msimbo wa chanzo, Redgate SQL Linganisha kwa usaidizi wa jumla na utatuzi wa matatizo, na idadi ya hati za nyumbani za SQLCMD ili "wingi" kupeleka hati na mabadiliko kwa seva nyingi na hifadhidata na kufuatilia nani ametuma maombi. ni maandishi gani ya hifadhidata kwa wakati gani. Matokeo ya mwisho: hifadhidata zetu zote ni thabiti na thabiti, na tunaweza kudhibitisha kwa urahisi ni toleo gani lilikuwa au lilikuwa wakati wowote.

Tunahitaji kwamba mabadiliko yote ya hifadhidata au uwekaji kwenye vitu kama majedwali ya utafutaji yafanywe katika hati na kuhifadhiwa katika udhibiti wa chanzo. Kisha hutumwa kwa njia sawa na nambari nyingine yoyote ya uwekaji wa toleo programu. Kwa kuwa wasanidi programu wetu hawana haki za kusambaza, hawana chaguo ila kuunda hati.

Kawaida mimi hutumia Studio ya Usimamizi wa Seva ya MS kudhibiti sql, kufanya kazi na data, kukuza hifadhidata na kuisuluhisha ikiwa ninahitaji kusafirisha data fulani kwa hati ya sql au ninahitaji kuunda baadhi. kitu changamano kwenye hifadhidata, ninatumia Studio ya Usimamizi ya EMS SQL kwa Seva ya SQL kwa sababu huko naweza kuona wazi zaidi ni sehemu gani finyu za msimbo wangu na muundo wa kuona katika mazingira haya hunipa rahisi.

Nina mradi wa chanzo huria (uliopewa leseni chini ya LGPL) ambao hujaribu kutatua matatizo yanayohusiana na toleo sahihi Miradi ya DB ya (na zaidi) Seva ya SQL (2005/2008/Azure), bn ModuleStore. Mchakato wote uko karibu sana na wazo lililoelezewa na chapisho la Phillip Kelly hapa.

Kimsingi, sehemu tofauti ya hati za mnyororo wa zana vitu vya hifadhidata ya Seva ya SQL ya schema ya DB katika faili zilizo na umbizo la kawaida, kwa hivyo yaliyomo kwenye faili hubadilishwa tu ikiwa kitu kimebadilika (tofauti na uandishi unaofanywa na VS, ambayo pia huunda hati nk. , kuashiria vitu vyote vilivyobadilishwa, hata kama vinafanana).

Lakini zana ya zana huenda zaidi ya hii ikiwa unatumia .NET: inakuruhusu kupachika hati za SQL kwenye maktaba au programu-tumizi (kama rasilimali za ndani), na kisha kulinganisha hati za ndani zilizolinganishwa na. hali ya sasa katika hifadhidata. Mabadiliko yasiyo ya jedwali (yale ambayo si "mabadiliko haribifu" kama yalivyofafanuliwa na Martin Fowler) yanaweza kutumika kiotomatiki au kwa mahitaji (kwa mfano, kuunda na kufuta vitu kama vile maoni, utendaji, taratibu zilizohifadhiwa, aina, faharasa) na kubadilisha hati. (ambayo inahitaji kuandikwa kwa mikono) inaweza kutumika katika mchakato sawa; meza mpya pia huundwa, pamoja na data ya usanidi wao. Baada ya sasisho, schema ya hifadhidata inalinganishwa tena na hati ili kuhakikisha kuwa sasisho la hifadhidata linafaulu kabla ya mabadiliko kufanywa.

Kumbuka kuwa hati zote na msimbo wa kulinganisha huendeshwa bila SMO, kwa hivyo huna utegemezi wa SMO chungu unapotumia moduli ya bsn ModuleStore katika programu.

Kulingana na jinsi unavyotaka kufikia hifadhidata, zana ya zana hutoa hata zaidi - inatekeleza uwezo fulani wa ORM na inatoa mbinu nzuri sana na muhimu ya mwisho ya kupiga simu taratibu zilizohifadhiwa, ikiwa ni pamoja na usaidizi wa XML wa uwazi na madarasa asilia ya .NET XML, na pia. kwa TVP (Vigezo Vinavyothaminiwa Jedwali) kama IEnumerable

Hapa kuna hati yangu ya kufuatilia proc iliyohifadhiwa na udf na vichochezi kwenye jedwali.

    Unda jedwali ili kuhifadhi msimbo wa chanzo wa proc uliopo

    Ingiza jedwali lenye data yote ya kichochezi na hati

    Unda kichochezi cha DDL ili kufuatilia mabadiliko kwao

    /****** Kitu: Jedwali . Tarehe ya Hati: 9/17/2014 11:36:54 AM ******/ WEKA ANSI_NULLS ON GO WEKA QUOTED_IDENTIFIER ON GO CREATE TABLE . ( IDENTITY(1, 1) NOT NULL , (1000) NULL , (1000) NULL , (1000) NULL , (1000) NULL , NULL , NTEXT NULL ,CONSTRAINT PRIMARY KEY CLUSTERED ( ASC) WITH = PUIST_INDEXOTEX = PUIST_INDEXTEX IMEZIMA ,IGNORE_DUP_KEY = IMEZIMWA ,ALLOW_ROW_LOCKS = IMEWASHWA ,RUHUSU_KUFUNGUA_KURASA_KUPENDA = IMEWASHA) IMEWASHA ) KWENYE GO Alter TABLE . ONGEZA CONSTRINT DEFAULT("") KWA NENDA INGIZA KWENYE . ( , , , , ,) CHAGUA "sa" ,"data halisi" ,r.ROUTINE_NAME ,r.ROUTINE_TYPE ,GETDATE() ,r.ROUTINE_DEFINITION KUTOKA KWA INFORMATION_SCHEMA.ROUTINES r UNION CHAGUA "sa" ,"loginitial data,TABLE_NAME. "tazama" ,GETDATE() ,v.VIEW_DEFINITION KUTOKA KWA INFORMATION_SCHEMA.VIEWS v MUUNGANO CHAGUA "sa" ,,"data halisi" ,o.NAME , "trigger" ,GETDATE() ,m.UFAFANUZI KUTOKA sys.objects o JIUNGE na sys. sql_modules m KWENYE o.object_id = m.object_id WHERE o.type = "TR" NENDA CREATE TRIGGER KWENYE DATABASE KWA UTARATIBU_WA_UTARATIBU ,ALTER_TARATIBU ,DROP_TARATIBU ,CREATE_INDEX ,ALTER_INDEX ,DROP_INDEX_INDEX_INDEX TER_ TABLE ,ALTER_VIEW ,CREATE_VIEW ,DROP_VIEW UNAPOANZA WEKA NAMBA YA TANGAZO @data WEKA XML @data = Eventdata() WEKA MAADILI ya sysupdatelog (@data.value("(/EVENT_INSTANCE/LoginName)", "nvarchar(255)") ,@data.value("() /EVENT_INSTANCE /EventType)", "nvarchar(255)") ,@data.value("(/EVENT_INSTANCE/ObjectName)", "nvarchar(255)") ,@data.value("(/EVENT_INSTANCE/ObjectType)" , " nvarchar(255)") ,getdate() ,@data.value("(/EVENT_INSTANCE/TSQLCommand/CommandText)", "nvarchar(max)")) ZIMA NOCOUNT MWISHO NENDA WEKA ANSI_NULLS NENDA WEKA QUOTED_IDENTIFIER WASHA TRIGGER KWENYE DATABASE GO

Ikiwa umewahi kuandika mipango ya kufunga katika lugha zingine za hifadhidata ili kushinda ukosefu wa kufunga (kama nilivyofanya), unaweza kuwa umeachwa na hisia kwamba lazima ushughulike na kujifungia. Acha nikuhakikishie kuwa msimamizi wa kufuli anaweza kuaminiwa kabisa. Hata hivyo, SQL Server inatoa mbinu kadhaa za kusimamia kufuli, ambazo tutajadili kwa undani katika sehemu hii.

Usitumie mipangilio ya kufunga au ubadilishe viwango vya kutengwa bila mpangilio—mwamini kidhibiti cha kufuli cha Seva ya SQL kusawazisha ugomvi na uadilifu wa muamala. Ikiwa tu una uhakika kabisa kwamba schema ya hifadhidata imesanidiwa vyema na msimbo wa programu umesafishwa kihalisi, unaweza kurekebisha kidogo tabia ya msimamizi wa kufuli ili kutatua tatizo fulani. Katika baadhi ya matukio, kuweka hoja zilizochaguliwa ili kutofunga kutasuluhisha matatizo mengi.

Kuweka kiwango cha kutengwa kwa uunganisho

Kiwango cha kutengwa huamua muda wa kuzuia uunganisho wa jumla au wa kipekee. Kuweka kiwango cha kutengwa huathiri hoja zote na jedwali zote zinazotumiwa kwa muda wa muunganisho au hadi kiwango kimoja cha kutengwa kibadilishwe na kingine. Mfano ufuatao huweka utengaji mkali zaidi kuliko chaguo-msingi na huzuia usomaji usiorudiwa:

WEKA KIWANGO CHA UTENGENEZAJI WA MAPENZI UNAYORUDIWA KUSOMA Viwango halali vya kutengwa ni:

Umesoma bila kujitolea? inayoweza kutekelezwa

Umesoma kwa kujitolea? picha

Usomaji unaorudiwa

Unaweza kuangalia kiwango cha sasa cha kutengwa kwa kutumia amri ya Ukaguzi wa Uadilifu wa Hifadhidata (DBCC):

DBCC USEROPTIONS

Matokeo yatakuwa kama ifuatavyo (kwa kifupi):

Weka Thamani ya Chaguo

kiwango cha kutengwa kinachoweza kurudiwa

Viwango vya kutengwa vinaweza pia kuwekwa katika kiwango cha hoja au jedwali kwa kutumia chaguo za kufunga.

Kwa kutumia Utengaji wa Kiwango cha Picha cha Hifadhidata

Kuna chaguo mbili kwa kiwango cha kutengwa cha vijipicha vya hifadhidata: snapshot na kusoma snapshot iliyojitolea. Utengaji wa muhtasari hufanya kazi kama usomaji unaorudiwa bila kushughulika na masuala ya kufunga. Kusoma muhtasari wa kujitenga kunaiga kiwango cha kujitolea cha Seva ya SQL, pia kuondoa matatizo ya kufunga.

Ingawa utengaji wa muamala kwa kawaida husanidiwa katika kiwango cha muunganisho, utengaji wa muhtasari lazima usanidiwe katika kiwango cha hifadhidata kwa sababu

hufuatilia kwa ufanisi utayarishaji wa safu mlalo kwenye hifadhidata. Utoaji wa safu mlalo ni teknolojia inayounda nakala za safu mlalo katika hifadhidata ya TempDB kwa kusasishwa. Kando na upakiaji mkuu wa hifadhidata ya TempDB, uchapishaji wa safu mlalo pia huongeza kitambulisho cha safu mlalo cha baiti 14.

Kutumia Kutengwa kwa Picha

Kijisehemu kifuatacho huwezesha kiwango cha kutengwa kwa muhtasari. Ili kusasisha hifadhidata na kuwezesha kiwango cha kutengwa kwa muhtasari, hakuna miunganisho mingine inapaswa kuanzishwa kwenye hifadhidata hii.

ALTER DATABASE Aesop

WASHA ALLOW_SNAPSHOT_ISOLATION

| Ili kuangalia ikiwa utengaji wa muhtasari umewashwa kwenye hifadhidata, endesha hoja ifuatayo ya SVS: CHAGUA jina, snapshot_isolation_state_desc FROM [ * sysdatabases.

Sasa shughuli ya kwanza inaanza kusomeka na kubaki wazi (yaani haijajitolea): TUMIA Aesop

ANZA TRAN CHAGUA Kichwa KUTOKA FABLE AMBAPO FablD = 2

Matokeo yafuatayo yatapatikana:

Kwa wakati huu, shughuli ya pili huanza kusasisha safu mlalo ambayo ilifunguliwa na shughuli ya kwanza:

WEKA Picha ya Picha ya NGAZI YA KUTENGWA;

ANZA Hadithi ya KUSASISHA TRAN

SET Kichwa = 'Kutikisa kwa Vijipicha'

WAPI FablD = 2;

CHAGUA *KUTOKA FABLE AMBAPO FablD = 2

Matokeo yake ni kama ifuatavyo:

Inatikisa na Vijipicha

Je, hilo si jambo la kushangaza? Muamala wa pili uliweza kusasisha safu mlalo ingawa muamala wa kwanza ulibaki wazi. Wacha turudi kwenye shughuli ya kwanza na tuone data asili:

CHAGUA Kichwa KUTOKA FABLE AMBAPO FablD = 2

Matokeo yake ni kama ifuatavyo:

Ukifungua shughuli za tatu na nne, wataona kitu kimoja thamani ya awali The Bald Knight:

Hata baada ya muamala wa pili kufanya mabadiliko, ya kwanza bado itaona thamani halisi, na shughuli zote zinazofuata zitaona thamani mpya, Rocking with Snapshots.

Kwa kutumia Muhtasari wa Usomaji wa ISOLATION

Utenganishaji wa Muhtasari wa Kusoma umewezeshwa kwa kutumia syntax sawa:

ALTER DATABASE Aesop

WASHA READ_COMMITTED_SNAPSHOT

Sawa na kutengwa kwa Picha, kiwango hiki Ili kuondoa matatizo ya kuzuia, pia hutumia toleo la mfuatano. Kwa kutumia mfano ulioelezewa katika sehemu iliyotangulia kama msingi, katika kesi hii shughuli ya kwanza itaona mabadiliko yaliyofanywa na ya pili mara tu yanapofanywa.

Kwa sababu Read Commited ndio kiwango chaguo-msingi cha kutengwa katika Seva ya SQL, kuweka tu vigezo vya hifadhidata kunahitajika.

Kutatua Migogoro ya Kuandika

Data ya kuandika miamala wakati kiwango cha kutengwa kwa Picha fupi kimewekwa inaweza kuzuiwa na shughuli za awali. shughuli ambazo hazijathibitishwa kumbukumbu. Kufuli kama hiyo haitasababisha shughuli mpya kungojea - itatoa kosa tu. Ili kushughulikia hali kama hizi, tumia usemi wa kujaribu. . . kamata, subiri sekunde chache na ujaribu muamala tena.

Kutumia chaguzi za kuzuia

Vigezo vya kuzuia hukuruhusu kufanya marekebisho ya muda kwa mkakati wa kuzuia. Ingawa kiwango cha kutengwa kinaathiri muunganisho kwa ujumla, chaguzi za kufunga ni maalum kwa kila jedwali katika swali fulani (Jedwali 51.5). Chaguo la WITH (lock_option) limewekwa baada ya jina la jedwali katika kifungu cha FROM cha hoja. Kwa kila jedwali, unaweza kutaja vigezo vingi, vinavyotenganishwa na koma.

Jedwali 51.5. Chaguzi za kuzuia

Kigezo

kuzuia

Maelezo

Kiwango cha kutengwa. Haiweki au kushikilia kufuli. Sawa na hakuna kuzuia

Kiwango cha kutenganisha shughuli chaguomsingi

Kiwango cha kutengwa. Hushikilia kufuli zilizoshirikiwa na za kipekee hadi muamala uthibitishwe

Kiwango cha kutengwa. Hushikilia kufuli iliyoshirikiwa hadi muamala ukamilike

Ruka safu mlalo zilizozuiwa badala ya kusubiri

Washa kufunga katika kiwango cha safu mlalo badala ya ukurasa, kiwango au kiwango cha jedwali

Washa kufunga kwa kiwango cha ukurasa badala ya kufunga kwa kiwango cha jedwali

Kupanda kiotomatiki kwa kufuli za safu mlalo, ukurasa na kiwango hadi kwenye uzito wa kiwango cha jedwali

Kigezo

kuzuia

Maelezo

Kukosa kutumia au kudumisha kufuli. Sawa na ReadUnCommitted

Washa kufuli ya kipekee ya jedwali. Kuzuia shughuli zingine kufanya kazi na meza

Shikilia kufuli iliyoshirikiwa hadi shughuli ya muamala itakapotekelezwa (sawa na Inayoweza kutekelezwa)

Kutumia kufuli ya sasisho badala ya ile ya jumla na kuishikilia. Kufunga maandishi mengine kwa data kati ya usomaji wa awali na uandishi

Inashikilia kufuli ya data ya kipekee hadi muamala uthibitishwe

Mfano ufuatao hutumia chaguo la kufunga katika kifungu cha FROM cha taarifa ya UPDATE ili kuzuia meneja kuzidisha uzito wa kufuli:

TUMIA OBXKites UPDATE Bidhaa

KUTOKA KWA Bidhaa NA (RowLock)

SET ProductName = ProductName + ' Imesasishwa 1

Ikiwa swali lina maswali madogo, fahamu kuwa ufikiaji wa jedwali la kila hoja hutoa kufuli, ambayo inaweza kudhibitiwa kwa kutumia vigezo.

Vikwazo vya kufunga kwa kiwango cha index

Viwango vya kutengwa na mipangilio ya kuzuia hutumiwa katika kiwango cha uunganisho na ombi. njia pekee Usimamizi wa kufuli katika kiwango cha jedwali ni kupunguza uzito wa kufuli kulingana na faharasa maalum. Kwa kutumia utaratibu uliohifadhiwa wa sp_indexoption, safu mlalo na/au kufuli za ukurasa zinaweza kuzimwa kwa faharasa maalum kwa kutumia sintaksia ifuatayo: sp_indexoption 'index_name 1 .

AllowRowlocks au AllowPagelocks,

Hii inaweza kuwa na manufaa kwa njia kadhaa matukio maalum. Ikiwa jedwali husubiriwa mara kwa mara kwa sababu ya kufuli kwa ukurasa, basi kuweka vifungio vya kurasa kutawezesha kufunga kwa kiwango cha safu mlalo. Kupungua kwa uzito wa kufuli kutakuwa na athari chanya kwenye ushindani. Zaidi ya hayo, ikiwa jedwali lisasishwa mara chache lakini linasomwa mara kwa mara, kufuli za kiwango cha safu mlalo na ukurasa hazifai; Katika kesi hii, kiwango cha kufungia bora iko kwenye kiwango cha meza. Ikiwa masasisho yanafanywa mara kwa mara, basi kufunga kwa kipekee kwenye jedwali hakutasababisha shida nyingi.

Utaratibu uliohifadhiwa wa Sp_indexoption umeundwa kurekebisha taratibu za data; ndio maana hutumia kufuli kwa kiwango cha index. Ili kuzuia kufuli kwenye ufunguo msingi wa jedwali, tumia sp_help table_name kupata jina la faharasa ya vitufe msingi.

Amri ifuatayo inasanidi jedwali la Kitengo cha Bidhaa kama kategoria isiyosasishwa mara kwa mara. Amri ya sp_help kwanza inaonyesha jina la faharasa ya ufunguo msingi wa jedwali: sp_help ProductCategory

Matokeo (yaliyopunguzwa) ni:

index index index

funguo za maelezo ya jina

PK___________ Kitengo cha Bidhaa 79A814 03 isiyojumuishwa, BidhaaCategorylD

kipekee, ufunguo wa msingi iko kwenye PRIMARY

Kwa kuzingatia jina halisi la ufunguo wa msingi, utaratibu uliohifadhiwa wa mfumo unaweza kuweka vigezo vya kufunga index:

EXEC sp_indexoption

‘Kitengo cha Bidhaa.РК__ Kitengo cha Bidhaa_______ 7 9A814 03′,

'AllowRowlocks', FALSE EXEC sp_indexoption

‘Kitengo cha Bidhaa.PK__ Kitengo cha Bidhaa_______ 79A81403′,

'AllowPagelocks', FALSE

Kusimamia nyakati za kusubiri za kufuli

Ikiwa shughuli inangojea kufuli, basi kungoja huku kutaendelea hadi kufuli iwezekane. Kwa chaguo-msingi hakuna kikomo cha kuisha - kinadharia inaweza kudumu milele.

Kwa bahati nzuri, unaweza kuweka muda wa kufunga ukitumia chaguo la muunganisho la lock_timeout. Weka kigezo hiki kwa idadi ya milisekunde, au ikiwa hutaki kupunguza muda, iweke -1 (ambayo ndiyo chaguomsingi). Ikiwa kigezo hiki kimewekwa kuwa 0, muamala utakataliwa mara moja ikiwa kuna kizuizi chochote. Katika kesi hii, maombi yatakuwa haraka sana, lakini hayafanyi kazi.

Ombi lifuatalo linaweka muda wa kufunga kuisha kuwa sekunde mbili (milliseconds 2000):

SET Lock_Timeout 2 00 0

Ikiwa muamala unazidi kikomo cha muda uliowekwa, nambari ya hitilafu 1222 inatolewa.

Ninapendekeza sana kuweka kikomo cha muda wa kufunga kwenye kiwango cha muunganisho. Thamani hii imechaguliwa kulingana na utendaji wa kawaida Hifadhidata. Ninapendelea kuweka muda wa kuisha hadi sekunde tano.

Kutathmini Utendaji wa Mabishano ya Hifadhidata

Ni rahisi sana kuunda hifadhidata ambayo haishughulikii ugomvi wa kufuli na ugomvi wakati wa kujaribu kwenye kikundi cha watumiaji. Jaribio la kweli ni wakati watumiaji mia kadhaa husasisha maagizo kwa wakati mmoja.

Jaribio la ushindani linahitaji kupangwa vizuri. Katika ngazi moja inapaswa kuwa na matumizi ya wakati mmoja watumiaji wengi wa fomu ya mwisho sawa. Programu ya NET ambayo huiga kila mara

data ya kutazama na kusasisha mtumiaji. Jaribio zuri linapaswa kutekeleza matukio 20 ya hati ambayo hupakia hifadhidata kila mara, na kisha kuruhusu timu ya majaribio kutumia programu. Idadi ya kufuli itakusaidia kuona ufuatiliaji wa utendaji unaojadiliwa katika Sura ya 49.

Ni bora kujaribu ushindani wa wachezaji wengi mara kadhaa wakati wa mchakato wa ukuzaji. Kama mwongozo wa mtihani wa MCSE unavyosema, "usiruhusu mtihani wa ulimwengu halisi kuja kwanza."

Vifungo vya programu

Seva ya SQL hutumia sana mzunguko tata kuzuia. Wakati mwingine mchakato au rasilimali nyingine isipokuwa data inahitaji kufuli. Kwa mfano, inaweza kuhitajika kutekeleza utaratibu ambao husababisha madhara ikiwa mtumiaji mwingine ataendesha tukio lingine la utaratibu sawa.

Miaka kadhaa iliyopita niliandika programu ya kuweka kabati katika miradi ya mitambo ya nyuklia. Mara jiometri ya mmea ilipoundwa na kujaribiwa, wahandisi walianzisha kiwanja vifaa vya cable, eneo lake na aina za nyaya zinazotumika. Baada ya nyaya kadhaa kuingizwa, programu iliunda njia ya kuziweka ili iwe fupi iwezekanavyo. Utaratibu pia ulizingatia masuala ya usalama wa kebo na kutenganisha nyaya zisizoendana. Wakati huo huo, ikiwa taratibu nyingi za uelekezaji ziliendeshwa kwa wakati mmoja, kila mfano ungejaribu kuelekeza nyaya zilezile, na kusababisha matokeo yasiyo sahihi. Kuzuia programu imekuwa suluhisho kubwa kwa tatizo hili.

Kufunga programu hufungua ulimwengu mzima wa kufuli za SQL kwa matumizi katika programu. Badala ya kutumia data kama nyenzo inayoweza kufungwa, kufuli za programu hufunga matumizi ya rasilimali zote za mtumiaji zilizotangazwa katika utaratibu uliohifadhiwa wa sp__GetAppLock.

Kufunga maombi kunaweza kutumika katika shughuli; katika kesi hii, hali ya kuzuia inaweza Kushirikiwa, Usasishaji, Exclusive, IntentExclusice au IntentShared. Thamani ya kurudi kutoka kwa utaratibu inaonyesha ikiwa kufuli ilitumika kwa mafanikio.

0. Kufuli ilisakinishwa kwa mafanikio.

1. Kufuli ilipatikana wakati utaratibu mwingine ulipotoa kufuli yake.

999. Kufuli haikuwekwa kwa sababu nyingine.

Utaratibu uliohifadhiwa wa sp_ReleaseApLock hutoa kufuli. Mfano ufuatao unaonyesha jinsi kufuli ya programu inaweza kutumika katika kundi au utaratibu: TANGAZA @ShareOK INT EXEC @ShareOK = sp_GetAppLock

@Resource = 'CableWorm',

@LockMode = 'Kipekee'

IF @ShareOK< 0

...Hitilafu katika kushughulikia msimbo

... Msimbo wa programu ...

EXEC sp_ReleaseAppLock @Resource = 'CableWorm'

Wakati kufuli za programu zinatazamwa kutoka kwa kutumia Usimamizi Taratibu za studio au sp_Lock, zinaonyeshwa na aina ya APP. Orodha ifuatayo ni matokeo yaliyofupishwa ya sp_Lock inayoendeshwa kwa wakati mmoja kama msimbo hapo juu: spid dbid Objld Indld Aina ya Hali ya Rasilimali

57 8 0 0 APP Cabllf 94cl36 X GRANT

Kuna tofauti mbili ndogo za kutambua jinsi kufuli za programu zinashughulikiwa katika Seva ya SQL:

Mifumo iliyofungwa haigunduliwi kiotomatiki;

Ikiwa muamala unapata kufuli mara kadhaa, lazima iachie idadi sawa ya nyakati.

Vifungo vya kufunga

Deadlock ni hali maalum ambayo hutokea tu wakati shughuli zilizo na kazi nyingi zinashindana kwa rasilimali za kila mmoja. Kwa mfano, shughuli ya kwanza imepata kufuli kwenye nyenzo A na inahitaji kufunga nyenzo B, na wakati huo huo muamala wa pili, ambao umefunga nyenzo B, unahitaji kufunga rasilimali A.

Kila moja ya shughuli hizi hungoja nyingine kutoa kufuli yake, na hakuna inayoweza kukamilisha hadi hili litendeke. Ikiwa hakuna ushawishi wa nje au moja ya shughuli huisha kwa sababu fulani (kwa mfano, kutokana na muda wa muda), basi hali hii inaweza kuendelea hadi mwisho wa dunia.

Hapo awali, mikwamo ilikuwa tatizo kubwa, lakini Seva ya SQL sasa hukuruhusu kuitatua kwa mafanikio.

Kutengeneza Deadlock

Njia rahisi zaidi ya kuunda hali ya msuguano katika Seva ya SQL ni kutumia miunganisho miwili katika kihariri cha hoja cha Studio ya Usimamizi (Mchoro 51.12). Shughuli ya kwanza na ya pili hujaribu kusasisha safu mlalo sawa, lakini kwa mpangilio tofauti. Kwa kutumia dirisha la tatu kuendesha utaratibu wa pGetLocks, unaweza kufuatilia kufuli.

1. Unda dirisha la pili katika kihariri cha hoja.

2. Weka msimbo wa kuzuia Hatua ya 2 kwenye dirisha la pili.

3. Weka msimbo wa kuzuia Hatua ya 1 kwenye dirisha la kwanza na ubofye ufunguo .

4. Katika dirisha la pili, vile vile tekeleza msimbo Hatua ya 2.

5. Rudi kwenye dirisha la kwanza na utekeleze msimbo wa kuzuia Hatua ya 3.

6. Baada ya muda mfupi, Seva ya SQL itagundua mkwamo na kusuluhisha kiotomatiki.

Chini ni nambari ya mfano.

– Muamala 1 — Hatua ya 1 TUMIA OBXKites ANZA USASISHAJI WA MASHARTI Anwani

WEKA Jina la Mwisho = 'Jorgenson'

Msimbo wa Mawasiliano WAPI = 401′

Puc. 51.12. Kuunda hali ya msuguano katika Studio ya Usimamizi kwa kutumia viunganisho viwili (madirisha yao yapo juu)

Sasa shughuli ya kwanza imepata kufuli ya kipekee kwenye rekodi yenye thamani 101 katika sehemu ya Msimbo wa Mawasiliano. Muamala wa pili utapata kufuli ya kipekee kwenye safu mlalo yenye thamani ya 1001 katika sehemu ya ProductCode, na kisha kujaribu kufunga rekodi ambayo tayari imefungwa na muamala wa kwanza (ContactCode=101).

– Muamala wa 2 — Hatua ya 2 TUMIA OBXKites ANZA USASISHAJI WA MALIPO SET Jina la Bidhaa

= 'Sanduku la Urekebishaji DeadLock'

WAPI ProductCode = '1001'

WEKA FirstName = 'Neals'

WAPI ContactCode = '101'

FANYA MAPENZI

Bado hakuna mkwamo kwa sababu muamala wa 2 unasubiri muamala wa 1 ukamilike, lakini muamala 1 bado haujasubiri muamala wa 2 ukamilike. Katika hali hii, ikiwa shughuli ya 1 itakamilisha kazi yake na kutekeleza taarifa ya COMMIT TRANSACTION, rasilimali ya data itafanya. itatolewa na muamala wa 2 utakuwa salama utaweza kuzuia kizuizi anachohitaji na kuendelea na vitendo vyake.

Tatizo hutokea wakati shughuli ya 1 inapojaribu kusasisha safu mlalo na ProductCode=l. Walakini, haitapokea kufuli ya kipekee inayohitajika kwa hili, kwani rekodi hii imefungwa na shughuli ya 2:

- Shughuli ya 1 - Hatua ya 3 SASISHA Jina la Bidhaa SET SET

= 'Kijaribu Kitambulisho cha DeadLock'

WAPI ProductCode = '1001'

FANYA MAPENZI

Muamala wa 1 utarudisha ujumbe wa maandishi wa hitilafu ufuatao baada ya sekunde chache. Matokeo ya mwisho yanaweza pia kuonekana katika Profaili ya Seva ya SQL (Mchoro 51.13):

Seva: Ujumbe 1205, Kiwango cha 13,

Jimbo la 50, Muamala wa Line 1 (Kitambulisho cha Mchakato 51) ulikuwa

kufungiwa kwenye rasilimali za kufuli kwa mchakato mwingine na amechaguliwa kama mwathirika wa kufuli. Rudia muamala.

Muamala wa 2 utakamilisha kazi yake kana kwamba shida haijawahi kuwepo:

(Safu mlalo 1 imeathiriwa)

(Safu mlalo 1 imeathiriwa)

Mchele. 51.13. Profaili ya Seva ya SQL hukuruhusu kufuatilia kufuli kwa kutumia Kufuli: Tukio la Grafu ya Deadlock na utambue rasilimali inayosababisha kufuli.

Utambuzi otomatiki wa msuguano

Kama inavyoonyeshwa kwenye msimbo ulio hapo juu, Seva ya SQL hutambua kiotomatiki hali ya msuguano kwa kuangalia michakato ya kuzuia na kurudisha nyuma miamala.

ambao walimaliza kazi ndogo zaidi. Seva ya SQL hukagua kila mara uwepo wa kufuli-mtambuka. Ucheleweshaji wa ugunduzi wa kufuli unaweza kutofautiana kutoka sifuri hadi sekunde mbili (kwa mazoezi, muda mrefu zaidi ambao nimelazimika kungojea hii ni sekunde tano).

Kushughulikia Deadlocks

Wakati mkwamo unatokea, muunganisho uliochaguliwa kama mwathirika wa msuguano lazima ujaribu tena muamala wake. Kwa kuwa kazi lazima ifanyike upya, ni vizuri kwamba shughuli ambayo imeweza kukamilisha kiasi kidogo cha kazi imerudishwa nyuma - ndiyo ambayo itarudiwa tangu mwanzo.

Msimbo wa hitilafu 12 05 unapaswa kukamatwa maombi ya mteja, ambayo inapaswa kuanzisha upya shughuli. Ikiwa kila kitu kitatokea kama inavyotarajiwa, mtumiaji hata hatashuku kuwa kizuizi kimetokea.

Badala ya kuruhusu seva yenyewe kuamua ni muamala gani wa kuchagua kama "mwathirika," muamala wenyewe unaweza "kuchezwa kama zawadi." Nambari ifuatayo, inapowekwa katika muamala, inaarifu SQL Server kwamba ikiwa kizuizi kitatokea muamala huu inapaswa kurudishwa nyuma:

WEKA DEADLOCKJPRIORITY CHINI

Kupunguza vikwazo

Ingawa mikwaruzo ni rahisi kutambua na kushughulikia, bado ni bora kuziepuka. Mapendekezo yafuatayo yatakusaidia kuepuka msuguano.

Jaribu kuweka miamala fupi na bila msimbo usio wa lazima. Iwapo msimbo fulani hauhitaji kuwepo katika muamala, ni lazima ueleweke kutoka kwayo.

Kamwe usifanye msimbo wa muamala kutegemea ingizo la mtumiaji.

Jaribu kuunda vifurushi na taratibu zinazopata kufuli kwa mpangilio sawa. Kwa mfano, jedwali A linasindika kwanza, kisha jedwali B, C, nk. Kwa hivyo, utaratibu mmoja utangojea wa pili na msuguano hauwezi kutokea kwa ufafanuzi.

Tengeneza mpangilio halisi ili kuhifadhi data iliyochukuliwa kwa wakati mmoja kwa karibu iwezekanavyo kwenye kurasa za data. Ili kufanikisha hili, tumia urekebishaji na uchague faharisi zilizounganishwa kwa busara. Kupunguza kuenea kwa blockages itasaidia kuzuia kuongezeka kwao. Vizuizi vidogo itasaidia kuepuka ushindani wao.

Usiongeze kiwango cha insulation isipokuwa lazima. Kiwango kikali cha kutengwa huongeza muda wa kufuli.

Mazingira ya Seva ya SQL hutoa idadi ya miundo tofauti ya udhibiti, bila ambayo haiwezekani kuandika algorithms yenye ufanisi.

Kuweka timu mbili au zaidi katika vikundi block moja inatekelezwa kwa kutumia maneno BEGIN na END:

<блок_операторов>::=

Amri zilizowekwa katika vikundi huchukuliwa kama amri moja na mkalimani wa SQL. Kikundi sawa kinahitajika kwa ajili ya ujenzi wa matawi ya polyvariant, ujenzi wa masharti na mzunguko. ANZA...MWISHO vitalu vinaweza kuwekwa.

Baadhi Amri za SQL haipaswi kuendeshwa pamoja na amri zingine ( tunazungumzia kuhusu timu Hifadhi nakala, mabadiliko ya muundo wa meza, taratibu zilizohifadhiwa na kadhalika), kwa hiyo kuingizwa kwao kwa pamoja katika BEGIN...END kujenga haruhusiwi.

Mara nyingi sehemu fulani ya programu lazima itekelezwe tu ikiwa hali fulani ya kimantiki imeridhika. Sintaksia ya taarifa ya masharti imeonyeshwa hapa chini:

<условный_оператор>::=

IF log_expression

( sql_statement | statement_block )

(taarifa_ya_sql | statement_block)]

Vitanzi vinapangwa kwa kutumia muundo ufuatao:

<оператор_цикла>::=

WAKATI logi_maneno

( sql_statement | statement_block )

( sql_statement | statement_block )

Kitanzi kinaweza kusimamishwa kwa lazima kwa kutekeleza amri BREAK katika mwili wake. Ikiwa unahitaji kuanza kitanzi tena bila kusubiri amri zote kwenye mwili kutekelezwa, lazima utekeleze amri ya ENDELEA.

Ili kubadilisha kauli nyingi za masharti moja au zilizowekwa kiota, tumia muundo ufuatao:

<оператор_поливариантных_ветвлений>::=

Ingizo_thamani ya CASE

LINI (linganisha_thamani |

log_expression ) BASI

usemi_wa_toto [,...n]

[ ELSE otherwise_expression ]

Ikiwa thamani ya pembejeo na thamani ya kulinganisha ni sawa, basi ujenzi unarudisha thamani ya pato. Ikiwa thamani parameta ya pembejeo haipatikani katika mistari yoyote ya WHEN...THEN, kisha thamani iliyobainishwa baada ya neno kuu la ELSE itarejeshwa.

Vitu vya msingi vya muundo wa hifadhidata ya seva ya SQL

Wacha tuangalie muundo wa kimantiki wa hifadhidata.

Muundo wa kimantiki inafafanua muundo wa meza, uhusiano kati yao, orodha ya watumiaji, taratibu zilizohifadhiwa, sheria, chaguo-msingi na vitu vingine vya hifadhidata.

Kimantiki, data katika Seva ya SQL imepangwa katika vitu. Vitu kuu vya hifadhidata ya Seva ya SQL ni pamoja na vitu vifuatavyo.

Maoni mafupi vitu kuu vya hifadhidata.

Majedwali

Data zote katika SQL ziko katika vitu vinavyoitwa meza. Majedwali yanawakilisha mkusanyiko wa habari yoyote kuhusu vitu, matukio, michakato ya ulimwengu wa kweli. Hakuna vitu vingine vinavyohifadhi data, lakini vinaweza kufikia data iliyo kwenye jedwali. Jedwali katika SQL zina muundo sawa na jedwali katika DBMS zingine zote na zina:

· mistari; kila mstari (au rekodi) inawakilisha seti ya sifa (mali) ya mfano maalum wa kitu;

· safu; kila safu (uwanja) inawakilisha sifa au mkusanyiko wa sifa. Uga wa kamba ni kipengele kidogo meza. Kila safu katika jedwali ina jina maalum, aina ya data na saizi.

Uwakilishi

Mionekano ni majedwali pepe ambayo yaliyomo yake huamuliwa na hoja. Kama majedwali halisi, mionekano ina safu wima na safu mlalo za data zilizopewa majina. Kwa watumiaji wa mwisho mwonekano unaonekana kama jedwali, lakini halina data, lakini inawakilisha data iliyo katika jedwali moja au zaidi. Taarifa ambayo mtumiaji huona kupitia mwonekano haijahifadhiwa kwenye hifadhidata kama kitu tofauti.

Taratibu zilizohifadhiwa

Taratibu zilizohifadhiwa ni kundi la amri za SQL zilizojumuishwa katika moduli moja. Kikundi hiki cha amri kinakusanywa na kutekelezwa kama kitengo kimoja.

Vichochezi

Vichochezi ni aina maalum ya taratibu zilizohifadhiwa ambazo huzinduliwa kiotomatiki data inapoongezwa, kubadilishwa au kufutwa kwenye jedwali.

Kazi

Kazi katika lugha za programu ni miundo ambayo mara nyingi huwa na kanuni inayoweza kutekelezwa. Chaguo za kukokotoa hufanya baadhi ya vitendo na data na kurejesha thamani fulani.

Fahirisi

Faharasa ni muundo unaohusishwa na jedwali au mtazamo na iliyoundwa ili kuharakisha utafutaji wa habari ndani yao. Faharasa hufafanuliwa kwenye safu wima moja au zaidi, zinazoitwa safu wima zilizoonyeshwa. Ina thamani zilizopangwa za safu wima au safu wima zilizo katika faharasa na marejeleo ya safu mlalo inayolingana katika jedwali la chanzo au mwonekano. Uzalishaji ulioboreshwa unapatikana kwa kupanga data. Kutumia faharasa kunaweza kuboresha utendaji wa utafutaji kwa kiasi kikubwa, lakini kuhifadhi faharasa kunahitaji nafasi ya ziada kwenye hifadhidata.


©2015-2019 tovuti
Haki zote ni za waandishi wao. Tovuti hii haidai uandishi, lakini hutoa matumizi bila malipo.
Tarehe ya kuundwa kwa ukurasa: 2016-08-08

01/05/15 28.1K

Wakati mwingine unataka sana kuweka mawazo yako kwa mpangilio, yatatue. Na bora zaidi, katika mlolongo wa kialfabeti na kimaudhui, ili uwazi wa kufikiri hatimaye uje. Sasa fikiria machafuko gani yangetokea" akili za elektroniki»kompyuta yoyote isiyo na muundo wazi wa data zote na Seva ya Microsoft SQL:

Seva ya MS SQL

Bidhaa hii ya programu ni mfumo wa usimamizi wa hifadhidata (DBMS) uliotengenezwa na Microsoft Corporation. Kwa udanganyifu wa data, iliyoundwa maalum Lugha ya Transact-SQL. Amri za lugha za kuchagua na kurekebisha hifadhidata hujengwa kwa msingi wa maswali yaliyopangwa:


Hifadhidata za uhusiano data imejengwa juu ya muunganisho wa wote vipengele vya muundo, ikiwa ni pamoja na kutokana na kutaga kwao. Hifadhidata za uhusiano zina usaidizi wa ndani wa aina za data za kawaida. Shukrani kwa hili, Seva ya SQL inaunganisha usaidizi wa kupanga data kiprogramu kwa kutumia vichochezi na taratibu zilizohifadhiwa.

Muhtasari wa Vipengele vya Seva ya MS SQL


DBMS ni sehemu ya safu ndefu ya programu maalum ambayo Microsoft imeunda kwa watengenezaji. Hii ina maana kwamba viungo vyote vya mlolongo huu (programu) vimeunganishwa kwa kina.

Hiyo ni, zana zao zinaingiliana kwa urahisi na kila mmoja, ambayo hurahisisha sana mchakato wa kukuza na kuandika msimbo wa programu. Mfano wa uhusiano kama huo ni mazingira ya programu ya MS Visual Studio. Kifurushi chake cha usakinishaji tayari kinajumuisha Toleo la SQL Server Express.

Bila shaka, hii sio tu DBMS maarufu kwenye soko la dunia. Lakini ni sawa ambayo inakubalika zaidi kwa kompyuta zinazoendesha Windows, kutokana na kuzingatia mfumo huu wa uendeshaji. Na sio tu kwa sababu ya hii.

Manufaa ya Seva ya MS SQL:

  • Ina kiwango cha juu cha utendaji na uvumilivu wa makosa;
  • Ni DBMS ya watumiaji wengi na inafanya kazi kwa kanuni ya seva ya mteja;

    Sehemu ya mteja ya mfumo inasaidia kuunda maombi ya mtumiaji na kuwatuma kwa seva kwa usindikaji.

  • Ushirikiano mkali na mfumo wa uendeshaji Windows;
  • Msaada kwa viunganisho vya mbali;
  • Msaada kwa aina maarufu za data, pamoja na uwezo wa kuunda vichochezi na taratibu zilizohifadhiwa;
  • Usaidizi uliojumuishwa kwa majukumu ya mtumiaji;
  • Kazi ya chelezo ya hifadhidata ya hali ya juu;
  • Kiwango cha juu cha usalama;
  • Kila toleo linajumuisha matoleo kadhaa maalum.

Maendeleo ya Seva ya SQL

Vipengele vya DBMS hii maarufu huonekana kwa urahisi wakati wa kuzingatia historia ya mageuzi ya matoleo yake yote. Tutakaa kwa undani zaidi tu juu ya matoleo ambayo watengenezaji walifanya mabadiliko muhimu na ya kimsingi:

  • Microsoft SQL Server 1.0 - iliyotolewa nyuma mnamo 1990. Hata wakati huo, wataalam walibainisha kasi kubwa usindikaji wa data, umeonyeshwa hata kwa mzigo wa juu katika hali ya watumiaji wengi;
  • SQL Server 6.0 - iliyotolewa mnamo 1995. Toleo hili lilikuwa la kwanza ulimwenguni kutekeleza usaidizi wa vishale na urudufishaji wa data;
  • SQL Server 2000 - katika toleo hili seva ilipokea injini mpya kabisa. Mabadiliko mengi yameathiriwa tu upande wa mtumiaji maombi;
  • SQL Server 2005 - scalability ya DBMS imeongezeka, na mchakato wa usimamizi na usimamizi umerahisishwa sana. Ilitekelezwa API mpya kwa msaada jukwaa la programu.WAVU ;
  • Matoleo yaliyofuata yalilenga kukuza mwingiliano wa DBMS katika kiwango teknolojia za wingu na zana za uchanganuzi wa biashara.

KATIKA seti ya msingi Mfumo unajumuisha huduma kadhaa za Mipangilio ya SQL Seva. Hizi ni pamoja na:


Meneja wa Usanidi. Inakuruhusu kudhibiti kila kitu mipangilio ya mtandao na huduma za seva ya hifadhidata. Inatumika kusanidi Seva ya SQL ndani ya mtandao.


Huduma hutumika kusanidi kutuma ripoti za makosa kwa usaidizi wa Microsoft.


Inatumika kuboresha utendakazi wa seva ya hifadhidata. Hiyo ni, unaweza kubinafsisha utendakazi wa Seva ya SQL ili kukidhi mahitaji yako kwa kuwezesha au kuzima vipengele na vipengele fulani vya DBMS.

Seti ya huduma zilizojumuishwa katika Seva ya Microsoft SQL inaweza kutofautiana kulingana na toleo na toleo kifurushi cha programu. Kwa mfano, katika toleo la 2008 huwezi kupata Usanidi wa Eneo la Uso wa Seva ya SQL.

Kuanzisha Seva ya Microsoft SQL

Kwa mfano, toleo la 2005 la seva ya hifadhidata itatumika. Seva inaweza kuanza kwa njia kadhaa:

  • Kupitia shirika Meneja wa Usanidi wa Seva ya SQL. Katika dirisha la programu iliyo upande wa kushoto, chagua "Huduma za SQL Server 2005", na kulia - mfano wa seva ya hifadhidata tunayohitaji. Tunaweka alama kwenye menyu ndogo kitufe cha kulia panya chagua "Anza".

  • Kutumia mazingira Studio Express ya Usimamizi wa Seva ya SQL. Haijajumuishwa kwenye kifurushi cha usakinishaji cha toleo la Express. Kwa hiyo, lazima ipakuliwe tofauti na tovuti rasmi ya Microsoft.

Kuanzisha seva ya hifadhidata, zindua programu. Katika sanduku la mazungumzo " Muunganisho kwa seva"Katika uwanja wa "Jina la seva", chagua mfano tunaohitaji. Katika shamba" Uthibitisho"acha thamani" Uthibitishaji wa Windows" Na bonyeza kitufe cha "Unganisha":

Misingi ya Utawala wa Seva ya SQL

Kabla ya kuanza Seva ya MS SQL, unahitaji kujijulisha kwa ufupi na uwezo wa msingi wa usanidi na usimamizi wake. Hebu tuanze na zaidi uhakiki wa kina huduma kadhaa kutoka kwa DBMS:

  • Usanidi wa Eneo la Uso wa Seva ya SQL- hapa ndipo unapaswa kwenda ikiwa unahitaji kuwezesha au kuzima kipengele chochote cha seva ya hifadhidata. Chini ya dirisha kuna pointi mbili: ya kwanza inawajibika vigezo vya mtandao, na kwa pili unaweza kuamilisha huduma au kitendakazi ambacho kimezimwa kwa chaguo-msingi. Kwa mfano, wezesha ujumuishaji na jukwaa la NET kupitia hoja za T-SQL: