Nasazení databázových projektů
podle Jason Lee
Poznámka:
Ve spoustě podnikových scénářů nasazení potřebujete možnost publikovat přírůstkové aktualizace do nasazené databáze. Alternativou je opětovné vytvoření databáze při každém nasazení, což znamená, že ztratíte všechna data v existující databázi. Při práci se sadou Visual Studio 2010 se doporučuje použití nástroje VSDBCMD k přírůstkovém publikování databáze. Další verze sady Visual Studio a kanálu publikování webu (WPP) však budou zahrnovat nástroje, které podporují přírůstkové publikování přímo.
Pokud otevřete ukázkové řešení Contact Manageru v sadě Visual Studio 2010, uvidíte, že databázový projekt obsahuje složku Vlastnosti, která obsahuje čtyři soubory.
Společně se souborem projektu (ContactManager.Database.dbproj v tomto případě) řídí tyto soubory různé aspekty procesu sestavení a nasazení:
- Soubor Database.sqlcmdvars poskytuje hodnoty pro všechny proměnné SQLCMD, které použijete při nasazování projektu. Každá konfigurace řešení (například ladění a verze) může zadat jiný soubor .sqlcmdvars.
- Soubor Database.sqldeployment poskytuje nastavení specifická pro nasazení, například jestli chcete použít kolaci definovanou v projektu nebo kolaci cílového serveru, ať už chcete znovu vytvořit cílovou databázi pokaždé, nebo jednoduše změnit existující databázi tak, aby byla aktuální, atd. Každá konfigurace řešení může zadat jiný soubor .sqldeployment.
- Soubor Database.sqlpermissions je dokument XML, pomocí kterého můžete definovat všechna oprávnění, která chcete přidat do cílové databáze. Všechny konfigurace řešení sdílejí stejný soubor .sqlpermissions.
- Soubor Database.sqlsettings určuje vlastnosti na úrovni databáze, které se mají použít při vytváření databáze, jako je kolace k použití, chování relačních operátorů atd. Všechny konfigurace řešení sdílejí stejný soubor .sqlsettings.
Je vhodné chvíli otevřít tyto soubory v sadě Visual Studio a seznámit se s obsahem.
Při sestavování databázového projektu proces sestavení vytvoří dva soubory:
- Schéma databáze (soubor .dbschema). Popisuje schéma databáze, kterou chcete vytvořit ve formátu XML.
- Manifest nasazení (soubor .deploymanifest). Obsahuje všechny informace potřebné k vytvoření a nasazení databáze. Odkazuje na soubor .dbschema spolu s dalšími prostředky, jako jsou pokyny pro nasazení (soubor .sqldeployment) a všechny skripty SQL před nasazením nebo po nasazení.
Zobrazí se vztah mezi těmito prostředky:
Jak vidíte, soubor .sqlsettings a soubor .sqlpermissions jsou vstupy procesu sestavení. Spolu se souborem projektu databáze se tyto soubory používají k vytvoření souboru schématu databáze. Soubor .sqldeployment a soubor .sqlcmdvars procházejí procesem sestavení beze změny. Manifest nasazení označuje umístění schématu databáze, souboru .sqldeployment, souboru .sqlcmdvars a všech skriptů SQL před nasazením nebo po nasazení.
Proč použít VSDBCMD k nasazení databázového projektu?
Při nasazování databázových projektů existují různé přístupy. Ne všechny jsou ale vhodné pro nasazení databázového projektu na vzdálené servery v podnikovém prostředí. Zvažte, co chcete z nasazení databázového projektu. Ve scénářích podnikového nasazení pravděpodobně budete chtít:
- Možnost nasazení databázového projektu ze vzdáleného umístění
- Možnost provádět přírůstkové aktualizace stávající databáze.
- Možnost zahrnout skripty před nasazením nebo skripty po nasazení.
- Možnost přizpůsobit nasazení více cílovým prostředím.
- Možnost nasadit databázový projekt jako součást rozsáhlejšího, obvykle skriptovaného nasazení řešení s jedním krokem.
K nasazení databázového projektu můžete použít tři hlavní přístupy:
- Funkci nasazení můžete použít s typem databázového projektu v sadě Visual Studio 2010. Když sestavíte a nasadíte databázový projekt v sadě Visual Studio 2010, proces nasazení použije manifest nasazení k vygenerování souboru nasazení založeného na SQL specifickém pro konfiguraci sestavení. Tím se databáze vytvoří, pokud ještě neexistuje, nebo provede potřebné změny databáze, pokud už existuje. Tento soubor můžete spustit na cílovém serveru pomocí SQLCMD.exe nebo můžete sadu Visual Studio nastavit tak, aby soubor vytvořil a spustil. Nevýhodou tohoto přístupu je, že máte pouze omezenou kontrolu nad nastavením nasazení. Často také budete muset upravit soubor nasazení SQL tak, aby poskytoval hodnoty proměnných specifických pro prostředí. Tento přístup můžete použít jenom z počítače s nainstalovanou sadou Visual Studio 2010 a vývojář by potřeboval znát a poskytovat připojovací řetězec a přihlašovací údaje pro všechna cílová prostředí.
- K nasazení databáze v rámci projektu webové aplikace můžete použít nástroj pro nasazení webu Internetová informační služba (IIS). Tento přístup je ale mnohem složitější, pokud chcete nasadit databázový projekt místo pouhé replikace existující místní databáze na cílovém serveru. Nasazení webu můžete nakonfigurovat tak, aby spouštět skript nasazení SQL, který databázový projekt generuje, ale abyste to mohli udělat, musíte pro projekt webové aplikace vytvořit vlastní soubor cílů WPP. Tím se proces nasazení značně zkompiluje. Nasazení webu navíc nepodporuje přímo přírůstkové aktualizace stávajících databází. Další informace o tomto přístupu najdete v tématu Rozšíření kanálu publikování webu do projektu balíčku databáze nasazeného soubor SQL.
- K nasazení databáze můžete použít nástroj VSDBCMD pomocí schématu databáze nebo manifestu nasazení. Můžete volat VSDBCMD.exe z cíle NÁSTROJE MSBuild, který umožňuje publikovat databáze jako součást rozsáhlejšího skriptovaného procesu nasazení. Proměnné v souboru .sqlcmdvars a spoustu dalších vlastností databáze můžete přepsat příkazem VSDBCMD, který umožňuje přizpůsobit nasazení pro různá prostředí bez vytváření více konfigurací sestavení. VSDBCMD poskytuje diferenciační funkce, což znamená, že provede pouze potřebné změny pro sladění cílové databáze se schématem databáze. VSDBCMD také nabízí širokou škálu možností příkazového řádku, které poskytují jemně odstupňovanou kontrolu nad procesem nasazení.
Z tohoto přehledu vidíte, že použití nástroje VSDBCMD s nástrojem MSBuild je nejvhodnější pro typický scénář podnikového nasazení:
Podporuje | Visual Studio 2010 | Web Deploy 2.0 | VSDBCMD.exe |
---|---|---|---|
Podporuje vzdálené nasazení? | Ano | Ano | Yes |
Podporuje přírůstkové aktualizace? | Yes | Ne | Ano |
Podporuje skripty před nasazením nebo po nasazení? | Ano | Ano | Yes |
Podporuje nasazení s více prostředími? | Omezená | Omezená | Ano |
Podporuje skriptované nasazení? | Omezená | Ano | Yes |
Zbývající část tohoto tématu popisuje použití nástroje VSDBCMD s nástrojem MSBuild k nasazení databázových projektů.
Principy procesu nasazení
Nástroj VSDBCMD umožňuje nasadit databázi pomocí schématu databáze (souboru .dbschema) nebo manifestu nasazení (souboru .deploymanifest). V praxi budete téměř vždy používat manifest nasazení, protože manifest nasazení umožňuje zadat výchozí hodnoty pro různé vlastnosti nasazení a identifikovat všechny skripty SQL před nasazením nebo po nasazení, které chcete spustit. Například tento příkaz VSDBCMD slouží k nasazení databáze ContactManager do databázového serveru v testovacím prostředí:
vsdbcmd.exe /a:Deploy
/manifest:"…\ContactManager.Database.deploymanifest"
/cs:"Data Source=TESTDB1;Integrated Security=true"
/p:TargetDatabase=ContactManager
/dd+
/script:"…\Publish-ContactManager-Db.sql"
V tomto případě:
- Přepínač /a (nebo /Action) určuje, co má služba VSDBCMD provést. Můžete ho nastavit na import nebo nasazení. Možnost Import se používá k vygenerování souboru .dbschema z existující databáze a možnost Nasazení slouží k nasazení souboru .dbschema do cílové databáze.
- Přepínač /manifest (nebo /ManifestFile) identifikuje soubor .deploymanifest, který chcete nasadit. Pokud byste chtěli místo toho použít soubor .dbschema, použili byste přepínač /model (nebo /ModelFile).
- Přepínač /cs (nebo /ConnectionString) poskytuje připojovací řetězec pro cílový databázový server. Všimněte si, že nezahrnuje název databáze – VSDBCMD se musí připojit k serveru, aby se vytvořila databáze; nemusí se připojovat k jednotlivým databázím. Pokud soubor .deploymanifest obsahuje připojovací řetězec, můžete tento přepínač vynechat. Pokud přesto použijete přepínač, hodnota přepínače přepíše hodnotu .deploymanifest.
- Vlastnost /p:TargetDatabase poskytuje název, který chcete přiřadit cílové databázi při vytváření. Tím se přepíše hodnota TargetDatabase vlastnost v souboru .deploymanifest. Pomocí syntaxe /p: [název vlastnosti]můžete nastavit širokou škálu vlastností nasazení a přepsat všechny proměnné SQLCMD deklarované v souboru .sqlcmdvars.
- Přepínač /dd+ (nebo /DeployToDatabase+) označuje, že chcete vytvořit nasazení a nasadit ho do cílového prostředí. Pokud zadáte /dd-, nebo vynecháte přepínač, VSDBCMD vygeneruje skript nasazení, ale nenasadí ho do cílového prostředí. Tento přepínač je často zdrojem nejasností a je vysvětlen podrobněji v další části.
- Přepínač /script (nebo /DeploymentScriptFile) určuje, kam chcete skript nasazení vygenerovat. Tato hodnota nemá vliv na proces nasazení.
Další informace o nástroji VSDBCMD najdete v referenčních informacích příkazového řádku pro VSDBCMD.EXE (import nasazení a schématu) a postupy: Příprava databáze pro nasazení z příkazového řádku pomocí VSDBCMD.EXE.
Příklad použití nástroje VSDBCMD ze souboru projektu MSBuild naleznete v tématu Principy procesu sestavení. Příklady konfigurace nastavení nasazení databáze pro více prostředí najdete v tématu Přizpůsobení nasazení databáze pro více prostředí.
Principy přepínače DeployToDatabase
Chování přepínače /dd nebo /DeployToDatabase závisí na tom, jestli používáte VSDBCMD se souborem .dbschema nebo souborem .deploymanifest. Pokud používáte soubor .dbschema, chování je poměrně jednoduché:
- Pokud zadáte /dd+ nebo /dd, VSDBCMD vygeneruje skript nasazení a nasadí databázi.
- Pokud zadáte /dd- nebo vynecháte přepínač, VSDBCMD vygeneruje pouze skript nasazení.
Pokud používáte soubor .deploymanifest, je chování mnohem složitější. Důvodem je to, že soubor .deploymanifest obsahuje název vlastnosti DeployToDatabase , která také určuje, zda je databáze nasazena.
<DeployToDatabase>False</DeployToDatabase>
Hodnota této vlastnosti je nastavena podle vlastností databázového projektu. Pokud nastavíte akci Nasazení na vytvoření skriptu nasazení (.sql),hodnota bude False. Pokud nastavíte akci Nasazení na vytvoření skriptu nasazení (.sql) a nasadíte ji do databáze, hodnota bude True.
Poznámka:
Tato nastavení jsou přidružená ke konkrétní konfiguraci sestavení a platformě. Pokud například nakonfigurujete nastavení konfigurace ladění a pak publikujete pomocí konfigurace vydané verze , nebude se nastavení používat.
Poznámka:
V tomto scénáři by měla být akce Nasazení vždy nastavená na Vytvoření skriptu nasazení (.sql), protože nechcete, aby sada Visual Studio 2010 nasadí vaši databázi. Jinými slovy, vlastnost DeployToDatabase by měla být vždy False.
Pokud je zadána vlastnost DeployToDatabase , přepínač /dd přepíše vlastnost pouze v případě, že hodnota vlastnosti je false:
- Pokud vlastnost DeployToDatabase je False a zadáte /dd+ nebo /dd, VSDBCMD přepíše vlastnost DeployToDatabase a nasadí databázi.
- Pokud vlastnost DeployToDatabase je False a zadáte /dd- nebo vynecháte přepínač, VSDBCMD databázi nenasadí.
- Pokud je vlastnost DeployToDatabase True, VSDBCMD ignoruje přepínač a nasadí databázi.
- Skript nasazení se vygeneruje v každém případě bez ohledu na to, jestli nasazujete i databázi.
Závěr
Toto téma poskytuje přehled procesu sestavení a nasazení databázových projektů v sadě Visual Studio 2010. Popisuje také, jak můžete pomocí nástroje MSBuild VSDBCMD.exe podporovat nasazení databáze na podnikové úrovni.
Další informace o tom, jak to funguje v praxi, najdete v tématu Přizpůsobení nasazení databáze pro více prostředí.
Další čtení
Informace o tom, jak přizpůsobit nasazení databáze vytvořením samostatného konfiguračního souboru nasazení pro každé prostředí, najdete v tématu Přizpůsobení nasazení databáze pro více prostředí. Pokyny ke konfiguraci členství v rolích databáze spuštěním skriptu po nasazení najdete v tématu Nasazení členství v rolích databáze do testovacích prostředí. Pokyny ke správě některých jedinečných problémů, které ukládají členské databáze, najdete v tématu Nasazení databází členství do podnikových prostředí.
Tato témata na webu MSDN poskytují širší pokyny a základní informace o databázových projektech sady Visual Studio a procesu nasazení databáze: