Muundo wa udhibiti wa SQL. Maelezo ya jukumu la hifadhidata isiyobadilika. Hebu tuweke yote pamoja

Kiwango cha SQL kinafafanua kauli mbili: GRANT na BATILISHA ili kutoa na kubatilisha mapendeleo, mtawalia.

Taarifa ya ruzuku ya upendeleo ina muundo ufuatao:

RUZUKU (<список действий>| BADILIKO ZOTE)

WASHA<имя_объекта>

KWAMBA (<имя_пользователя>| UMMA)

Hapa orodha ya vitendo inafafanua seti ya vitendo kutoka kwa orodha halali ya vitendo kwenye kitu cha aina fulani.

Kigezo cha ALL PRIVILEGES kinaonyesha kuwa vitendo vyote vinavyoruhusiwa kwa vitu vya aina hii vinaruhusiwa.

<имя_объекта>- inataja jina la kitu maalum: meza, mtazamo, utaratibu uliohifadhiwa, trigger.

<имя_пользователя>au UMMA huamua ni nani anayepewa mapendeleo haya.

Kigezo cha WITH GRANT OPTION ni hiari na kinafafanua hali ambayo sio tu haki ya vitendo vilivyobainishwa, lakini pia haki ya kuhamisha haki hizi kwa watumiaji wengine. Katika kesi hii, mtumiaji anaweza kuhamisha haki tu ndani ya upeo wa vitendo vyake vinavyoruhusiwa.

Hebu tuangalie mfano, tuseme tuna watumiaji watatu wenye majina ya kipekee kabisa user1, user2 na user3. Wote ni watumiaji wa hifadhidata moja.

Userl aliunda kipengee cha Tab1, yeye ndiye mmiliki wa kitu hiki na anaweza kuhamisha haki za kufanya kazi na kifaa hiki kwa watumiaji wengine. Wacha tuseme kwamba mtumiaji2 ni mendeshaji ambaye lazima aingize data kwenye Tab1 (kwa mfano, jedwali la maagizo mapya), na mtumiaji3 ni meneja wa idara ambaye lazima apitie data iliyoingizwa mara kwa mara.

Kwa kitu cha aina ya jedwali, orodha kamili ya vitendo halali ni seti ya shughuli nne: CHAGUA, INGIA, FUTA, USASISHA. Katika kesi hii, operesheni ya sasisho inaweza kupunguzwa kwa safu kadhaa.

Umbizo la jumla la taarifa ya upendeleo wa kitu cha aina ya jedwali litakuwa na sintaksia ifuatayo:

RUZUKU ([.WEKA][.FUTA][.SASISHA

(<список столбцов>)]) WASHA<имя_таблицы>

KWA(<имя_пользователя>| UMMA)

Katika kesi hii, ni muhimu kutekeleza kazi zifuatazo:

Kazi hizi zinamaanisha kuwa mtumiaji2 ana haki ya kuingiza safu mlalo mpya pekee katika uhusiano wa Tab1, na mtumiaji3 ana haki ya kutazama safu mlalo zote katika jedwali la Tab1.

Wakati wa kugawa haki za ufikiaji kwa operesheni ya urekebishaji, unaweza kutaja safu wima ambazo mtumiaji anaweza kubadilisha. Hebu tufikiri kwamba meneja wa idara ana haki ya kubadilisha bei ya huduma zinazotolewa. Wacha tufikirie kuwa bei imeainishwa kwenye safu ya SENA ya Jedwali Tab1. Halafu operesheni ya kupeana upendeleo kwa mtumiaji3 inaweza kubadilika na kuonekana kama hii:

GRANT CHAGUA, SASISHA (SENA)

Ikiwa mtumiaji wetu1 atachukulia kuwa mtumiaji4 anaweza kuchukua nafasi yake ikiwa hayupo, basi anaweza kumpa mtumiaji huyu haki zote za kufanya kazi na jedwali iliyoundwa Tab1.

PEWA HUDUMA YOTE

KWA CHAGUO LA RUZUKU

Katika kesi hii, mtumiaji4 anaweza kugawa marupurupu ya kufanya kazi na jedwali la Tab1 kwa kukosekana kwa mmiliki wa kitu cha mtumiaji1. Kwa hivyo, ikiwa mtumiaji mpya wa mtumiaji5 anaonekana, anaweza kumpa haki za kuingiza safu mpya kwenye meza na amri:

Ikiwa, wakati wa kuhamisha mamlaka, seti ya shughuli kwenye kitu ni mdogo, basi mtumiaji ambaye mamlaka haya yanahamishiwa anaweza kuhamisha kwa mtumiaji mwingine tu mamlaka ambayo anayo, au sehemu ya mamlaka haya. Kwa hivyo, ikiwa mtumiaji4 amekabidhiwa mamlaka yafuatayo:

TOA CHAGUA, SASISHA, FUTA

KWA CHAGUO LA RUZUKU

basi mtumiaji4 hataweza kukabidhi ruhusa za kuingiza data kwa mtumiaji5, kwa sababu operesheni hii haijajumuishwa kwenye orodha ya wale wanaoruhusiwa kwake.

Mbali na kugawa moja kwa moja haki za kufanya kazi na jedwali, njia bora ya ulinzi wa data inaweza kuwa kuunda maoni ambayo yatakuwa na safu wima muhimu tu kwa mtumiaji maalum kufanya kazi naye na kutoa haki za kufanya kazi na maoni haya kwa mtumiaji.

Kwa sababu mionekano inaweza kulingana na maswali ya muhtasari, utendakazi wa urekebishaji hauruhusiwi kwenye mionekano hii, na kwa hivyo seti ya vitendo halali vya maoni kama hayo ni mdogo kwa operesheni ya CHAGUA. Ikiwa maoni yanahusiana na uteuzi kutoka kwa jedwali la msingi, basi shughuli zote 4 zitakuwa halali kwa mwonekano kama huo - CHAGUA, INGIZA, SASISHA na UFUTE.

Ili kubatilisha upendeleo uliokabidhiwa hapo awali, kiwango cha SQL kinafafanua TAARIFA YA REVOKE. Opereta ya upendeleo ya kubatilisha ina syntax ifuatayo:

BATISHA (<список операций>| BADILIKO ZOTE)

WASHA<имя_объекта>

KUTOKA (<список пользователей | PUBLIC }

(KESI | ZUIA)

Chaguo za CASCADE au RESTRICT huamua jinsi upendeleo unapaswa kubatilishwa. Chaguo la CASCADE hubatilisha mapendeleo ya sio tu ya mtumiaji ambaye alirejelewa moja kwa moja katika taarifa ya GRANT wakati upendeleo ulitolewa, lakini pia watumiaji wote ambao mtumiaji huyo aliwapa mapendeleo kwa kutumia CHAGUO LA RUZUKU.

Kwa mfano, wakati wa kutumia operesheni

FUTA MAPENZI YOTE

KWA mtumiaji4 CASCADE

haki za mtumiaji5, ambaye mtumiaji4 aliweza kumpa haki, pia zitabatilishwa.

Chaguo la RESTRICT huweka kikomo cha kubatilisha upendeleo kwa mtumiaji anayerejelewa moja kwa moja tu katika taarifa ya BATILISHA. Lakini ikiwa umekabidhi marupurupu, mwendeshaji huyu hatatekelezwa kwa hivyo, kwa mfano, operesheni:

FUTA MAPENZI YOTE

KWA mtumiaji4 ZUIA

haitatekelezwa kwa sababu mtumiaji4 amehamisha sehemu ya mamlaka yake kwa mtumiaji5.

Kwa kutumia taarifa ya REVOKE, unaweza kubatilisha haki zote au baadhi tu ya marupurupu uliyopewa hapo awali kwa kufanya kazi na kitu mahususi. Wakati huo huo, kutoka kwa maelezo ya syntax ya opereta wa kubatilisha upendeleo, ni wazi kuwa unaweza kuchukua marupurupu na operator mmoja kutoka kwa watumiaji kadhaa mara moja au kutoka kwa kundi zima la UMMA.

Kwa hivyo, matumizi sahihi ya opereta REVOKE itakuwa:

KWA mtumiaji2, mtumiaji4 CASCADE

Wakati wa kufanya kazi na vitu vingine, orodha ya shughuli zinazotumiwa katika taarifa za GRANT na KUBATA hubadilika.

Kwa chaguo-msingi, hatua inayolingana na kuendesha (kutekeleza) utaratibu uliohifadhiwa hupewa washiriki wote wa kundi la UMMA.

Ikiwa unahitaji kubadilisha hali hii, lazima uandike taarifa ya REVOKE baada ya kuunda utaratibu uliohifadhiwa

KWENYE KISASA CHA UMMA

Na sasa unaweza kugawa haki mpya kwa mtumiaji4

Msimamizi wa mfumo anaweza kuruhusu mtumiaji fulani kuunda na kurekebisha meza katika hifadhidata fulani. Kisha anaweza kuandika taarifa ya ruzuku kama ifuatavyo:

RUZUKU UTENGENEZA JEDWALI BADILISHA JEDWALI KUONDOKA

Katika hali hii, mtumiaji1 anaweza kuunda, kurekebisha, au kufuta majedwali katika hifadhidata ya DB_LIB, lakini hawezi kuruhusu watumiaji wengine kuunda au kurekebisha majedwali katika hifadhidata hii kwa sababu amepewa ruhusa isiyoweza kukabidhiwa.

Katika baadhi ya DBMS, mtumiaji anaweza kupewa haki ya kuunda hifadhidata. Kwa mfano, katika MS SQL Server Msimamizi wa Mfumo inaweza kumpa mtumiaji main_user haki ya kuunda hifadhidata yake mwenyewe kwenye seva hii. Hii inaweza kufanywa kwa amri ifuatayo:

RUZUKU TUNZA HABARI

Kulingana na kanuni ya uongozi, mtumiaji mkuu, baada ya kuunda hifadhidata yake mwenyewe, sasa anaweza kutoa haki za kuunda au kubadilisha vitu vyovyote kwenye hifadhidata hii kwa watumiaji wengine.

Katika DBMS zinazotumia usanifu wa msingi mmoja, ruhusa kama hizo haziruhusiwi. Kwa mfano, katika Oracle DBMS database moja tu imeundwa kwenye seva, lakini watumiaji wanaweza kufanya kazi katika ngazi ya subschema (sehemu ya meza za database na vitu vinavyohusiana). Kwa hiyo, dhana ya marupurupu ya mfumo huletwa hapo. Kuna mengi yao, marupurupu 80 tofauti.

Ili kuruhusu mtumiaji kuunda vitu ndani ya hifadhidata hii, dhana ya upendeleo wa mfumo hutumiwa, ambayo inaweza kupewa mtumiaji mmoja au zaidi. Wao hutolewa tu kwa vitendo na aina maalum ya kitu. Kwa hiyo, ikiwa msimamizi wa mfumo amempa mtumiaji haki ya kuunda meza (CREATE TABLE), basi ili kuunda trigger kwa meza, lazima apewe fursa nyingine ya mfumo CREATE TRIGGER. Mfumo wa ulinzi katika Oracle unachukuliwa kuwa mojawapo ya nguvu zaidi, lakini hii pia ina upande wa chini - ni ngumu sana. Kwa hiyo, kazi ya usimamizi katika Oracle inahitaji ujuzi mzuri wa semantiki zote za kanuni za kusaidia haki za upatikanaji na utekelezaji wa kimwili wa uwezo huu.

Rick Dobson, Ph.D. Tafsiri iliyochaguliwa na S. A. Ledenev

Makala haya yanafafanua jinsi ya kudhibiti usalama wa seva ya SQL kwa kutumia Ufikiaji na maktaba ya Vipengee vya Kudhibiti Vilivyosambazwa vya SQL (SQL-DMO) katika Visual Basic for Applications (VBA).

Utangulizi

Makala hii inalenga hasa watengenezaji wa miradi ya ADP. Unaweza kuwa unafahamu mambo 2 kuhusu usalama wa seva ya SQL. Kwanza, usalama sio chaguo kama ilivyokuwa kwenye Jet. Pili, mfano wa usalama wa Seva ya SQL ni tofauti na mtindo wa usalama wa Upataji. Hata kama una ufahamu mbaya wa usalama wa Seva ya SQL, makala haya yatakufundisha jinsi ya kuisanidi ili kulinda rasilimali za mradi wako.

Nakala hii inaweza pia kuwa muhimu kwa wasimamizi wa seva ya SQL. Masuluhisho yanayotolewa hapa yanaweza kuwasaidia kudhibiti usalama wa seva kwa kutumia Ufikiaji. Makala haya yanaweza kuwasaidia wasimamizi kujifunza jinsi ya kudhibiti usalama wa seva bila kutumia zana za picha za Enterprise Manager au kuendesha hati za Transact SQL (T-SQL) kutoka Query Analyzer. Kwa kujifunza jinsi ya kudhibiti usalama wa seva kwa kutumia Ufikiaji, wasimamizi wana chaguo la kuunda suluhisho la haraka.

Nakala inaweza kugawanywa katika sehemu mbili kuhusu usalama Seva ya SQL 7.0 na SQL Server 2000. Inaanza na dhana ya usalama wa Seva ya SQL, ikilenga jinsi ya kudhibiti usalama kwa kutumia Ufikiaji. Maelezo haya yanatosha kuunda programu za watumiaji wengi na vikundi tofauti vya watumiaji ambao wana haki zilizobainishwa wazi za kutumia vitu vya seva. Sehemu ya pili ya makala inaonyesha suluhu za programu kulingana na udhibiti wa vitu vya SQL-DMO (SQL Distributed Management Objects) kwa kutumia Microsoft Visual Basic® for Applications (VBA). Kwa sababu SQL-DMO ina muundo wa muundo wa kitu wa daraja sawa na muundo wa ujenzi wa kitu cha Ofisi ya Microsoft, kinachohitajika ni kujifunza zaidi kuhusu vitu, sifa, mbinu na matukio ya SQL-DMO kuhusu usalama. Kwa kuongeza, watengenezaji wa programu za Access 2002 hawawezi kufanya bila kupanga kazi za usanidi wa usalama katika VBA, kwa kuwa hazipatikani kutoka kwenye orodha ya Usalama wa Hifadhidata.

Dhana ya Usalama ya Seva ya SQL

Sehemu hii ina sehemu 4 kuu. Utangulizi huanza na maelezo ya uthibitishaji - mchakato wa kuangalia mtumiaji kwa haki ya kupata hifadhidata ya seva. Kwa kutumia Kidhibiti cha Biashara, Seva ya SQL hutoa aina mbili za uthibitishaji. Sehemu ya kwanza ya sehemu inaonyesha tofauti na kufanana kati yao.

Ifuatayo, tunazungumza juu ya wazo la mtumiaji aliyeidhinishwa ambaye hutumikia kuunganisha kwenye seva. Watumiaji walioidhinishwa huitwa kuingia. Aina mbili za kuingia zinalingana na mifano miwili ya uthibitishaji wa seva ya SQL. Ingia zinawajibika kwa haki za ufikiaji kwa seva.

Sehemu ya tatu inaleta dhana ya watumiaji. Seva ya SQL inahifadhi dhana ya watumiaji kama dhana inayowatambulisha watumiaji wa hifadhidata. Kwa kawaida kuna logi kadhaa kwenye seva, kila kuingia kunahusishwa na watumiaji kadhaa - moja kwa kila hifadhidata ambayo kuingia kunaruhusiwa kufikia. Watumiaji wa kuingia na watumiaji wanaweza kuwa wa majukumu yasiyobadilika ambayo yanaelezea seti ya ruhusa. Unaweza kudhibiti tabia ya watu walioingia na watumiaji kwa kudhibiti uanachama wao katika majukumu yasiyobadilika ya seva na majukumu yasiyobadilika ya hifadhidata, mtawalia.

Sehemu ya 4 inazungumza kuhusu majukumu ya hifadhidata yaliyoainishwa na mtumiaji.

Uthibitisho

Uthibitishaji unafafanuliwa kama mchakato wa kuidhinisha mtumiaji kwenye mfano wa seva ya SQL na hifadhidata fulani inayohusishwa na mtumiaji. Uidhinishaji unahusishwa na kuingia, ambayo inaelezea haki za mtumiaji kwenye seva. Uidhinishaji hufanya kazi kama ufunguo wa ngome. Ikiwa ufunguo utatoshea kufuli, mtu huitumia kupata ufikiaji wa kila kitu ndani ya chumba ambacho mlango wake ulikuwa umefungwa kwa kufuli hiyo. Seva ya SQL kawaida huwa na kufuli kadhaa na funguo tofauti kwao. Kila ufunguo hutoa ufikiaji wa seti tofauti za hifadhidata zilizo kwenye seva.

Seva ya SQL inasaidia aina mbili za uthibitishaji: Seva ya SQL na Microsoft Windows® (au Windows NT® yenye SQL Server 7.0). Aina hizi mbili huamua ni nani anayefanya uthibitishaji wa kuingia: seva ya SQL au Windows. Kwa uthibitishaji wa Windows, watumiaji wameamini Akaunti kufikia seva ya SQL. Akaunti hizi zinathibitishwa na Windows, lakini seva ya SQL "inajua" jina la akaunti. Uthibitishaji wa Windows huruhusu watumiaji kuingia kwenye Windows na seva ya SQL kwa kuingiza nenosiri moja tu. Kwa uthibitishaji wa Seva ya SQL, seva ya SQL yenyewe hufanya uidhinishaji. Kwa aina yoyote ya uthibitishaji, seva ya SQL lazima ijue kumbukumbu zilizoidhinishwa.

Kuna faida na hasara kwa aina ya kwanza na ya pili, lakini uthibitishaji wa Windows ni bora zaidi. Windows ina utaratibu changamano zaidi wa uidhinishaji, na inamwachilia msimamizi wa seva ya SQL kutokana na kudhibiti akaunti. Kwa upande mwingine, sio mifumo yote ya uendeshaji inayounga mkono seva ya SQL inasaidia uthibitishaji wa Windows. Kwa mfano, Microsoft Data Engine (MSDE) iliyosakinishwa na Microsoft Office 2000 na Microsoft SQL Server 2000 Desktop Engine (MSDE 2000) iliyosakinishwa na Office XP: zote mbili zinaweza kufanya kazi kwenye Windows 98, ambayo haiauni uthibitishaji wa Windows. Au SQL Server 7.0 na MSDE zinazoendeshwa kwenye Windows 95. Baadhi ya mashirika yanaweza kupendelea uwezo wa kudhibiti ufikiaji wa rasilimali za hifadhidata katika kiwango cha DBA badala ya kiwango cha kimataifa cha Msimamizi wa Windows.

Mfano wowote wa Seva ya SQL unaweza kuwa na aina zozote kati ya mbili za uthibitishaji ambazo zinaweza kuwekwa katika Kidhibiti cha Biashara (Nitashughulikia aina ya tatu baadaye katika nakala hii). Hati za Seva ya SQL hufafanua neno muunganisho wa hali mchanganyiko kwa Seva ya SQL, ambayo inasaidia uthibitishaji wa Windows na SQL Server. Ikiwa seva inasaidia tu uthibitishaji wa Windows, basi seva ina aina ya uthibitishaji wa Windows (au Windows NT). Kwa chaguo-msingi, MSDE imesakinishwa na aina ya uthibitishaji mchanganyiko. MSDE 2000, kwa upande mwingine, husakinisha na uthibitishaji wa Windows kwa chaguo-msingi. Wasanidi programu na wasimamizi wanaotumia Kidhibiti cha Biashara wanaweza kubadilisha aina ya uthibitishaji kwa kutumia zana za picha. Pia, programu yoyote inaweza kutumia maktaba ya SQL-DMO kubadilisha aina ya uthibitishaji wa seva.

Ingia na majukumu maalum ya seva

Mradi wa ADP una dirisha la Hifadhidata sawa na suluhisho za jadi za Jet. Hata hivyo, mradi wa ADP unaunganishwa na seva kupitia muunganisho wa OLE DB, tofauti na hifadhidata ya Jet. Katika mradi wa ADP, aina ya kuingia imebainishwa kwenye kisanduku cha mazungumzo cha Sifa za Kiungo cha Data. Kuita mazungumzo haya: kutoka kwa dirisha la hifadhidata, chagua menyu ya Faili, chagua Muunganisho kutoka kwa menyu.

Sanduku la mazungumzo la Chaguo za Muunganisho hukuruhusu kuchagua seva ya hifadhidata, kuingia, na hifadhidata ambayo mradi utaunganishwa kupitia OLE DB. Kuna njia mbili za kuunganisha kwenye seva. Chaguo la kwanza huchagua matumizi ya usalama wa Windows NT jumuishi. Hii inaitwa uthibitishaji wa Windows. Kwa kuchagua chaguo hili, huna haja ya kutoa kuingia na nenosiri. Hii ni kwa sababu Windows inaidhinisha mtumiaji wakati Windows inapoanza. Wakati chaguo la kutumia usalama wa ndani limechaguliwa, mradi wa ADP hutuma kuingia kwa Windows kwenye seva ya SQL wakati wa kujaribu kuunda muunganisho wa OLE DB kwake. Kwa kuchagua chaguo la pili (tumia jina maalum la mtumiaji na nenosiri), lazima ueleze kuingia kwa seva ya SQL. Katika uwanja wa jina la mtumiaji, jina la kawaida la kuingia la seva ya SQL lazima liingizwe - kuingia kunaungwa mkono na seva hii ya SQL. Nenosiri ni chaguo, lakini inashauriwa sana kutumia nenosiri, kwa kuwa pamoja na kuingia, nenosiri hutoa kiwango cha ziada cha usalama.

Ingawa kuingia ni muhimu wakati wa kuunda muunganisho wa OLE DB katika mradi wa ADP, kuingia peke yake hakutoshi kutoa haki za kufanya kazi zozote kwenye seva au hifadhidata. Kuna dhana ya uanachama wa kuingia katika majukumu yasiyobadilika ya seva, ambayo huruhusu mradi wa ADP kutekeleza baadhi ya vipengele vya seva, kama vile kuunda hifadhidata mpya na kudhibiti kuingia. Kulingana na toleo la seva ya SQL ambayo mradi wa ADP unaunganisha, kuna majukumu saba au nane ya seva ya kudumu. SQL Server 7.0 na MSDE hutoa majukumu saba ya seva isiyobadilika, wakati SQL Server 2000 na MSDE 2000 hutoa nane. Vitabu vya SQL Server Online (BOL) vina hati za kina kuhusu majukumu yasiyobadilika ya seva, ikijumuisha usemi wa T-SQL wa kukabidhi na kuondoa kumbukumbu kutoka kwa washiriki wa jukumu. Kwa mfano, sehemu ya Majukumu ya BOL inazungumza kuhusu sehemu za seva zisizobadilika na seti inayolingana ya ruhusa za kufikia hifadhidata, kama vile kutazama na kuandika kwenye jedwali.

Jedwali lifuatalo linatoa muhtasari wa haraka wa majina ya jukumu la seva isiyobadilika na maelezo mafupi kuyahusu. Unaweza kuendesha utaratibu uliohifadhiwa wa sp_helpsrvrole ili kupata orodha ya majina ya jukumu la seva isiyobadilika. Utekelezaji wa utaratibu uliohifadhiwa wa sp_srvrolepermission huonyesha orodha ya kina ya vitendakazi kwa kila jukumu lisilobadilika la seva. Kuna tofauti kati ya majukumu ya seva isiyobadilika katika matoleo ya 7.0 na 2000 ya SQL Server. Kwa mfano, bulkadmin ni jukumu jipya katika SQL Server 2000. Zaidi ya hayo, taarifa ya DROP DATABASE ilipatikana tu kwa jukumu la sysadmin katika SQL Server 7.0, na SQL Server 2000 inaruhusu wanachama wa jukumu la dbcreator kutekeleza utaratibu huu pia.

Jina la jukumu la seva lisilobadilika

Maelezo ya jukumu la seva isiyobadilika

sysadmin Tekeleza usemi wowote wa seva au hifadhidata
sevaadmin Utawala wa seva, usanidi, anza, acha.
setupadmin Usimamizi wa seva zilizounganishwa na haki ya kuendesha taratibu zilizohifadhiwa katika hatua ya kuanzisha seva.
msimamizi wa usalama Usimamizi wa kuingia na nywila. Inaweza kutoa haki ya kuunda hifadhidata mpya.
processadmin Utekelezaji wa amri ya KILL.
dbcreator Kuunda, kubadilisha, kubadilisha jina na kufuta hifadhidata.
diskadmin Kusimamia faili kwenye diski.
bulkadmin Utekelezaji wa taarifa za BULK INSERT.

Kuingia kwa sa ni kuingia kwa seva maalum ya SQL. Kuingia huku ni mwanachama wa kikundi cha sysadmin na hutoa haki ya kufanya kazi zozote kwenye seva. Seva ya SQL huunda kuingia huku wakati wa kusakinisha na haiwezi kufutwa. Mara baada ya ufungaji kukamilika, kuingia kwa sa hakuna nenosiri. Inahitajika kuweka nenosiri la sa ili kuhakikisha usalama wa seva yako ya hifadhidata, haswa kwa seva zilizo na aina mchanganyiko za uthibitishaji. Kumbuka: seva zilizo na uthibitishaji wa Windows hazikubali au kuchakata kuingia kwa seva ya SQL.

Wakati wa kusakinisha seva ya SQL kwenye Windows 98 au Windows ME, seva husakinishwa kila mara na aina ya uthibitishaji mseto, kwa hivyo inaweza kukubali kuingia kwa seva ya SQL. Aina za uthibitishaji chaguo-msingi hutofautiana kwa SQL Server 7.0 na MSDE kutoka SQL Server 2000 na MSDE 2000 iliyosakinishwa kwenye Windows 2000 na Windows NT. Kwa SQL Server 7.0 na MSDE, mchakato wa usakinishaji chaguo-msingi husakinisha seva na aina mchanganyiko ya uthibitishaji. Kinyume chake, SQL Server 2000 na MSDE 2000 zimesakinishwa na uthibitishaji wa Windows kwa chaguo-msingi. Zaidi ya hayo, mchakato wa usakinishaji wa Toleo la 2000 huwapa washiriki wa kikundi cha Wasimamizi wa Windows kwa jukumu la seva isiyobadilika ya sysadmin. Kwa hiyo, kuingia hizi ni sawa na kuingia kwa sa, ambayo ina udhibiti kamili juu ya seva.

Watumiaji na majukumu maalum ya hifadhidata

Kwa kawaida, watumiaji hufikia Seva ya SQL kufanya kazi na hifadhidata moja au zaidi. Kwa kusudi hili, Seva ya SQL ina utaratibu wa kulinganisha logi na hifadhidata. Kama vile seva ya SQL inaweza kuwa na akaunti moja au zaidi, kila kuingia kunaweza kuwa na akaunti moja au zaidi zinazohusiana nayo. Walakini, akaunti moja inalingana na kuingia moja tu (isipokuwa mbili). Nyaraka za Seva ya SQL hufafanua akaunti kama watumiaji wa hifadhidata (au watumiaji). Kila mtumiaji wa hifadhidata anaweza kufikia hifadhidata hii.

Seva ya SQL inaweza kuwapa watumiaji wa hifadhidata umiliki wa hifadhidata na ruhusa ya kutumia vitu vya hifadhidata. Seva ya SQL hutoa mgawo wa ruhusa ndani ya hifadhidata katika viwango viwili huru. Katika kiwango cha kwanza, unaweza kukabidhi kundi moja la ruhusa kwa mtumiaji. Nyaraka za Seva ya SQL zinafafanua makundi haya kama majukumu yasiyobadilika ya hifadhidata. Ninaziita nguzo za ruhusa kwa sababu zinaweza kuchanganya ruhusa kwenye vitu vingi vya hifadhidata. Kwa mfano, jukumu moja lisilobadilika (db_datareader) hukuruhusu kusoma data kutoka kwa jedwali lolote kwenye hifadhidata—sio jedwali moja au mbili mahususi tu. Katika kiwango cha pili, unaweza kupeana ruhusa katika kiwango cha vitu maalum vya hifadhidata. Seva ya SQL hukuruhusu kuchanganya mbinu zote mbili: mtumiaji anaweza kuwa mwanachama wa jukumu moja au zaidi lisilobadilika la hifadhidata na pia kuwa na ruhusa maalum kwenye vitu maalum vya hifadhidata. Nitashughulikia udhibiti wa ruhusa kwenye vitu maalum vya hifadhidata katika sehemu inayofuata.

Watumiaji wawili maalum wanaweza kuhusishwa na kuingia zaidi ya moja. Hawa ndio watumiaji wa dbo na wageni. Mtumiaji wa dbo ni mwanachama wa jukumu la seva isiyobadilika ya sysadmin, na anaweza kuunda vitu kwenye seva, kama vile hifadhidata au jedwali la hifadhidata. Mtumiaji ambaye kuingia kwake si kwa jukumu la seva isiyobadilika ya sysadmin pia anaweza kuunda vitu vya hifadhidata, kama vile majedwali.

Mwonekano wa vitu kwenye Dirisha la Hifadhidata ya Mradi wa ADP inategemea ikiwa kuingia kwa mradi ni kwa jukumu la seva isiyobadilika ya sysadmin. Ikiwa kuingia kwa mradi wa ADP ni mwanachama wa jukumu la sysadmin, Dirisha la Hifadhidata huonyesha vitu vyote vinavyomilikiwa na mtumiaji wa dbo, bila mabano baada ya majina yao. Kwa watumiaji wa dbo, vitu vyote vinavyomilikiwa na watumiaji isipokuwa dbo huonyeshwa na jina la mtumiaji lililoambatanishwa kwenye mabano baada ya jina la kitu cha hifadhidata. Ikiwa kuingia kwa mradi wa ADP sio kwa jukumu la sysadmin, majina ya vitu vinavyomilikiwa na mtumiaji huyu yanaonyeshwa kwenye dirisha la hifadhidata bila mabano. Majina ya vitu ambavyo mmiliki wake ni dbo yanaonyeshwa na kiambishi tamati (dbo). Vipengee ambavyo wamiliki wake si kuingia kwa mradi wa ADP au mtumiaji wa dbo havionyeshwi kwenye Dirisha la Hifadhidata.

Waandikishaji wengi wana watumiaji kwa kila hifadhidata wanayoweza kufikia. Hata hivyo, kuingia kunaweza kufikia hifadhidata hata bila mtumiaji katika hifadhidata hiyo ikiwa hifadhidata ina mtumiaji aliyejitolea. Jina la mtumiaji huyu ni mgeni, ambaye ni mtumiaji wa kuingia bila akaunti za hifadhidata. Mtumiaji aliyealikwa hajahusishwa na kuingia kwenye akaunti. Unaweza kupeana ruhusa kwa mtumiaji mgeni kama tu mtumiaji mwingine yeyote kwenye hifadhidata. Hii inakuwezesha kusanidi haki za kuingia ambazo hazina watumiaji maalum katika hifadhidata maalum.

Wanachama wa jukumu la seva isiyobadilika ya sysadmin wana haki zisizo na kikomo kwa hifadhidata yoyote kwenye seva. Kwa hivyo, washiriki wa jukumu hili wanaweza kufikia hifadhidata hata kama hifadhidata haina watumiaji.

Mojawapo ya njia za haraka na rahisi zaidi za kumpa mtumiaji haki za kutekeleza majukumu katika hifadhidata ni kumpa mtumiaji mshiriki wa majukumu mahususi ya hifadhidata. Kuna majukumu tisa ya hifadhidata isiyobadilika katika Seva ya SQL, na ni sawa kwa SQL Server 7.0 na SQL Server 2000. Majina na maelezo mafupi ya majukumu ya hifadhidata yasiyobadilika yameonyeshwa katika jedwali lifuatalo. Unaweza kuendesha sp_helpdbfixedrole utaratibu uliohifadhiwa ili kupata orodha ya majina ya jukumu la hifadhidata isiyobadilika. Kupiga simu kwa utaratibu uliohifadhiwa wa sp_dbfixedrolepermission kutarudisha jedwali lililo na ruhusa maalum kwa kila moja. jukumu la kudumu Hifadhidata.

Jina la jukumu la hifadhidata lisilohamishika

Maelezo ya jukumu la hifadhidata isiyobadilika

db_mmiliki Ruhusa isiyo na kikomo katika hifadhidata.
db_accessadmin Kuongeza na kuondoa watumiaji wa hifadhidata.
db_datareader Kwa kusoma kutoka kwa meza za hifadhidata na maoni.
db_mwandishi wa data Kuongeza (kuingiza), kuhariri (sasisha) na kufuta (kufuta) rekodi za majedwali ya hifadhidata na maoni.
db_ddadmin Ili kutekeleza taarifa yoyote ya Lugha ya Ufafanuzi wa Data ya SQL (au kutekeleza kazi hizi kwa kutumia GUI) kwenye hifadhidata.
db_securityadmin Ili kudhibiti uanachama wa jukumu la mtumiaji, ruhusa ya ufikiaji wa kitu, na umiliki wa hifadhidata.
db_backuoperator Ili kuunda nakala za chelezo (kuunga mkono) na kurejesha kutoka kwao (kurejesha) hifadhidata.
db_denydatareader Kunyima (au kubatilisha) ruhusa ya kufanya CHAGUA chochote kutoka kwa kitu mahususi cha hifadhidata.
db_denydatawriter Kunyima (au kubatilisha) ruhusa kwa taarifa yoyote ya INGIZA, SASISHA, au KUFUTA iliyofanywa kwenye kitu mahususi cha hifadhidata.

Kuwagawia watumiaji majukumu mahususi ya hifadhidata kunaathiri utendakazi ambao watumiaji wanaweza kutekeleza. Inawezekana kubadilisha athari ya uanachama wa mtumiaji katika jukumu lisilobadilika la hifadhidata kwa kumpa mtumiaji ruhusa kuhusu vitu mahususi vya hifadhidata. Kwa urahisi, sehemu hii haiangazii hili, lakini sehemu inayofuata inashughulikia utoaji wa ruhusa kwa vitu mahususi na majukumu ya hifadhidata yaliyobainishwa na mtumiaji. Dirisha la Hifadhidata halionyeshi majedwali yoyote isipokuwa mtumiaji wa kuingia kwa mradi wa ADP ni mshiriki wa jukumu la hifadhidata lisilobadilika la db_datareader. Mtumiaji asiye na uanachama katika jukumu la db_backuoperator hawezi kutekeleza amri za menyu ya Hifadhi Nakala au Rejesha (Menyu ya zana, menyu ndogo ya Huduma za Hifadhidata). Ipasavyo, watumiaji ambao si washiriki wa jukumu la hifadhidata lisilobadilika la db_ddladmin hawawezi kuunda majedwali au vitu vingine kwenye hifadhidata. Kwa kutumia Dirisha la Hifadhidata, mtumiaji asiye na uanachama katika jukumu la db_ddladmin anaweza kuhariri vipengee vya seva kama vile majedwali na mionekano, hata hivyo, vitu vilivyohaririwa na kuundwa havitahifadhiwa kwenye hifadhidata.

Washiriki wa jukumu la hifadhidata isiyobadilika ya db_owner wanaweza kutekeleza majukumu yote yanayotolewa na wanachama katika jukumu lingine lolote la hifadhidata. Kwa sababu kuingia katika jukumu hili kunaweza kuunda hifadhidata bila uanachama katika jukumu lisilobadilika la sysadmin, washiriki wa kikundi cha db_owner hawatakiwi kuwa watumiaji wa dbo. Baadaye, washiriki wa jukumu la seva isiyobadilika ya sysadmin wanaweza kufanya kazi zozote kwenye hifadhidata ambazo mshiriki wa kikundi cha db_owner anaweza kutekeleza. Zaidi ya hayo, majedwali na maoni yaliyoundwa na mtumiaji wa dbo yameboreshwa mwonekano ikilinganishwa na majedwali na maoni yaliyoundwa na wanachama wa jukumu la db_owner ambao si washiriki wa jukumu la seva isiyobadilika ya sysadmin.

Majukumu ya hifadhidata yaliyofafanuliwa na mtumiaji na kazi za ruhusa

Vipimo vya usalama vya Seva ya SQL huruhusu aina sita za ruhusa kwa vitu mahususi vya hifadhidata. Wasimamizi wa hifadhidata wanaweza kuweka ruhusa ya kufikia vitu mahususi kwa kuunda majukumu ya hifadhidata yaliyobainishwa na mtumiaji na kuongeza watumiaji kwenye vikundi hivi. Kisha wanaweza kutoa ruhusa kwa vitu maalum katika majukumu hayo. Washiriki wote wa mojawapo ya majukumu haya maalum wanarithi ruhusa za majukumu hayo. Wasimamizi wa hifadhidata wanaweza kuongeza na kuondoa watumiaji kutoka kwa majukumu baada ya kuundwa, na kubadilisha ruhusa za majukumu.

Majina sita ya ruhusa ya vitu na maelezo yao yameonyeshwa kwenye jedwali lifuatalo. Unaweza kukabidhi ruhusa hizi kwa vitu maalum vya hifadhidata. Ikiwa unataka kutoa ruhusa kwa vitu vyote, itabidi upe ruhusa kwa kila kitu cha hifadhidata. Walakini, ni bora kutumia majukumu maalum ya hifadhidata ikiwa unahitaji kutoa ruhusa kwa vitu vyote vya hifadhidata. Kwa mfano, ikiwa ungependa kutoa ruhusa kwa SELECT kwa majedwali na mionekano yote (pamoja na yale ambayo bado hayajaundwa), ni rahisi kumpa mtumiaji jukumu la hifadhidata isiyobadilika ya db_datareader. Ikiwa lengo lako ni kuweka kikomo cha SELECT ruhusa kwa mwonekano mmoja tu au mawili yaliyopo, basi unda jukumu la hifadhidata lililobainishwa na mtumiaji, toa ruhusa SELECT kwa maoni hayo, na uwajumuishe katika jukumu hilo watumiaji wanaohitaji kupewa ruhusa maalum.

Jina la ruhusa

Maelezo ya ruhusa

CHAGUA Tazama rekodi kwenye jedwali au tazama.
INGIZA Ongeza rekodi mpya kwenye jedwali au tazama.
UPDATE Kubadilisha yaliyomo kwenye jedwali au rekodi za kutazama.
FUTA Inafuta rekodi kutoka kwa majedwali au maoni.
MAREJEO Hukuruhusu kuunda funguo za kigeni kwa ufunguo msingi au faharasa ya kipekee kwenye jedwali au kitendakazi kinachorejesha mlalo kilichobainishwa na mtumiaji.
TEKELEZA Tekeleza utaratibu uliohifadhiwa au utendakazi uliobainishwa na mtumiaji.

Ruhusa kwa vipengee mahususi vya hifadhidata inaweza kuwa na hali tatu: kutolewa, kukataliwa, na kubatilishwa. Ukiruhusu ufikiaji wa kitu, thamani ya ruhusa itakuwa na hali iliyotolewa. Ipasavyo, ukikataa ufikiaji, ruhusa itakataliwa. Ikiwa unabatilisha ruhusa, badilisha ruhusa kutoka kwa kutolewa au kukataliwa ili kubatilishwa. Ruhusa zilizobatilishwa haziruhusu au kukataa ufikiaji wa kitu.

Kwa sababu inawezekana kwa mtumiaji kujumuishwa katika majukumu mengi yasiyobadilika na yaliyobainishwa na mtumiaji, migongano ya ruhusa kati ya majukumu inawezekana. Unaweza kutumia mizozo hii kurekebisha mfumo wako wa usalama. Kwa mfano, mtumiaji amejumuishwa katika jukumu la hifadhidata lisilobadilika la db_datareader, ambalo humpa mtumiaji haki ya kutekeleza HOJA CHAGUA kwenye majedwali na mionekano yote kwenye hifadhidata. Hata hivyo, unaweza kukataa kusoma kutoka kwa jedwali la mauzo kwa mtumiaji ambaye ana ruhusa ya kusoma data kutoka kwa jedwali zote ili kuficha taarifa nyeti kwenye jedwali la mauzo kutoka kwake. Kwa hivyo, washiriki wa jukumu la hifadhidata isiyobadilika la db_denydatareader hawawezi kutoa hoja CHAGUA dhidi ya jedwali lolote katika hifadhidata, hata kama watumiaji wamejumuishwa katika jukumu la hifadhidata lililobainishwa na mtumiaji ambalo hutoa ruhusa ya kusoma kutoka kwa majedwali fulani mahususi. Ruhusa iliyokataliwa daima hubatilisha ruhusa iliyotolewa.

Seva ya SQL hurahisisha kudhibiti usalama kwa kupeana ruhusa kwa vikundi vya watumiaji kupitia uanachama wao katika majukumu ya hifadhidata yaliyofafanuliwa na ya kudumu. Kumbuka kwamba kila mtumiaji kawaida hulingana na kuingia maalum. Kwa upande wake, kuingia kunaweza kuendana na watumiaji maalum wa Windows. Walakini, kuingia moja kunaweza pia kuwa mwanachama wa kikundi cha watumiaji wa Windows. Kwa hiyo, ikiwa tayari una kikundi cha Windows ambacho unataka kuweka mipangilio sawa ya usalama, kisha unda kuingia kwa kikundi cha Windows. Kisha unda mtumiaji wa kuingia huku. Ruhusa zozote utakazofafanua kwa mtumiaji huyu zinatumika kwa washiriki wote wa kikundi husika cha Windows.

Programu ya Usalama ya Seva ya SQL

SQL-DMO ni programu ya kontena (Programu ya Kiotomatiki), ambayo madhumuni yake ni kusimamia Seva ya SQL. Kwa sababu SQL-DMO ni API ya Kidhibiti Biashara cha Seva ya SQL, unaweza kupanga kila kitu katika SQL-DMO ambacho zana za picha za Meneja wa Biashara zinaweza kukupa, ikiwa ni pamoja na kudhibiti vipengele vyote vya usalama wa Seva ya SQL. Kipengele hiki cha SQL-DMO ni muhimu sana kwa miradi inayotumia MSDE na MSDE 2000 kwa sababu haijumuishi Meneja wa Biashara. Zaidi ya hayo, watengenezaji programu wa Access 2002 watahitaji kujifunza baadhi ya suluhu za programu kwa ajili ya kudhibiti usalama, kwani Access 2002 haina uwezo wa kudhibiti usalama kupitia menyu (kama ilivyokuwa Access 2000).

Katika Ufikiaji, unaweza kupanga kutumia SQL-DMO kwa njia ile ile unayotumia kitu kingine chochote cha COM. Mradi wako wa VBA lazima utumie maktaba ya SQL-DMO. Maktaba ya Kitu cha SQLDMO ya Microsoft ni jina la maktaba hii ya kifaa. Ongeza kiungo kwenye maktaba kwa kutumia amri ya Marejeleo (Menyu ya Zana). Faili ya DLL ya maktaba imejumuishwa na MSDE na MSDE 2000. Matoleo mengine ya SQL Server ni pamoja na DLL na faili ya Usaidizi ambayo unaweza kufungua moja kwa moja kutoka kwa dirisha la Visual Basic Editor (VBE). Wale wanaotumia Toleo la Wasanidi Programu wa Microsoft Office XP wanaweza kusakinisha toleo la SQL Server linalojumuisha faili ya usaidizi ya SQL-DMO.

Kielelezo kinaonyesha kipande cha muundo wa daraja la SQL-DMO na vitu vya mifano ya msimbo vilivyoko zaidi kwenye maandishi. Tambua kuwa kitu cha SQLServer kiko juu ya daraja. Programu nyingi zinaweza kuunganishwa kwa Seva ya SQL kupitia kitu cha SQLServer. Vizazi vya kitu cha SQLServer ni mkusanyo wa vitu kwa ajili ya kuingia na hifadhidata, pamoja na vitu binafsi kama vile IntegratedSecurity, vinavyotoa uwezo wa kudhibiti usalama wa Seva ya SQL. Mfano ufuatao unatumia kipengele cha SecurityMode cha IntegratedSecurity kitu ili kuonyesha jinsi ya kuweka modi ya uthibitishaji ya Seva ya SQL. Wanachama wa mkusanyiko wa Hifadhidata ni hifadhidata za kibinafsi, ambayo kila moja ina makusanyo na vitu vyake. Moja ya mikusanyiko hii ni mkusanyiko wa Watumiaji. Mkusanyiko mwingine hutumiwa kwa majukumu ya hifadhidata yaliyowekwa na yaliyoainishwa na mtumiaji (DatabaseRoles). Uanachama wa mtumiaji binafsi katika mkusanyiko wa DatabaseRoles huamua uwezo wa watumiaji kusoma na kurekebisha vitu katika makusanyo ya Majedwali na Mionekano.

Kuchora. Kipande cha muundo wa kitu cha SQL-DMO kinachohusiana na usalama wa Seva ya SQL

Kabla ya kuzungumza kuhusu SQL-DMO, ni muhimu kujua kwamba DLL kwa SQL-DMO ni tofauti kwa SQL Server 7 na SQL Server 2000. Matoleo mawili ya SQL-DMO yanatofautiana katika angalau vipengele viwili. Kwanza, toleo la SQL Server 2000 linajumuisha vitu vipya vilivyoletwa katika SQL Server 2000, pamoja na uboreshaji wa wale wa jadi. SQL-DMO ya SQL Server 2000 pia inajumuisha vitu vya usimamizi vya SQL Server 7.0. Majina ya vitu kwa 2000 kawaida huisha na 2 (kwa mfano, SQLServer2 kwa vitu vipya, badala ya SQLServer kwa vile vya jadi). Pili, programu zinazotumia SQL-DMO kwa SQL Server 2000 haziwezi kudhibitiwa na SQL Server 7.0 (hata kama programu hutumia majina ya kawaida ya vitu vya SQL-DMO). Hata hivyo, unaweza kudhibiti SQL Server 2000 kwa kutumia maktaba ya SQL-DMO ya SQL Server 7.0. Sintaksia ya hati ya SQL-DMO haijabadilika.

Tofauti kati ya matoleo ya SQL-DMO inahitaji uangalizi makini kuhusu ni toleo gani la maktaba utakayotumia katika mradi wako. Ikiwa unataka programu yako ya SQL-DMO ifanye kazi na SQL Server 7.0 na SQL Server 2000, lazima uandike programu kwa kutumia SQL-DMO kwa SQL Server 7.0. Kwa upande mwingine, ikiwa unahitaji kuchukua faida ya SQL Server 2000, basi unahitaji kuendeleza programu yako kwa kutumia maktaba ya SQL Server 2000. Kwa kuwa makala inaonyesha mbinu za programu za usalama kwa kutumia SQL-DMO, nilitumia toleo la SQL Server 7.0. ya SQL-DMO. Kwa hali yoyote, nambari inaonekana sawa katika matoleo yote, isipokuwa unapotumia vitu vipya vilivyoletwa katika SQL Server 2000.

Inaunganisha kwa seva ya SQL

Kama vile unavyoweza kuunganisha kwa Seva ya SQL kwa njia mbili kwa kutumia mazungumzo ya Sifa za Muunganisho katika mradi wa ADP, unaweza kuunganisha kwenye Seva ya SQL kwa njia mbili kupitia SQL-DMO. Njia moja inalingana na uthibitishaji kwa kutumia SQL Server. Kwa kutumia njia hii, msimbo wako lazima utume jina la seva, kuingia, na nenosiri kupitia SQL-DMO kwa seva. Unaweza kutumia kigezo cha jina la seva kubainisha hali tofauti za Seva ya SQL kwenye kituo chako cha kazi au kwenye kituo kingine cha kazi kwenye mtandao. SQL-DMO pia hukuruhusu kuunganishwa kwa kubainisha tu jina la seva. Katika hali hii, SQL-DMO hutuma kitambulisho cha mtumiaji aliyeidhinishwa katika Windows kwa mfano wa seva ya SQL. Ili kutumia njia hii, lazima uweke kipengele cha LoginSecure cha seva kuwa Kweli.

Orodha ifuatayo inaonyesha jozi ya taratibu zinazoonyesha sintaksia ya kuunganisha kwa mfano wa Seva ya SQL kwa kutumia kuingia kwa Seva ya SQL. Utaratibu wa kwanza unafafanua vigezo vya kamba tatu kwa jina la seva (srvname), kuingia (suid) na nenosiri (pwd). Kisha huwatuma kwa utaratibu wa pili, ambao huanza kwa kuanzisha kitu cha SQLServer. Kitu hiki kinawakilisha mfano wa seva. Utaratibu wa pili kisha huita njia ya Unganisha ya kitu cha SQLServer. Njia hii inachukua vigezo vitatu kama pembejeo. Sintaksia ya kupitisha vigeu vya jina la seva, kuingia na nenosiri huonyeshwa.

SubCallSQLDMOSQLServerLogin()
Dim srvname As String
Dim suid Kama Kamba
Punguza pwd Kama Kamba

"Kufafanua hoja za kuingia kwa seva ya SQL
suid = "jina_la_kuingia"
pwd = "nenosiri_lako"

"Kuita utaratibu wa unganisho kwa kutumia njia ya kuingia kwa seva ya SQL
SQLDMOSQLServerLogin srvname, suid, pwd

Sub SQLDMOSQLServerLogin(srvname As String, _

"Mfano wa seva

"Kupigia simu njia ya Unganisha kuunganishwa kwa kutumia njia ya kuingia ya seva ya SQL

"Kufuta vigezo
srv1.Tenganisha
Weka srv1 = Hakuna

Mfano wa msimbo ufuatao unaonyesha syntax ya kuunganisha kwa mfano wa Seva ya SQL kwa kutumia kuingia kwa Windows.
kulingana na Kitambulisho cha mtumiaji wa Windows. Katika njia hii ya pili ya kuunganisha kwenye seva, huna haja ya kutaja ama kuingia au nenosiri.
SQL-DMO inakubali kitambulisho cha mtumiaji wa Windows kiotomatiki na inaunganisha mtumiaji kwenye seva kwa kuingia
kwa kitambulisho cha mtumiaji. Weka kipengele cha LoginSecure kuwa Kweli kabla ya kupiga njia ya Unganisha. Thamani chaguo-msingi ya sifa hii ni Uongo.

Sub CallSQLDMOWindowsLogin()
Dim srvname As String
"Weka hoja ya kuingia kwa Windows
srvname = "YOUR_SERVER_NAME"

SQLDMOWindowsLogin srvname

Sub SQLDMOWindowsLogin(srvname As String)
Dim srv1 Kama SQLDMO.SQLServer

"Mfano wa seva
Weka srv1 = SQLDMO.SQLServer Mpya

"Weka mali ya LoginSecure kabla ya kupiga simu
"Unganisha njia na jina la seva kama hoja
srv1.LoginSecure = Kweli
srv1.Unganisha srvname

"Kufuta vigezo
srv1.Tenganisha
Weka srv1 = Hakuna

Kubadilisha hali ya uthibitishaji

Mojawapo ya faida kuu ambazo SQL-DMO hutoa kwa watayarishaji programu wa MSDE na MSDE 2000 ni kwamba inatoa kipengele ambacho haingepatikana kwao vinginevyo. Hii ni kwa sababu Kidhibiti cha Biashara hakijajumuishwa kwenye kifurushi cha usakinishaji cha MSDE au MSDE 2000 Kwa mfano, kipengee cha mteja wa Kidhibiti cha Biashara cha SQL kinawaruhusu wasimamizi kubadilisha kificho modi ya uthibitishaji wa seva: Uthibitishaji wa Windows au modi mchanganyiko. Mradi wa ADP hautoi chaguo hili. Walakini, taratibu kadhaa zifuatazo zitakuruhusu kubadilisha hali ya uthibitishaji wa seva bila hata kuweza kutumia Kidhibiti cha Biashara.

Utaratibu wa kwanza huamua thamani ya parameter moja na kuituma kwa utaratibu wa pili. Kigezo hiki kinabainisha mojawapo ya njia mbili za uthibitishaji. Maoni ya utaratibu yanaonyesha majina ya viunga viwili vilivyoainishwa awali kulingana na hali ya uthibitishaji. Uthibitishaji wa modi mseto ndiyo modi chaguo-msingi. SQL-DMO hukuruhusu kuweka hali ya uthibitishaji ambayo haipatikani hata katika Kidhibiti cha Biashara. Kwa maneno mengine, unaweza kutumia SQL-DMO kuambia seva ikubali kuingia kwa Seva ya SQL pekee.

Utaratibu wa pili unaunganisha kwa seva kwa kutumia kitambulisho cha mtumiaji wa Windows. Kisha huweka mali ya UsalamaMode ya kitu cha IntegratedSecurity kwa seva kwa thamani ya parameta iliyopitishwa kutoka kwa utaratibu wa kwanza. Ikiwa thamani ya mali hii itabadilisha hali ya uthibitishaji, hali haitabadilika hadi usimamishe na kuanzisha upya seva. Hata hivyo, kupiga simu kwa njia ya Stop ya kipengee cha seva hakuwezi kusimamisha seva mara moja. Lazima usubiri hadi seva ikome. Kwa kutumia sifa ya Hali ya kifaa cha seva, programu yako inaweza kufuatilia ujumbe ambao seva imeacha. Utaratibu hutumia kitanzi, kusubiri thamani ya Hali kubadilika kuwa SQLDMOSvc_Stopped. Ifuatayo, utaratibu utafanya njia ya Anza ya kitu cha SQLServer. Kupiga simu kwa njia hii kutaweka hali mpya ya uthibitishaji kwa seva.

Sub CallChangeServerAuthenticationMode()
Dim constAuth As Byte

"Weka constAuth kuwa:
" SQLDMOSsecurity_Imeunganishwa ili kubadilika kuwa hali
"Uthibitishaji wa Windows
" SQLDMOSecurity_Mixed kubadilika hadi hali mchanganyiko ya uthibitishaji

"Weka thamani chaguo-msingi ya constAuth
constAuth = SQLDMOSsecurity_Mixed

"piga utaratibu wa kubadilisha hali ya uthibitishaji
ChangeServerAuthenticationMode constAuth

Sub ChangeSeverAuthenticationMode(constAuth As Byte)
Dim srv1 Kama SQLDMO.SQLServer

"Weka jina la seva;
"chaguo-msingi YOUR_SERVER_NAME
srvname = "YOUR_SERVER_NAME"

"mfano wa kitu cha SQLServer cha unganisho
"tunatumia uthibitishaji wa Windows
Weka srv1 = SQLDMO.SQLServer Mpya
srv1.LoginSecure = Kweli
srv1.Unganisha srvname

"Weka mali ya UsalamaMode kwa Windows
"au uthibitishaji mchanganyiko
srv1.IntegratedSecurity.SecurityMode = constAuth
srv1.Tenganisha

"Tunaita amri ya kusimama na kusubiri
"mpaka ikome
srv1.Stop
Fanya Hadi srv1.Status = SQLDMOSvc_Stopped
Kitanzi

"Tunaanzisha tena seva na aina ya uthibitishaji mchanganyiko
srv1.Anza Kweli, srvname

"Safisha
srv1.Tenganisha
Weka srv1 = Hakuna

Ufunguzi wa mradi wa ADP

Wakati mwingine ni muhimu kufungua kwa utaratibu mradi wa ADP kutoka kwa programu yako ya SQL-DMO. Teknolojia ya ufunguzi wa mradi wa ADP haihitaji matumizi ya SQL-DMO, hata hivyo, programu yako ya SQL-DMO inaweza kuchukua fursa ya uwezo huu. Mfano wa mwisho wa msimbo katika makala haya (kabla ya sehemu ya mwisho) unaonyesha jinsi ya kuunda mtumiaji mpya. Haja ya kufungua mradi wa ADP inategemea uundaji wa kamba ya unganisho wakati wa kusakinisha programu kulingana na mradi wa ADP.

Mfano wa msimbo ufuatao unaonyesha jinsi ya kufungua mradi uliopo wa ADP. Katika msimbo ulio hapa chini, jina la mradi wa ADP ni msdn_test_security.adp. Msimbo wa sampuli hukuruhusu kufungua mradi wa ADP katika hali ya uthibitishaji wa Windows au katika hali ya uthibitishaji wa Seva ya SQL. Tena taratibu mbili zinatumika. Orodha ya vigezo katika utaratibu wa kwanza - CallOpenADPWindowsOrSQLServer - ni kubwa kiasi, ambayo ni kutokana na haja ya kutaja jina la seva, hifadhidata, njia na jina la faili ya mradi wa ADP, kuingia kwa SQL Server na nenosiri, pamoja na kutofautiana kwa mantiki. . Tofauti ya Boolean huamua kama mradi unafunguliwa kwa uthibitishaji wa Windows au SQL Server. Wakati wa kubainisha uthibitishaji wa Windows, hakuna haja ya kuingia na nenosiri kwa sababu mradi wa ADP hurejelea kiotomati kitambulisho cha mtumiaji wa Windows. Utaratibu wa pili hutumia vigezo hivi kufungua mradi wa ADP.

Kabla ya kuelezea utaratibu wa pili, itakuwa muhimu kuelezea baadhi ya vipengele vya kanuni. Kwanza, utaratibu unaofungua mradi wa ADP tayari unaendeshwa katika kipindi cha Ufikiaji. Kwa hivyo, tunahitaji kuunda mfano mpya wa Ufikiaji wa mradi ambao tunakusudia kufungua. Ili kuunda kipindi cha Ufikiaji, darasa la OLE linatumiwa.

Pili, mradi wowote uliopo wa ADP hufungua kila wakati na vigezo vya muunganisho wa seva vilivyohifadhiwa wakati wa ufunguzi uliopita. Kwa hiyo, mpango lazima ufungue mradi kwa kutumia vigezo vya uunganisho wa zamani, na kisha ubadilishe vigezo hivi. Mipangilio mipya ya muunganisho inaweza tu kupewa mradi wazi. Baada ya kufunga mradi, vigezo vipya vya uunganisho vinahifadhiwa hadi mtumiaji abadilishe kwenye mazungumzo ya Vigezo vya Uunganisho. (Walakini, muundo wa kitu cha Ofisi hukuruhusu kuficha na kuzima amri ya menyu ya Muunganisho kwenye menyu ya Faili.)

Tatu, kikao kilicho na mradi wa ADP wazi kitaishi mradi tu kigeu kinachowakilisha kipindi hicho kiishi. Tumia Maelezo ya Umma katika ufafanuzi wa kipindi kwa mradi unaofunguliwa. Tofauti inatangazwa katika sehemu ya maelezo ya moduli. Hii itaruhusu kipindi kuishi kwa muda mrefu mradi unaofungua, yaani, kanuni zetu, zinaishi. Tofauti ya kipindi cha Ufikiaji katika mfano inaitwa appAccess, na tamko lifuatalo liko katika sehemu ya ufafanuzi wa moduli za kawaida. Kwa kuwa tamko lazima liwe juu ya moduli, hutaliona kwenye msimbo kwa utaratibu wa kwanza au wa pili.

Public appAccess kama Access.Application

Utaratibu wa pili, OpenADPWindowsOrSQLServer, huanza na ujumbe unaouliza ikiwa kikao kimefunguliwa baada ya utaratibu kukamilika. Ikiwa mtumiaji anajibu "hapana", utaratibu utaweka vigezo vya uunganisho wa mradi na kisha kufunga kikao bila nafasi ya kutazama mabadiliko. Ifuatayo, mradi unaanza kipindi kipya cha Ufikiaji kwa kutumia kitendakazi cha CreateObject. Hoja za chaguo hili la kukokotoa hutofautiana kulingana na toleo la Ufikiaji unaotumia (msimbo unaeleza mahususi ya kutumia Access 2000 au Access 2002). Baada ya kuunda kipindi cha mradi, utaratibu unaita njia ya OpenAccessProject ili kuongeza mradi wa ADP kwenye kipindi. Hoja ya njia hii ni njia pamoja na jina la faili ya mradi. Kiendelezi cha .adp ni cha hiari. Baada ya mradi kufunguliwa, utaratibu unapunguza mipangilio yake ya uunganisho kwa kutumia njia ya OpenConnection ya kitu cha CurrentProject. Utaratibu hufafanua upya miunganisho kwa kutumia kamba mbili tofauti za uunganisho kulingana na thamani ya bolWindowsLogin variable. Tofauti hii ya Boolean imewekwa na utaratibu wa kwanza ili kuonyesha ni aina gani ya idhini inayohitaji kuwekwa kwa mradi. Hatua ya mwisho ya utaratibu hufunga kipindi ikiwa mtumiaji alijibu ndiyo kwa swali kwenye kisanduku cha ujumbe kabla ya kufungua kipindi.

Sub CallOpenADPWindowsOrSQLServer()
Dim srvname As String
Dim dbname As String
Dim njia Kama Kamba
Dim prname As String
Dim suid Kama Kamba
Punguza pwd Kama Kamba

"Kuweka chaguzi za kufungua mradi wa ADP
srvname = "YOUR_SERVER_NAME"
dbname = "Your_db_name"

suid = "jina_la_kuingia"
pwd = "nenosiri_lako"


"kwa mtumiaji wa sasa badala ya kuingia kwa seva ya SQL na nywila
bolWindowsLogin = Si kweli

"Kuita utaratibu wa kufungua mradi wa ADP
"na uthibitishaji wa Windows au SQL Server

Maliza Sub
SubADPWindowsOrSQLServer(srvname As String, dbname As String, _
prpath Kama Kamba, prname Kama Kamba, _
suid Kama Kamba, pwd Kama Kamba, bolWindowsLogin Kama Boolean)

Dim bolOndoka Fungua Kama Boolean
Dim strPrFilePath Kama Kamba
Dim sConnectionString Kama Kamba

“Uwache mradi wazi baada ya utaratibu kukamilika?
Ikiwa MsgBox("Je, unataka kuacha mradi wazi?", vbYesNo) = vbYes Kisha
bolLeaveOpen = Kweli
Mwisho Kama

"Fikia ufafanuzi wa kitu cha kipindi (tumia .9 kwa Ufikiaji wa 2000
"i.10 kwa Ufikiaji wa 2002)
Weka appAccess = CreateObject("Access.Application.9")

"Fungua mradi kwa kuingia na nenosiri la uzinduzi wa mwisho
"na kuonyesha
strPrFilePath = prpath & prname
appAccess.OpenAccessProject strPrFilePath
appAccess.Visible = Kweli

"Sanidi kuingia mpya kwa uthibitishaji wa Windows au SQL Server;
"na ushughulikie kosa la jaribio la unganisho kwa njia isiyo sahihi
Ikiwa bolWindowsLogin Basi
"MTOA=SQLOLEDB.1;USALAMA UNGANISHI=SSPI;" & _
"DUMU HABARI ZA USALAMA=FALSE;KATALOGU YA AWALI=" & _
Mengine
sConnectionString = "PROVIDER=SQLOLEDB.1; KATALOGU YA AWALI=" & _
dbname & ";CHANZO CHA DATA=" & srvname
appAccess.CurrentProject.OpenConnection_
sConnectionString, _
suti, pwd
Mwisho Kama

"Tunafunga kikao, au tunaacha
"ili kutazama mazungumzo ya Mipangilio ya Muunganisho
Ikiwa bolLeaveOpen = Uongo Basi
appAccess.CloseCurrentDatabase
Weka appAccess = Hakuna chochote
Mwisho Kama

Kuongeza na kuondoa logins

Kuna njia tatu za kuunganisha kwenye Seva ya SQL. Aina hizi tatu ni pamoja na aina moja ambayo inakaguliwa na SQL Server na aina zingine mbili ambazo huangaliwa na Windows. Aina mbili ambazo Windows hukagua ni kuingia kwa vitambulisho vya mtumiaji binafsi na kuingia kwa vikundi vya watumiaji wa Windows. Ikiwa tayari una kikundi cha watumiaji wa Windows, ambao wanachama wote wanahitaji kupewa haki sawa na rasilimali za seva za SQL, unahitaji tu kuweka kuingia kwenye kikundi cha Windows. Hii itakuokoa kutokana na kuunda kuingia kwa kila mwanachama wa kikundi.

Mfano wa uundaji wa kuingia unaonyesha sintaksia ya kuunda uingiaji wa kawaida wa Seva ya SQL na kuingia kulingana na kikundi cha watumiaji wa Windows. Msimbo wa kuunda kuingia kwa Seva ya SQL kwa kikundi cha Windows ni karibu sawa na msimbo wa kuunda kuingia kwa mtumiaji binafsi wa Windows. Kwa hiyo, mfano wafuatayo wa kuunda kuingia kwa kikundi cha Windows ni sawa kabisa kwa kuunda kuingia kwa watumiaji binafsi wa Windows.

Mfano wa kuunda logins lina taratibu mbili. Utaratibu wa kwanza unafafanua vigezo vya kuunda kuingia kwenye SQL Server, ambayo utaratibu wa pili utaunda kuingia mpya. Utaratibu wa tatu ni kazi ambayo inabadilisha thamani ya mara kwa mara ya ndani ndani ya kamba inayoelezea jina la mara kwa mara.

Utaratibu wa pili, baada ya kuunganisha kwenye seva, huanzisha kitu cha kuingia. Kipengee hiki ni mwanachama wa mkusanyiko wa Ingia iliyoonyeshwa kwenye takwimu. Ifuatayo, utaratibu unaweka vigezo vitatu vya kuingia: jina lake (login_name), hifadhidata ya msingi (defaulf_db_name) na nenosiri (nenosiri). Shughuli rahisi za mgawo hufanya kazi kwenye hoja mbili za kwanza. Ili kuweka nenosiri la kuingia kwa seva ya SQL, njia ya SetPassword ya kitu cha kuingia inaitwa. Unapoweka nenosiri la kuingia upya, tumia kamba tupu kama hoja ya kwanza kwa mbinu; taja nenosiri la kuingia mpya kama hoja ya pili. Katika mfano wetu, nenosiri la login_name linafafanuliwa kama "nenosiri" (bila nukuu). Kuongeza kuingia_jina la kuingia kunakamilika kwa kupiga njia ya Ongeza ya mkusanyiko wa Ingia.

Unaweza pia kutumia njia ya SetPassword kubatilisha nenosiri la kuingia kwa sasa. Hoja ya kwanza ya njia ya SetPassword katika kesi hii ni nenosiri la sasa. Hata hivyo, ikiwa hujui nenosiri la sasa, unaweza kubainisha mfuatano tupu kama hoja ya kwanza, kama vile unapounda nenosiri la kuingia upya. Kuunda au kubadilisha kuingia kunawezekana ikiwa kuingia kwako kwa sasa (ambako umeunganisha kwa seva) kunajumuishwa katika mojawapo ya majukumu ya seva: sysadmin au securityadmin. Haijalishi jinsi unavyobadilisha nenosiri: kwa utaratibu au kwa njia nyingine. Mfano hutumia kuingia kwa sa, ambayo ni sehemu ya jukumu la seva isiyobadilika ya sysadmin.

Mistari michache inayofuata ya utaratibu wa pili huunda kuingia kwa kikundi cha Windows kinachoitwa msdn_OS_users. Kwa upande wangu, kikundi hiki cha Windows cha vitambulisho vitatu vya watumiaji wa Windows, kwa kweli kikundi cha Windows kinaweza kuwa kikundi cha watumiaji wa kompyuta au kikundi cha watumiaji wa kikoa cha seva ya Windows. Mchakato wa kuunda kuingia huanza kwa kuanzisha kitu kipya cha kuingia (lgn1). Ukijaribu kutumia tena lgn1 bila kuanzisha tena (sifuri), hitilafu ya wakati wa kukimbia itatokea kukukumbusha kuwa kitu kipya kinahitajika. Utaratibu hutumia jina la kikundi cha Windows cha sehemu mbili. Sehemu ya kwanza ni jina la seva ya Windows, ya pili ni jina la kikundi cha seva ya Windows. Backslash hutumika kama delimiter. Hifadhidata chaguomsingi ya kuingia kwa pili ni hifadhidata ya your_db_name tena. Kwa kuwa kuingia kwa pili kunaundwa kwa uthibitishaji wa Windows, hakuna haja ya kuweka nenosiri. Hata hivyo, lazima uweke kipengele cha Aina kuwa SQLDMLogin_NTGroup. Thamani hii inalingana na mara kwa mara ya ndani sambamba na kuingia kwa kikundi cha Windows. Wakati wa kuongeza kuingia kwa Seva ya SQL, hauitaji kuweka Kipengee cha Aina kwa sababu ndio chaguo-msingi la kuingia kwa Seva ya SQL. Uundaji wa kuingia kwa pili unaisha kwa kupiga njia ya Ongeza ya mkusanyiko wa Ingia.

Baada ya kuongeza logi mbili mpya, utaratibu unachapisha majina na aina za logi zote za seva. Sifa ya Aina inalingana na thamani ya viunga vya ndani. Ili kufanya onyesho la aina lisomeke, kitendakazi kinatumika ambacho hubadilisha viambatisho kuwa majina ya maandishi yanayolingana.

Baada ya kuchapisha washiriki wa mkusanyiko wa Ingia, utaratibu huo unafuta anwani mbili mpya zilizoundwa kwa jina: login_name na YOUR_SERVER_NAME\msdn_OS_users. Mfano huu unaonyesha matumizi ya mkusanyiko wa Kuingia, mbinu yake ya Ondoa, na sifa ya Jina ya kuingia unayotaka kuondoa. Ili kuthibitisha ufutaji wa logi mbili, utaratibu unaonyesha orodha ya walioingia tena kutoka kwa mkusanyiko wa Ingia. Fungua dirisha la Mara moja na ulinganishe orodha mbili za kuingia: baada ya kuongeza na kuondoa logi mbili.

SubLoginDemo ndogo ()
Dim srvname As String
Dim suid Kama Kamba
Punguza pwd Kama Kamba

"weka vigezo vya kuingia wakati wa kuthibitisha na seva ya SQL
srvname = "YOUR_SERVER_NAME"
suid="sa"
pwd="nenosiri"

"Kuita utaratibu wa kuunda logi
IngiaDemo srvname, suid, pwd

Sub LoginDemo(srvname As String, _

suid Kama Kamba, pwd Kama Kamba)
Dim srv1 Kama SQLDMO.SQLServer
Dim lgn1 Kama SQLDMO.Ingia

"Kuanzisha kitu cha seva
Weka srv1 = SQLDMO.SQLServer Mpya

"Kupiga simu kwa njia ya Unganisha
srv1.Unganisha srvname, suid, pwd

"Kuanzisha kitu cha kuingia
Weka lgn1 = SQLDMO.Ingia Mpya

"Kuongeza kuingia kwa Seva ya SQL
lgn1.Name = "login_name"
lgn1.SetPassword "", "nenosiri"

srv1.Logins.Ongeza lgn1

"Kuanzisha kuingia kwa matumizi tena
Weka lgn1 = SQLDMO.Ingia Mpya

"Ongeza kuingia kwa kikundi cha Windows
lgn1.Name = "YOUR_SERVER_NAME\msdn_OS_users"
lgn1.Database = "your_db_name"
lgn1.Type = SQLDMOLogin_NTGroup
srv1.Logins.Ongeza lgn1

"Matokeo ya logi zote baada ya kuongeza mpya mbili
Debug.Chapisha "Ingia baada ya kuongeza mbili mpya"

Logi inayofuata1

"Kufuta kumbukumbu mpya zilizoongezwa
srv1.Logins.Ondoa "YOUR_SERVER_NAME\msdn_OS_users"
srv1.Logins.Ondoa "login_name"

"Inaonyesha upya kumbukumbu zote
Debug.Print vbCr & "Ingia baada ya kufuta logi mbili"
Kwa Kila lgn1 Katika srv1.Logins
Debug.Print DecodeLoginType(lgn1.Type), lgn1.Name
Logi inayofuata1

"Kufuta vigezo
srv1.Tenganisha
Weka srv1 = Hakuna

Kazi ya DecodeLoginType(lgn_type As Byte) Kama Kamba

Chagua Kesi lgn_type
Kesi 0
DecodeLoginType = "SQLDMLogin_NTUser"
Kesi ya 1
DecodeLoginType = "SQLDMLogin_NTGroup"
Kesi ya 2
DecodeLoginType = "SQLDMOLogin_Standard"
Kesi Nyingine
DecodeLoginType = "Chapa nje ya anuwai"
Maliza Chagua

Kuunda kuingia na mtumiaji ambaye ni mwanachama wa jukumu la db_datareader

Kuongeza kiotomatiki jina jipya la kuingia na kulikabidhi kwa hifadhidata chaguo-msingi hakuundi mtumiaji katika hifadhidata ya kuingia huko. Kwa hivyo, mradi wa ADP kulingana na kuingia huku hauwezi kuunganisha kwenye hifadhidata chaguomsingi. Ili mradi ufanye kazi na hifadhidata, lazima uunde mtumiaji katika hifadhidata kwa ajili ya kuingia kwako.

Mfano wa mwisho wa msimbo wa makala unaonyesha utaratibu wa kuongeza kuingia kwa uthibitishaji wa Seva ya SQL na pia kuunda mtumiaji wa kuingia huko katika hifadhidata ya your_db_name. Katika mfano huu, mtumiaji mpya pia amepewa jukumu la hifadhidata lisilobadilika la db_datareader. Hatimaye, mradi wa ADP unafunguliwa kulingana na kuingia mpya na mtumiaji.

Baada ya kuunganishwa na seva na kuunda login_name mpya, msimbo huunda mtumiaji mpya. Ifuatayo, Jina na mali ya Kuingia hupewa mtumiaji. Sifa ya Kuingia inamaanisha kuingia chini ambayo mtumiaji huunganisha - login_name katika mfano wetu. Mtumiaji basi yuko tayari kuongezwa kwenye mkusanyiko wa Watumiaji wa hifadhidata. Kumbuka kwamba sintaksia ya kuongeza mtumiaji mpya inafuata sintaksia ya mpangilio wa kitu. Mbinu ya Ongeza kwa mtumiaji mpya inatumika kwa mkusanyiko wa Watumiaji, ambao nao ni wa kitu cha hifadhidata. Hifadhidata ni mwanachama wa mkusanyiko wa Hifadhidata inayomilikiwa na kifaa cha seva (SQLserver). Baada ya kuunda mtumiaji, laini moja au zaidi inahitajika ili kuongeza mtumiaji kwenye jukumu la hifadhidata lisilobadilika la db_datareader. Njia ya kuongeza mtumiaji kwenye jukumu inaitwa AddMember. Kwa upande wetu, mbinu ya AddMember ya kipengee cha mkusanyiko wa DatabaseRoles inaongeza mtumiaji kwenye jukumu la hifadhidata. Njia hii inachukua kama kigezo usemi wa mfuatano wa sifa ya Jina la kitu kipya cha mtumiaji.

Mara baada ya usanidi wa usalama wa kuingia na mtumiaji mpya kukamilika, utaratibu wa OpenADPWindowsOrSQLServer unaitwa. Orodha zilizopita hutoa mfano wa jinsi ya kutumia utaratibu huu. Kwa upande wetu, faili ya msdn_test_security.adp inafunguliwa kulingana na login_name. Ili kuangalia utendakazi wa kuingia, fungua majedwali ya hifadhidata yako_db_name. Zaidi ya hayo, utendakazi wa uingiaji mpya unaweza kuangaliwa katika kisanduku cha mazungumzo cha Vigezo vya Muunganisho kwa kubainisha kuingia your_login.

Ukijaribu kutekeleza utaratibu wa MakeLoginWithDatareaderUser tena, jaribio litashindwa. Hii ni kwa sababu kuingia kwako_kuingia tayari kupo. Hitilafu itatokea unapojaribu kuiongeza tena. Jaribio la kutekeleza utaratibu linaweza kushindwa kwa sababu nyingine: Hujafunga mradi uliounganishwa kwenye hifadhidata kwa kuingia huku. Unaweza kuandika ushughulikiaji wa makosa ya VBA ili kushughulikia makosa ya wakati wa kukimbia. Makosa sawa yanaweza kuambatana na utekelezaji wa mifano iliyotangulia. Nilichagua kutoingia kwenye mjadala wa kugundua makosa ya wakati wa kukimbia, nikizingatia maswala ya usalama ya seva ya SQL.

Sub MakeLoginWithDatareaderUser()
Dim srv1 Kama SQLDMO.SQLServer
Dim lgn1 Kama SQLDMO.Ingia
Dim usr1 Kama SQLDMO.Mtumiaji
Dim srvname As String
Dim suid Kama Kamba
Punguza pwd Kama Kamba
Dim dbname As String
Dim njia Kama Kamba
Dim prname As String
Dim bolWindowsLogin Kama Boolean

"Kufafanua hoja
srvname = "YOUR_SERVER_NAME"
suid="sa"
pwd="nenosiri"
dbname = "jina_la_ lako"

"anzisha seva
Weka srv1 = SQLDMO.SQLServer Mpya

"Pigia njia ya Unganisha kwa kuingia wakati wa kudhibitisha na seva ya SQL
srv1.Unganisha srvname, suid, pwd

"Anzisha na ongeza kitu cha kuingia
"kwa seva srv1
suid = "login_name"
Weka lgn1 = SQLDMO.Ingia Mpya
lgn1.Jina = suid
lgn1.Database = dbname
lgn1.SetPassword "", pwd
srv1.Logins.Ongeza lgn1

"Anzisha na ongeza kitu cha mtumiaji
"kwenye hifadhidata your_db_name
Weka usr1 = SQLDMO.Mtumiaji Mpya
usr1.Name = suid
usr1.Ingia = lgn1.Name
srv1.Databases(dbname).Watumiaji.Ongeza usr1
srv1.Databases(dbname).DatabaseMajukumu("db_datareader").OngezaMwanachama usr1.Name

"Weka vigezo vya kufungua mradi wa ADP

prpath = "Njia_to_project_faili"
prname = "msdn_security_test"

"Hoja hii inadhibiti utumiaji wa kuingia kwa Windows
"kwa mtumiaji wa sasa badala ya suid na seva ya SQL ya pwd
bolWindowsLogin = Si kweli

"Kuita utaratibu wa ufunguzi wa mradi prname
"na uthibitishaji wa Windows au SQL Server
OpenADPWindowsOrSQLServer srvname, dbname, _
prpath, prname, suid, pwd, bolWindowsLogin

"Tunaacha kitu wazi kwa kutazamwa

Hitimisho

Usalama wa Seva ya SQL umejengwa kwa kanuni tofauti na zile zinazotumiwa na watengenezaji programu wa hifadhidata ya Jet. Hata hivyo, SQL Server Books Online huandika kwa uangalifu miongozo ya usalama ya Seva ya SQL. Makala haya yanatafsiri sheria za msingi za BOL kuwa sheria mahususi ambazo madhumuni yake ni kutumia mradi wa Ufikiaji na Seva ya SQL. Mifano ya msimbo katika makala hii inaonyesha jinsi ya kudhibiti usalama wa Seva ya SQL kwa kutumia Ufikiaji.

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 maswali ya kuchagua 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 miamala ya tatu na ya nne, wataona thamani sawa ya asili ya 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 utengaji wa Picha, safu hii pia hutumia toleo la safu mlalo ili kupunguza matatizo ya kufunga. Ikiwa tutachukua kama msingi mfano ulioelezewa katika sehemu iliyopita, basi in kwa kesi hii muamala wa kwanza utaona mabadiliko yaliyofanywa na ya pili mara tu yanapotekelezwa.

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

Kutatua Migogoro ya Kuandika

Miamala inayoandika data wakati kiwango cha kutengwa kwa Muhtasari kimewekwa inaweza kuzuiwa na miamala ya awali ambayo haijatekelezwa. 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 ya kudhibiti kufuli za 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 katika idadi ya 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 msingi ulio 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 kwa 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 huchaguliwa kulingana na utendaji wa kawaida wa 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 kiwango kimoja, lazima iwe na matumizi ya wakati mmoja ya fomu ya mwisho na watumiaji wengi. 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 mpango mgumu sana wa kufunga. 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 tu jiometri ya mmea ilipoundwa na kujaribiwa, wahandisi waliingia muundo wa kebo, eneo, na aina za nyaya zilizotumiwa. 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 kurejesha 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 kifurushi 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 hutazamwa kwa kutumia Studio ya Usimamizi au taratibu za 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.

Mifumo mikali ilikuwa shida kubwa, lakini Seva ya SQL sasa inaweza kusuluhisha 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. 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 na programu 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 Seva ya SQL kwamba ikiwa suluhu itatokea, muamala unapaswa kurejeshwa:

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 ya pili na mikwamo haiwezi 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. Vitalu vidogo vitasaidia kuwazuia kushindana.

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

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 bila 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. Lugha iliyotengenezwa maalum ya Transact-SQL hutumiwa kudhibiti data. Amri za lugha za kuchagua na kurekebisha hifadhidata hujengwa kwa msingi wa maswali yaliyopangwa:


Hifadhidata za uhusiano zimejengwa juu ya unganisho la vitu vyote vya kimuundo, pamoja na kwa sababu ya kuota 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 wa 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 hivyo, wataalam walibainisha kasi ya juu ya usindikaji wa data, iliyoonyeshwa hata kwa mzigo mkubwa 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 yaliathiri tu upande wa mtumiaji wa programu;
  • SQL Server 2005 - scalability ya DBMS imeongezeka, na mchakato wa usimamizi na usimamizi umerahisishwa sana. API mpya imeanzishwa ili kusaidia jukwaa la programu la .NET;
  • Matoleo yaliyofuata yalilenga kukuza mwingiliano wa DBMS katika kiwango cha teknolojia za wingu na zana za uchanganuzi wa biashara.

Seti ya msingi ya mfumo inajumuisha huduma kadhaa za kusanidi Seva ya SQL. Hizi ni pamoja na:


Meneja wa Usanidi. Inakuruhusu kudhibiti mipangilio yote ya mtandao na huduma za seva ya hifadhidata. Inatumika kusanidi Seva ya SQL ndani ya mtandao.
  • Hitilafu ya Seva ya SQL na Kuripoti Matumizi:


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 la 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 litatumika. Seva inaweza kuanza kwa njia kadhaa:

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

  • Kutumia mazingira SQL Usimamizi wa seva Studio Express. 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" Uchunguzi Usahihi 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. Wacha tuanze na muhtasari wa kina zaidi wa huduma kadhaa zilizojumuishwa kwenye 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 vitu viwili: ya kwanza inawajibika kwa vigezo vya mtandao, na kwa pili unaweza kuamsha huduma au kazi ambayo imezimwa kwa default. Kwa mfano, wezesha ujumuishaji na jukwaa la NET kupitia hoja za T-SQL:

Studio ya Usimamizi wa Seva ya SQL ina matumizi mawili ya msingi: kusimamia seva za hifadhidata na kudhibiti vitu vya hifadhidata. Majukumu haya yanajadiliwa hapa chini.

Usimamizi wa seva ya hifadhidata

Kazi za usimamizi ambazo unaweza kutekeleza kwa kutumia Studio ya Usimamizi wa Seva ya SQL ni pamoja na, lakini sio tu:

    usajili wa seva;

    unganisho kwa seva;

    kuunda vikundi vipya vya seva;

    kusimamia seva nyingi;

    kuanza na kusimamisha seva.

Kazi hizi za utawala zimefafanuliwa katika vifungu vifuatavyo.

Usajili wa seva

Studio ya Usimamizi wa Seva ya SQL hutenganisha shughuli ya kusajili seva kutoka kwa shughuli ya kuchunguza hifadhidata na vitu vyake. (Aina zote mbili za vitendo zinaweza kufanywa kupitia Kichunguzi cha Kitu.) Kabla ya kutumia hifadhidata na vipengee vya seva yoyote, iwe ya ndani au ya mbali, lazima isajiliwe.

Unaweza kusajili seva unapoanzisha Studio ya Usimamizi wa Seva ya SQL kwa mara ya kwanza au baadaye. Ili kusajili seva ya hifadhidata, bofya bonyeza kulia seva inayotaka katika Kivinjari cha Kitu na menyu ya muktadha chagua Sajili. Ikiwa paneli ya Kivinjari cha Kitu imefichwa, ifungue kwa kutekeleza amri ya menyu Tazama --> Kivinjari cha Kitu. Sanduku la mazungumzo la Usajili wa Seva Mpya litafunguliwa kama inavyoonyeshwa kwenye takwimu hapa chini:

Chagua jina la seva unayotaka kusajili na aina ya uthibitishaji wa seva hiyo (yaani, Uthibitishaji wa Windows au Uthibitishaji wa Seva ya SQL), kisha ubofye Hifadhi.

Inaunganisha kwenye seva

Studio ya Usimamizi wa Seva ya SQL pia hutenganisha kazi za kusajili seva na kuunganisha kwenye seva. Hii ina maana kwamba wakati wa kusajili seva uunganisho wa moja kwa moja seva hii haifanyiki. Ili kuunganisha kwenye seva iliyosajiliwa, unahitaji kubofya kulia seva inayotaka kwenye dirisha la Mkaguzi wa Kitu na uchague Unganisha kutoka kwa menyu ya muktadha inayoonekana.

Kuunda kikundi kipya cha seva

Ili kuunda kikundi kipya cha seva kwenye paneli ya Seva Zilizosajiliwa, bofya kulia Nodi ya ndani Vikundi vya Seva seva za ndani) kwenye dirisha la Seva Iliyosajiliwa na kwenye menyu ya muktadha, chagua Kikundi Kipya cha Seva. Katika kisanduku cha mazungumzo cha Sifa za Kikundi kipya cha Seva kinachofungua, kikundi kipya seva) ingiza jina la kipekee la kikundi na, kwa hiari, maelezo yake.

Kusimamia Seva Nyingi

Kwa kutumia Object Explorer, Studio ya Usimamizi wa Seva ya SQL hukuruhusu kudhibiti seva nyingi za hifadhidata (zinazoitwa matukio) kwenye kompyuta moja. Kila mfano wa sehemu ya Seva ya Hifadhidata ina seti yake ya vitu vya hifadhidata (mfumo na hifadhidata za watumiaji) ambazo hazishirikiwi kati ya matukio.

Ili kudhibiti seva na usanidi wake, bonyeza kulia kwenye jina la seva kwenye Kitu cha Kuchunguza na uchague Sifa kutoka kwa menyu ya muktadha inayoonekana. Kisanduku cha kidadisi cha Sifa za Seva kitafunguliwa, kilicho na kurasa kadhaa kama vile Jumla, Usalama, Ruhusa, n.k.

Maonyesho ya ukurasa wa Jumla mali ya jumla seva:

Ukurasa wa Usalama una taarifa kuhusu hali ya uthibitishaji ya seva na mbinu ya ukaguzi wa kuingia. Ukurasa wa Ruhusa unaonyesha akaunti na majukumu yote ambayo yanaweza kufikia seva. Sehemu ya chini ya ukurasa inaonyesha ruhusa zote zinazoweza kutolewa kwa akaunti na majukumu haya.

Unaweza kubadilisha jina la seva kwa kuipa jina jipya. Ili kufanya hivyo, bonyeza-click seva inayohitajika kwenye dirisha la Kitu cha Explorer na uchague Kujiandikisha kutoka kwenye orodha ya muktadha. Sasa unaweza kuipa seva jina jipya na kubadilisha maelezo yake. Seva hazipaswi kubadilishwa jina isipokuwa lazima, kwani hii inaweza kuathiri seva zingine zinazounganishwa nazo.

Kuanzisha na kusimamisha seva

Seva ya Injini ya Hifadhidata huanza kiotomatiki wakati wa kuanza kwa chaguo-msingi mfumo wa uendeshaji Windows. Kuanzisha seva kwa kutumia Studio ya Usimamizi wa Seva ya SQL, bonyeza kulia kwenye seva inayotaka kwenye Kikaguzi cha Kitu na uchague Anza kutoka kwa menyu ya muktadha. Menyu hii pia ina chaguzi za Acha na Sitisha kwa kutekeleza vitendo vinavyofaa kwenye seva.

Kusimamia Hifadhidata na Kivinjari cha Kitu

Kazi za kiutawala ambazo unaweza kufanya kwa kutumia Studio ya Usimamizi wa Seva ya SQL ni pamoja na:

    kuunda hifadhidata bila kutumia Lugha ya Transact-SQL;

    kurekebisha hifadhidata bila kutumia lugha ya Transact-SQL;

    dhibiti meza bila kutumia lugha ya Transact-SQL;

    uumbaji na utekelezaji Taarifa za SQL(ilivyoelezwa katika makala inayofuata).

Kuunda hifadhidata bila kutumia T-SQL

Hifadhidata mpya inaweza kuundwa kwa kutumia Kivinjari cha Kitu Kivinjari cha Kitu. Kama jina lake linavyopendekeza, Object Explorer pia inaweza kutumika kuchunguza vitu vya seva. Kutoka kwa paneli ya zana hii unaweza kuona vitu vyote vya seva na kudhibiti seva na hifadhidata. Mti wa uongozi wa kitu cha seva una, kati ya folda zingine, folda ya Hifadhidata. Folda hii, kwa upande wake, ina folda ndogo kadhaa, pamoja na folda ya hifadhidata za mfumo data, na folda kwa kila hifadhidata iliyoundwa na mtumiaji.

Ili kuunda hifadhidata kwa kutumia Object Explorer, bonyeza-kulia nodi ya Hifadhidata na uchague kipengee cha menyu ya Hifadhidata Mpya. Katika sanduku la mazungumzo la Hifadhidata Mpya inayofungua, kwenye uwanja wa jina la Hifadhidata, ingiza jina msingi mpya data, na kisha bofya OK.

Kila hifadhidata ina mali kadhaa, kama vile aina ya faili, saizi ya awali, n.k. Orodha ya kurasa za mali ya hifadhidata iko katika kidirisha cha kushoto cha kisanduku cha mazungumzo cha Hifadhidata Mpya. Ukurasa wa Jumla wa kisanduku cha mazungumzo cha Sifa za Hifadhidata una taarifa kama vile jina, mmiliki, na mgongano wa hifadhidata, miongoni mwa mambo mengine:

Sifa za faili za data za hifadhidata mahususi zimeorodheshwa kwenye ukurasa wa Faili na zina maelezo kama vile jina na ukubwa wa awali wa faili, eneo la hifadhidata, na aina ya faili (kwa mfano, msingi). Hifadhidata inaweza kuhifadhiwa katika faili kadhaa. Katika Seva ya SQL inatumika udhibiti wa nguvu nafasi ya diski. Hii inamaanisha kuwa saizi ya hifadhidata inaweza kusanidiwa kukua kiotomatiki na kusinyaa inavyohitajika.

ili kubadilika Mali ya ukuaji wa kiotomatiki(Ukuaji wa kiotomatiki) Kwenye ukurasa wa Faili, kwenye safu ya Ukuaji wa Kiotomatiki, bofya ikoni ya ellipsis (...) na ufanye mabadiliko sahihi kwenye sanduku la mazungumzo la Badilisha Ukuaji wa Kiotomatiki. Ili kuruhusu ukuaji wa kiotomatiki wa saizi ya hifadhidata, unahitaji kuweka Washa kisanduku cha kuteua cha Ukuaji Kiotomatiki. Kila wakati wakati ukubwa uliopo faili haitoshi kuhifadhi data iliyoongezwa, seva inaomba moja kwa moja mfumo kutenga nafasi ya ziada ya disk kwa faili. Kiasi cha ziada nafasi ya diski(katika asilimia au megabaiti) imeonyeshwa ndani Sehemu ya Ukuaji wa Faili katika sanduku la mazungumzo sawa. Na katika sehemu Upeo wa Ukubwa wa Faili inaweza kuwa mdogo ukubwa wa juu faili kwa kuchagua swichi ya Limited hadi (MB), au ondoa vizuizi vya ukubwa kwa kuchagua swichi isiyo na kikomo (huu ndio mpangilio chaguomsingi). Ikiwa ukubwa wa faili ni mdogo, lazima ueleze ukubwa wake wa juu unaoruhusiwa.

Ukurasa wa Vikundi vya faili wa kisanduku cha mazungumzo cha Sifa za Hifadhidata unaonyesha majina ya vikundi vya faili ambavyo faili ya hifadhidata ni, sehemu ya kikundi cha faili (chaguo-msingi au dhahiri), na shughuli zinazoruhusiwa kufanywa kwenye kikundi cha faili (soma-andika au soma-tu) kusoma).

Kwenye ukurasa wa Chaguzi wa kisanduku cha mazungumzo cha Sifa za Hifadhidata, unaweza kutazama na kurekebisha chaguo zote za kiwango cha hifadhidata. Vikundi vya vigezo ni Otomatiki, Containment, Mshale, Miscellaneous, Recovery, Service Broker, na Jimbo. Kundi la Jimbo lina, kwa mfano, vigezo vinne vifuatavyo:

Hifadhidata ya Kusoma Pekee

Inakuruhusu kuanzisha ufikiaji wa hifadhidata ufikiaji kamili au ufikiaji wa kusoma tu. Katika kesi ya mwisho, watumiaji hawawezi kurekebisha data. Thamani chaguo-msingi ya kigezo hiki ni Uongo.

Zuia Ufikiaji

Huweka idadi ya watumiaji ambao wanaweza kutumia hifadhidata kwa wakati mmoja. Thamani chaguo-msingi ni MULTI_USER.

Jimbo la Hifadhidata

Inaelezea hali ya hifadhidata. Thamani chaguo-msingi ya kigezo hiki ni Kawaida.

Usimbaji Fiche Umewashwa

Inabainisha hali ya usimbaji wa hifadhidata. Thamani chaguo-msingi ya kigezo hiki ni Uongo.

Ukurasa wa Sifa Zilizopanuliwa unaonyesha sifa za ziada kwa hifadhidata ya sasa. Kwenye ukurasa huu unaweza kufuta sifa zilizopo na kuongeza mpya.

Ukurasa wa Ruhusa unaonyesha watumiaji wote, majukumu na ruhusa zinazohusiana.

Kurasa zingine Badilisha Ufuatiliaji, Kuakisi ( Tafakari ya kioo) na Usafirishaji wa Kumbukumbu za Muamala hufafanua uwezo unaohusiana na upatikanaji wa data.

Marekebisho ya hifadhidata

Kwa kutumia Kivinjari cha Kitu unaweza kurekebisha misingi iliyopo data kwa kubadilisha faili za hifadhidata na vikundi vya faili. Ili kuongeza faili mpya kwenye hifadhidata, bonyeza-kulia hifadhidata unayotaka na uchague Sifa kutoka kwa menyu ya muktadha. Katika sanduku la mazungumzo la Mali ya Hifadhidata inayofungua, chagua ukurasa wa Faili na ubofye kitufe cha Ongeza kilicho chini ya sehemu ya faili za Hifadhidata. Itaongezwa kwenye sehemu mstari mpya, katika Jina la Mantiki shamba ambalo unapaswa kuingiza jina la faili ya database ili kuongezwa, na katika maeneo mengine kuweka mali muhimu ya faili hii. Unaweza pia kuongeza kikundi cha faili cha pili kwa hifadhidata kwa kuchagua ukurasa wa Vikundi vya faili na kubofya kitufe cha Ongeza.

Sifa za hifadhidata zilizotajwa hapo awali zinaweza tu kurekebishwa na msimamizi wa mfumo au mmiliki wa hifadhidata.

Ili kufuta hifadhidata kwa kutumia Object Explorer, bonyeza-kulia jina la hifadhidata unayotaka na uchague Futa kutoka kwa menyu ya muktadha inayofungua.

Usimamizi wa meza

Baada ya kuunda hifadhidata, kazi inayofuata ni kuunda meza zote muhimu. Sawa na kuunda hifadhidata, majedwali ndani yake yanaweza pia kuundwa kwa kutumia Transact-SQL au Object Explorer. Kama vile kuunda hifadhidata, hapa tutaangalia kuunda majedwali kwa kutumia Object Explorer pekee.

Ili kufanya mazoezi ya kuunda jedwali, wacha tuunde jedwali la Idara katika hifadhidata ya SampleDb. Ili kuunda jedwali la hifadhidata kwa kutumia Kichunguzi cha Kitu, panua nodi ya Hifadhidata, na kisha nodi ya hifadhidata inayotakiwa, bonyeza-click folda ya Majedwali na uchague Jedwali Jipya kutoka kwa menyu ya muktadha inayofungua. Juu na upande wa kulia Dirisha la Studio ya Usimamizi hufungua dirisha la kuunda safu wima za jedwali mpya. Ingiza majina ya safu wima ya jedwali, aina zao za data, na azimio la thamani batili kwa kila safu, kama inavyoonyeshwa kulia. paneli ya juu kwenye picha hapa chini:

Ili kuchagua mojawapo ya aina za data zinazoauniwa na mfumo kwa safu, katika safu wima ya Aina ya Data, chagua kisha ubofye pembetatu inayoelekea chini kwenye ukingo wa kulia wa kisanduku (pembetatu hii inaonekana baada ya kuchagua kisanduku). Matokeo yake, katika orodha ya kushuka inayofungua, chagua aina ya data inayohitajika kwa safu.

Unaweza kubadilisha aina ya data ya safu wima iliyopo kwenye kichupo cha Sifa za Safu (jopo la chini kwenye takwimu). Baadhi ya aina za data, kama vile char, zinahitaji urefu kubainishwa kwenye mstari wa Urefu, ilhali zingine, kama vile desimali, zinahitaji kipimo na usahihi kubainishwa katika mistari inayolingana ya Mizani na Usahihi kwenye kichupo cha Sifa za Safu. Nyingine zingine, kama vile int, hazihitaji mali yoyote kati ya hizi kubainishwa. (Thamani batili za aina maalum data imeangaziwa katika fonti iliyotiwa kivuli kwenye orodha ya sifa zote zinazowezekana za safu wima.)

Kuruhusu maadili tupu Kwa ya safu hii, unapaswa kuweka kisanduku cha kuteua cha sehemu inayolingana nayo. Pia, ikiwa safu wima inahitaji thamani chaguomsingi, inapaswa kuingizwa katika Thamani Chaguomsingi au laini ya Kufunga ya paneli ya Sifa za Safu. Thamani chaguo-msingi hukabidhiwa kwa kisanduku cha safu kiotomatiki isipokuwa thamani iwe imeingizwa kwa uwazi.

Safu ya Nambari ndio ufunguo wa msingi wa jedwali la Idara. Ili kufanya safu kuwa ufunguo wa msingi wa jedwali, bofya kulia na uchague Weka Kitufe cha Msingi kutoka kwa menyu ya muktadha.

Mara tu unapokamilisha kazi yote ya kuunda jedwali, bofya msalaba kwenye kichupo cha Mbuni wa Jedwali. Kisanduku kidadisi kitafunguliwa kukuuliza ikiwa uhifadhi mabadiliko yako. Bofya Ndiyo, ambayo itafungua kisanduku cha mazungumzo cha Chagua Jina, ikikuuliza uweke jina la jedwali. Ingiza jina la meza unayotaka na ubonyeze Sawa. Jedwali litahifadhiwa chini jina maalum. Ili kuonyesha meza mpya katika daraja la hifadhidata, kwenye upau wa zana wa Object Explorer, bofya ikoni ya Upya.

Ili kutazama na kubadilisha sifa za jedwali lililopo, panua hifadhidata iliyo na jedwali linalohitajika, panua nodi ya Majedwali kwenye hifadhidata hiyo, bonyeza-kulia jedwali unalotaka, kisha uchague Sifa kutoka kwa menyu ya muktadha. Hii itafungua kisanduku cha mazungumzo cha Sifa za Jedwali kwa jedwali. Kama mfano, takwimu iliyo hapa chini inaonyesha kisanduku cha mazungumzo cha Sifa za Jedwali kwenye kichupo cha Jumla kwa jedwali la Mfanyakazi katika hifadhidata ya SampleDb.

Ili kubadilisha jina la meza, kwenye folda ya Majedwali, bofya kulia kwenye orodha ya meza na uchague Badili jina kutoka kwa menyu ya muktadha. Na kufuta jedwali, bofya kulia na uchague Futa.

Baada ya kuunda majedwali yote manne ya hifadhidata ya SampleDb (Mfanyakazi, Idara, Mradi na Works_on - unaweza kupata muundo wa kina wa jedwali kwenye msimbo wa chanzo), unaweza kutumia kipengele kingine cha SQL Server Management Studio kuonyesha mchoro wa uhusiano wa chombo - mchoro (ER) (uhusiano wa chombo) hifadhidata hii. (Mchakato wa kubadilisha jedwali la hifadhidata kuwa mchoro wa uhusiano wa chombo (ER) unaitwa uhandisi wa kurudi nyuma.)

Ili kuunda mchoro wa ER kwa hifadhidata ya SampleDb, bofya kulia folda yake ya Michoro ya Hifadhidata na uchague Mchoro Mpya wa Hifadhidata kutoka kwa menyu ya muktadha. Ikiwa kisanduku cha kidadisi kinaonekana kuuliza kama uunde vitu vya msaidizi, chagua Ndiyo.

Hii itafungua kisanduku cha kidadisi cha Ongeza Jedwali, kukuruhusu kuchagua majedwali ya kuongeza kwenye chati. Mara baada ya kuongeza meza zote muhimu (katika kesi hii, zote nne), bofya Funga na mchawi utaunda chati sawa na ile iliyoonyeshwa kwenye picha hapa chini:

Takwimu inaonyesha tu mchoro wa kati wa ER wa hifadhidata ya SampleDb, sio mchoro wa mwisho wa ER, kwa sababu ingawa inaonyesha jedwali zote nne zilizo na safu wima zao (na funguo zao kuu zinazolingana), bado haionyeshi uhusiano kati ya jedwali. Uhusiano kati ya meza mbili ni msingi ufunguo wa msingi moja ya jedwali na safu inayowezekana inayolingana (au safuwima) ya jedwali lingine.

Kuna mahusiano matatu kati ya jedwali kwenye hifadhidata ya SampleDb. Jedwali la Idara lina uhusiano wa 1:N na jedwali la Mfanyakazi kwa sababu kila thamani katika ufunguo msingi wa jedwali la Idara (Nambari safu) inalingana na thamani moja au zaidi katika safu wima ya Nambari ya Idara ya jedwali la Mfanyakazi (idara inaweza kuwa na wafanyikazi wengi).

Vile vile, kuna uhusiano kati ya Jedwali la Mfanyakazi na Kazi_kwenye Majedwali kwa sababu ni maadili tu ambayo yapo katika safu wima ya msingi ya jedwali la Mfanyakazi (Id) pia zipo kwenye safu wima ya EmpId ya jedwali la Works_on. Uhusiano wa tatu upo kati ya Project na Works_on tables, kwa sababu maadili pekee ambayo yapo katika ufunguo msingi wa jedwali la Mradi (Nambari) pia zipo kwenye safuwima ya Nambari ya Project ya jedwali la Works_on.

Ili kuunda mahusiano haya matatu, mchoro wa ER unahitaji kujengwa upya kwa kubainisha kwa kila jedwali safu wima zinazolingana. nguzo muhimu meza nyingine. Safu hii inaitwa ufunguo wa kigeni ( ufunguo wa kigeni) . Ili kuona jinsi hii inafanywa, hebu tufafanue safu ya IdaraNambari ya jedwali la Wafanyakazi kama ufunguo wa nje Meza za idara. Ili kufanya hivyo, fanya hatua zifuatazo:


Mahusiano mengine mawili yanaundwa kwa njia sawa. Kielelezo hapa chini kinaonyesha mchoro wa ER unaoonyesha mahusiano yote matatu kati ya jedwali la hifadhidata la SampleDb: