Mindazt, amiről féltél kérdezni a Microsoft SQL szerverről
A mentésekről és az SQL Server adatbázisok helyreállításáról szóló előadások során rendszerint kétféle kérdést kérnek. Az első a közönség előadásában áll, az utóbbiakat magánbeszélgetés után kérik. Ezek a „magán” kérdések gyakran sokkal érdekesebb, és igyekszem választ adni a legösszetettebb, és érdekes is, írása helyett egy másik cikk arról, hogyan kell biztonsági mentést végezni, vagy miért kell, hogy a mentést, vagy akár miért kellene ellenőrizze a biztonsági másolatait (de tényleg ellenőrizze a biztonsági mentéseket).
Tudok biztonsági másolatot készíteni az SQL Server olyan verziójára, amely eltér a biztonsági másolat készítésétől? Milyen problémák merülhetnek fel?
Annak meghatározásához, hogy az SQL Server biztonsági mentésének melyik verziója készült, meg kell néznie a biztonsági mentés fájl fejlécét:
Használhatom a visszaállítási műveletet az adatbázis másolatának létrehozásához? Mi lehet baj?
Igen, meg tudod csinálni. Ha telepít egy tartalék egy másik szerverre, meg kell győződnie arról, hogy az új szerver, akkor bemutatni ugyanazt a logikai meghajtók, mint a „régi” szerver vagy manuálisan állítsa be a helyes utat az adatbázis fájlokat a WITH MOVE csapat A DATABÁZAT VISSZAÁLLÍTÁSA:
Az adatbázis fájlok logikai neveket és fizikai fájlneveket tartalmaznak. Csak logikai fájlneveket kell regisztrálnia, és mindegyikhez új fizikai helyet kell megadnia.
A fő probléma, hogy a találkozás olyan hibák kapcsolatos, ahol nem szabad hely a merevlemezen, ahová a visszaállítást az adatbázist, vagy ha esetleg elfelejtette megadni egy új nevet az adatbázis és az SQL Server megpróbálja visszaállítani az adatbázist tetején egy meglévő adatbázist.
Ha visszaállítja az adatbázist az új szerver, akkor találkozhat a probléma «árva Users» (felhasználók, akik elvesztették a kapcsolatot a számviteli nyilvántartás szerint a fordítás az MSDN - megjegyzés a fordító.), Ha az adatbázis felhasználói fiókhoz társított nem képviseli az új szerveren . Ezt a hibát ki kell javítania.
Tudok csatolni egy MDF fájlt adatbázisként, ha nincs tranzakciós naplófájlom?
Az egyetlen lehetőség, ha lehetséges, az, ha a tranzakciós napló elveszett az adatbázis működésének helyes befejezése után. Mindenesetre ez nem jó ötlet. Ha csatolja egy adatbázis, tranzakciós naplófájl, valamint az adatállományt, ami szükséges adatbázis helyreállítási folyamat (itt a helyreállítása az adatbázis nem érthető működését RESTORE DATABASE és a helyreállítás - a folyamat, amely minden indításakor SQL Server, amelyben az SQL Server «zajlik "A tranzakciós naplóból és az adatfájlok konzisztens állapotba hozza - egy szerkesztő megjegyzését). Azonban egyes esetekben csatlakozhat az adatállomány nélkül tranzakciós log fájlt, de ez a funkció csak azokban az esetekben, ahol a tranzakciós log fájl sérült vagy elveszett miatt probléma a berendezés és a hiánya mentést. Természetesen az adatbázis nem létezhet anélkül, hogy a tranzakciós napló és felhelyezésekor az adatbázis tranzakciós log fájlt, az SQL Server egyszerűen újjá.
Összeillesztése az adatfájl nélkül tranzakciós naplófájl megtöri a naplóláncon, és ezenkívül, akkor lehet, hogy az adatbázis sérül a szerkezeti integritását tranzakciós vagy (állapotától függően az adatbázis idején a „veszteség” a tranzakció log). Az ilyen adatbázis csatolásának működése hibát okozhat, függetlenül attól, hogy mely műveleteket nem hajtják végre.
Az adatbázisom a SAN-on található. Hallottam, hogy a SAN-mentések elégek. Igaz ez?
Ez igaz lehet. A lényeg, hogy a SAN (tárolási, hálózati / tároló rendszerek -. Kb tolmács) támogatja a tranzakciókat az SQL Server. Ha igen, akkor ő tudja, hogy van egy tranzakciót, és ezekről az ügyletek jelentheti az adatbázisban, az adatokat a adatfájlok nem lehet teljes, mert az adatrögzítés folyamata megváltozott ezeket az ügyleteket a merevlemez lehet a biztonsági mentés idején nem fejeződött be. Azok a biztonsági mentések, amelyeket maga az SQL Server természetesen figyelembe veszi.
Az EMC Data Domain például olyan szoftverek és SAN-k kombinációja, amelyek támogatják a tranzakciós támogatást, mint más gyártók termékei, de még mindig meg kell vizsgálnia a SAN dokumentációját. Vegye figyelembe az olyan kifejezések jelenlétét, mint a "tranzakciós konzisztencia" vagy a "tranzakció tudatában", vagy valami ilyesmi. Ha nem találta meg őket, azt javasolnám, hogy ellenőrizze az adatbázis-helyreállítást, mielőtt eldönti, hogy a SAN-mentések elégek ahhoz, hogy teljesíthessék az összes tartalékkövetelményt. Azonban még akkor is, ha megbizonyosodott arról, hogy a SAN-mentések helyesen lettek végrehajtva, ez nem jelenti azt, hogy nincs szükség "natív" SQL Server biztonsági mentésre. Ha például képesnek kell lennie arra, hogy egyszerre visszaállítsa az adatbázist, akkor a tranzakciós naplót az SQL Server használatával kell mentenie.
Általában biztonsági mentés létrehozásakor az SQL Server-alapú SAN használja az SQL Server VDI felületet és "lefagy" az adatbázist a mentés időtartamára. Ha ilyen biztonsági másolatot készítő mechanizmust futtat, és megnézheti az SQL Server hiba naplót, ott látni fogja, hogy az IO műveletek le vannak fagyva.
Ha a SAN által létrehozott mentésekre támaszkodik, továbbra is az adatbázis-integritás ellenőrzését kell elvégeznie az "élő" adatbázisban vagy a SAN-visszaállíttatott másolatokon. Ellenkező esetben hosszú ideig létrehozhat biztonsági másolatot a sérült adatbázisról, és nem is tud róla.
Miért nem használhatok biztonsági mentéseket a Windows által létrehozott adatfájlokról? Nem kell a képességem, hogy bármikor visszanyerjem.
Az SQL Server nem egy normál asztali alkalmazás. Fájljait oly módon kezeli, hogy biztosítsa az összes ACID tulajdonság (Atomic, Consistency, Isolated, Durable) teljesítményét. Röviden, a tranzakciók sikeres befejezésének biztosítása érdekében az SQL Server megpróbál mindenki számára hozzáférni a fájlokhoz, és szükség szerint módosítja azokat.
Ha csak másolja az adatokat fájlt, figyelmen kívül hagyva, és blokkolja tranzakciókat lehet végezni abban a pillanatban, ami azt jelenti, hogy ha megpróbálja csatolni a fájlt később, akkor inkonzisztens állapotban, ami hibákhoz vezethet.
Sokkal biztonságosabb és könnyebben használható az SQL Server beépített mechanizmusa
biztonsági másolatokat készíteni. Ez a biztonsági mentés az adatbázis teljes példánya, és minden ACID-tulajdonság végrehajtásra kerül.
Van egy nagyon kis adatbázisom. Miért nem tudom "lemeríteni" minden táblát egy lemezre, hogy létrehozhassak egy mentést?
Használhat valamit, mint az SQLCMD, és letölti az asztalokat egy egyszerű szövegfájlba, de ahelyett, hogy csak egy parancsot tudna visszaállítani az adatbázisra, több parancsot kell végrehajtania. Először létre kell hoznia egy üres adatbázist. Ezután létre kell hoznia és be kell töltenie az egyes táblákat a fájlból. Ha bármelyik táblázat egy IDENTITY oszlopot tartalmaz, akkor mindegyik táblázatban meg kell adnia a SET IDENTITY_INSERT értéket. Szintén gondosan meg kell határoznia azt a sorrendet, amelybe az adatokat be kell töltenie a táblákba az integritás biztosítása érdekében.
Ráadásul vegye figyelembe, hogy az összes táblát különböző időpontokban lemásolják a lemezre, ezért ha az adatok valahogy megváltoztak a kirakodás során, a helyreállítás után az adatbázis nem lesz konzisztens, és kézzel kell keresnie a hibákat, és kijavítani.
Természetesen Önnek joga van erre. Másrészt egyszerűen végrehajthatja a BACKUP DATABASE parancsot, majd szükség esetén visszaállíthatja ezt a biztonsági másolatot.
Miért fizet pénzt olyan segédprogramok számára, amelyek biztonsági másolatokat készítenek, ha az SQL Server maga is tudja, hogyan kell ezt tennie?
Három fő oka van harmadik féltől származó programok létrehozásához, amelyek biztonsági mentéseket hoznak létre: a kézi, az automatizálási és a funkcionalitást. Ha egy új adatbázis-rendszergazda vagy egyáltalán nincs adatbázis-kezelő, de a DBMS-t a fő feladatok kiegészítéseként kell kiszolgálni, előfordulhat, hogy nem is tudja, hogyan, hol és miért kell biztonsági másolatot készíteni az SQL Server rendszerben. Egy jó segédprogram (például az SQL Backup Pro) pontosan megadhatja a kézikönyvet, amelyre szükség van annak biztosítására, hogy adatbázisai biztonságosak legyenek a biztonsági másolatokkal.
Az SQL Server által létrehozott mentések jól működnek, de sok munkát kell elvégezned a konfiguráláshoz és még inkább automatizálni őket. A jó harmadik féltől származó segédprogram nagyon egyszerűvé teszi az automatizálási folyamatot. Ezenkívül segítséggel automatizálhatja a biztonsági másolatokhoz kapcsolódó más folyamatokat, például a tükrözést / naplózást és a biztonsági mentés integritását.
Végül, noha az SQL Server biztonsági mentései mindent megteszek, amire szükségük van, valószínűleg nem a legjobbat teszik. Például egyes segédprogramok hatékonyabban tömörítik a mentéseket, ezáltal megtakarítva a lemezterületet és lerövidítve a mentési időt. Szintén hozzáadnak funkcionalitást - például egy biztonsági másolat titkosítását (csak a beépített SQL Server eszközök esetén lehetséges, ha maga az adatbázis titkosítva van).
Ha a biztonsági mentés egy hálózati ballonon van, akkor valaki elolvashatja?
Továbbá adatbázis-sémát vagy adatokat is kaphat a biztonsági mentésből, akár visszaállítás nélkül is. Ha rendelkezik az SQL Data Összehasonlítás segédprogrammal, akkor az / Export kapcsolóval futtatva a biztonsági mentés összes adatait CSV formátumban húzhatja, összehasonlíthatja ezt a biztonsági másolatot egy üres adatbázishoz, és nem kérhet jelszót. Ugyanez az SQL Data Összehasonlítás hozza létre Önnek egy olyan szkriptet, amely létrehoz egy adatbázis sémát.
A mentéshez való illetéktelen hozzáférés megakadályozása érdekében több dolgot kell megtennie. Először győződjön meg róla, hogy a golyó, amelyen a mentéseket tárolják, korlátozott számú ember számára áll rendelkezésre. Másodszor csak azokat a biztonsági másolatokat kell tárolnia, amelyekre valóban szükség van. Végül, ha ön használ egy harmadik fél segédprogram mentések készítésére (SQL Backup Pro típus), akkor titkosítani a biztonsági, hogy ha valaki, és kap hozzáférést közvetlenül egy fájlt, majd felolvasta nem tud semmit.
Harmadik féltől származó eszközök nélkül elérheti ezt a Transparent Data Encryption (TDE) használatával.
A legjobb biztonsági szint biztosítása érdekében mindent meg kell tennie.
Bárki módosíthatja a tartalék tartalmát?
Van-e olyan zászló, amelyet beállítok, amikor létrehozok egy biztonsági másolatot? Biztos vagyok benne, hogy mindig visszaszerezhetem?
Ha ebben a zászló érted, hogy a mentési folyamat magában foglalja a művelet RESTORE VERIFYONLY létrehozása után mentés, akkor nem, akkor nem biztos, hogy vissza tudja állítani az adatbázist a biztonsági mentés. A RESTORE VERIFYONLY két ellenőrzést végezhet.
Először ellenőrzi a biztonsági mentés fejlécét, hogy meggyőződjön róla, hogy nincs benne hiba. Ha a fejléc sérült, akkor nem tudja visszaállítani az adatbázist a biztonsági mentésből.
Problémák merülhetnek fel két helyen. Először is, a VERIFYONLY alatt a fejléc ellenőrzése nem ellenőriz minden olyan dolgot, amely befolyásolhatja a helyreállítási folyamatot. Ez azt jelenti, hogy a RESTORE VERIFYONLY hiba nélkül teljesíthető, de az adatbázis még nem állítható vissza az "igazolt" másolatból.
Másodszor, a CHECKSUM nem érzékeli a memóriában bekövetkezett károkat. Ha az adatokat az oldal frissült, míg a memória, és ott az ő hibája volt, mielőtt azt a lemezre írva (és így a backup), akkor az ellenőrző számítás nem mutat hibát, hanem egyszerűen megerősíti, hogy a biztonsági írtak ugyanaz amely az adatbázisban a biztonsági mentés idején szerepelt. Ie ha az oldal már megsérült a biztonsági mentés idején, a hiba nem található az ellenőrzőösszeggel, és a biztonsági mentés helyreállítása hibát okozhat.
Az egyetlen módja annak, hogy biztosan tudjuk, hogy visszaállíthatja a biztonsági másolatot és az eredményül kapott adatbázis nem sérül, visszaállítja azt, és lehetőleg futtathatja az adatbázis integritásának ellenőrzését a visszaállított másolaton.
Tartalmaz-e a biztonsági másolatot az adatokon kívül? Tud valaki olvasni a jelszavakat?
A biztonsági mentés nem csak adatokat tartalmaz. Tartalmazza az adatbázis teljes szerkezetét. Tartalmazza az összes adatot, eljárást, nézetet, funkciót és a kód többi részét. Továbbá tartalmazza az adatbázis beállításait is. Végül tartalmazza az összes információt az adatbázis felhasználóiról. Egy normál adatbázis esetében minden adatbázis-felhasználó SQL-kiszolgálóhoz van társítva. Az ilyen felhasználók jelszavai a fiókkal együtt tárolódnak, így ezek a jelszavak nem lesznek biztonsági másolatok.
Elszigetelt adatbázisokban (bennük tárolt adatbázisokban) van azonban az USER WITH PASSWORD fogalma, mivel az önálló adatbázisok elképzelése minimálisan kapcsolódik egy ilyen adatbázishoz a kiszolgálóhoz. Ebben az esetben a jelszó a biztonsági mentésben lesz, ami oda vezethet, hogy megpróbálja elérni. A jelszavak nem tiszta szövegben kerülnek tárolásra, hanem a fiókok jelszavai (amelyek a master rendszeradatbázisában tárolódnak, és persze a biztonsági mentésbe kerülnek).
A Microsoft számos jó gyakorlatot kínál az offline adatbázisok biztonsága érdekében.
Miért van a tartalék indexekben, statisztikákban és egyéb olyan dolgokban, amelyeket könnyű újra létrehozni? Ez csak időpocsékolás?
Véleményem szerint az időveszteség az a törekvés, hogy ily módon elválasszák a dolgokat, és csak egy részből készítsen biztonsági másolatot. Először is, hogyan kell ezt csinálni? Például, hogyan lehet menteni az adatokat a klaszter mentése nélkül? Ez nem lehetséges, mert a fürtözött index levélszintje adatlap. Ie azt mondhatjuk, hogy a fürtözött indexek maguk a táblák, ezért a fürtözött indexeket be kell építeni a biztonsági másolatba. Természetesen lehetséges, hogy külön nem fürtözött indexek egy külön filegroup, és ez egy biztonsági mentést, de aztán, miután a helyreállítás a mentés, hogy mi van, mi kell még, hogy ezt a fájlt csoport életét és újraépítés indexek. Tehát mit érünk el?
A statisztikák szintén problémákat okozhatnak. Az SQL Server a statisztikát és az adatbázist (és nagyon kevés helyet igényel, mert a statisztikát csak 200 sorra építették) és visszaállítja az adatbázisba. Ha azonban a helyreállítás után elkezdenénk újra létrehozni az indexeket, mert nem készítettek biztonsági másolatot, akkor újra össze kell állítanunk a statisztikákat. Ez további időt is igényel, és az adatbázis időközben hozzáférhetetlenné válik.
A végén, azt állítják, a kifejezés „könnyű újra”, mert vészhelyzetben, az egész folyamat nagyon zavaró lehet, ami elkerülhetetlenül vezet az a tény, hogy az emberek dolgoznak az adatbázisban nem lesz képes elérni sokkal rá mint az egyszerű visszaállítás esetén.
A biztonsági másolat készítésének ötlete az, hogy az adatbázisot a lehető leggyorsabban és hatékonyabban visszaállíthatja. Minél bonyolultabb a helyreállítási folyamat, annál kevésbé hatékony a biztonsági mentés. Igen, az indexek, a felhasználók, a tárolt eljárások és minden más tárolása több helyet igényel, de növeli a helyreállítás sebességét, mivel mindent egy helyben rejlik.
OMG! Én csak töröltem az asztalt! Tudom, hogy ez a tranzakciós naplóban van. Hogyan vehetem vissza?
Egy másik lehetőség az olyan harmadik féltől származó segédprogramok használata, mint például az SQL Backup Pro, amely az egyes adatbázis-objektumokat már meglévő biztonsági mentésekből visszaállíthatja.
És ha csak biztonsági másolatot készíteni szeretnék az adatbázis létrehozására, anélkül, hogy visszaállítanánk közvetlenül a biztonsági mentést ...?
Nincs ilyen szkript létrehozása az SQL Serverben. Azonban a segédprogramok, például az SQL Összehasonlítás, létrehozhatják. Könnyen létrehozható GUI segítségével, de lehetséges a PowerShell használatával is:
'C: \ Program Files (x86) \ Red Kapu \ SQL összehasonlítása 8 \ SQLCompare.exe' /Backup1:C:\MyBackups\MyBackupFile.bak / MakeScripts: "C: \ MyScripts \ MyBackupScript"
Is, akkor figyelni az SQL Virtual Restore. Ez a segédprogram lehetővé teszi, hogy biztonsági másolatot készítsen az SQL Serverre, mintha a helyreállítási folyamatot futtatná ebből a biztonsági mentésből, de nem igényli a helyreállításhoz szükséges teljes helyet. Az ilyen módon telepített biztonsági másolat úgy néz ki, mint a legáltalánosabb adatbázis, és bármilyen kényelmesen szkriptet készíthet.