Nasazení databázových projektů

Jason Lee

Poznámka

V mnoha podnikových scénářích nasazení potřebujete možnost publikovat přírůstkové aktualizace do nasazené databáze. Alternativou je vytvořit databázi znovu 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 je doporučeným přístupem k přírůstkové publikování databáze použití VSDBCMD. Další verze sady Visual Studio a kanálu publikování na webu (WPP) však budou obsahovat 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.

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.

Spolu se souborem projektu (v tomto případě ContactManager.Database.dbproj ) ří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 určit jiný soubor .sqlcmdvars.
  • Soubor Database.sqldeployment poskytuje nastavení specifická pro nasazení, například jestli se má použít kolace definovaná v projektu nebo kolace cílového serveru, jestli se má cílová databáze pokaždé znovu vytvořit, nebo jednoduše změnit stávající databázi, aby byla aktuální atd. Každá konfigurace řešení může určit jiný soubor .sqldeployment.
  • Soubor Database.sqlpermissions je dokument XML, který můžete použít k definování libovolných 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 použití kolace, chování relačních operátorů atd. Všechny konfigurace řešení sdílejí stejný soubor .sqlsettings.

Stojí za to chvíli otevřít tyto soubory v sadě Visual Studio a seznámit se s jejich obsahem.

Při vytváření databázového projektu vytvoří proces sestavení 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 k nasazení (soubor .sqldeployment) a všechny skripty SQL před nasazením nebo po nasazení.

Zobrazí se vztah mezi těmito prostředky:

Vztah mezi výše uvedenými prostředky

Jak vidíte, soubor .sqlsettings a soubor .sqlpermissions jsou vstupy do procesu sestavení. Spolu se souborem projektu databáze se tyto soubory používají k vytvoření souboru schématu databáze. Soubor .sqldeployment a .sqlcmdvars procházejí procesem sestavení beze změny. Manifest nasazení označuje umístění schématu databáze, soubor .sqldeployment, soubor .sqlcmdvars a všechny skripty SQL před nasazením nebo po nasazení.

Proč k nasazení databázového projektu použít VSDBCMD?

Existují různé přístupy k nasazení databázových projektů. 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 od nasazení databázového projektu. Ve scénářích podnikového nasazení budete pravděpodobně 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 existují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 nasazení databázového projektu v rámci většího, obvykle skriptovaného, jednokrokového nasazení řešení.

Existují tři hlavní přístupy, které můžete použít k nasazení databázového projektu:

  • Funkci nasazení můžete použít s typem databázového projektu v sadě Visual Studio 2010. Při sestavování a nasazení databázového projektu v sadě Visual Studio 2010 proces nasazení používá manifest nasazení k vygenerování souboru nasazení založeného na SQL specifickém pro konfiguraci sestavení. Tím se vytvoří databáze, pokud ještě neexistuje, nebo provedete potřebné změny databáze, pokud už existuje. Můžete použít SQLCMD.exe ke spuštění tohoto souboru na cílovém serveru nebo můžete sadu Visual Studio nastavit tak, aby soubor vytvořila a spustila. Nevýhodou tohoto přístupu je, že máte jen 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 zadat připojovací řetězce a přihlašovací údaje pro všechna cílová prostředí.
  • K nasazení databáze jako součásti projektu webové aplikace můžete použít nástroj pro nasazení webu Internetové informační služby (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ý server. Nasazení webu můžete nakonfigurovat tak, aby se spustil skript nasazení SQL, který vygeneruje databázový projekt, ale abyste to mohli udělat, musíte pro projekt webové aplikace vytvořit vlastní soubor cílů WPP. Proces nasazení se tím výrazně zkompiluje. Nasazení webu navíc přímo nepodporuje přírůstkové aktualizace existujících databází. Další informace o tomto přístupu najdete v tématu Rozšíření kanálu publikování na webu na balíček databázového projektu nasazeného souboru SQL.
  • K nasazení databáze můžete použít nástroj VSDBCMD, a to buď pomocí schématu databáze, nebo manifestu nasazení. Můžete volat VSDBCMD.exe z cíle nástroje MSBuild, který vám umožní 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 vytvoření více konfigurací sestavení. VSDBCMD poskytuje funkci odlišení, což znamená, že provede pouze potřebné změny, aby cílovou databázi zarovnal se schématem databáze. VSDBCMD také nabízí širokou škálu možností příkazového řádku, které poskytují podrobnou 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í? Yes Yes Yes
Podporuje přírůstkové aktualizace? Yes No Yes
Podporuje skripty před a po nasazení? Yes Yes Yes
Podporuje nasazení ve více prostředích? Omezeně Omezeně Yes
Podporuje skriptované nasazení? Omezeně Yes 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 (soubor .dbschema) nebo manifestu nasazení (soubor .deploymanifest). V praxi téměř vždy použijete 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 se používá k nasazení databáze ContactManager na databázový server 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á VSDBCMD dělat. Tuto možnost můžete nastavit na Import nebo Nasazení. Možnost Import slouží k vygenerování souboru .dbschema z existující databáze a možnost Nasadit se používá k nasazení souboru .dbschema do cílové databáze.
  • Přepínač /manifest (nebo /ManifestFile) identifikuje soubor .deploymanifest, který chcete nasadit. Pokud byste místo toho chtěli 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 to nezahrnuje název databáze – VSDBCMD se musí připojit k serveru a vytvořit databázi. Nemusí se připojovat k jednotlivým databázím. Pokud váš soubor .deploymanifest obsahuje připojovací řetězec, můžete tento přepínač vynechat. Pokud přepínač přesto použijete, 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 vytvoření. To přepíše hodnotu TargetDatabase vlastnost v souboru .deploymanifest. Syntaxi /p:[název vlastnosti] můžete použít k nastavení široké škály vlastností nasazení a k přepsání všech proměnných SQLCMD deklarovaných 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 podrobněji vysvětlen v další části.
  • Přepínač /script (nebo /DeploymentScriptFile) určuje, kde chcete vygenerovat skript nasazení. Tato hodnota nemá vliv na proces nasazení.

Další informace o VSDBCMD najdete v tématech Referenční informace k příkazovému řádku pro VSDBCMD.EXE (nasazení a import schématu) a Postupy: Příprava databáze k nasazení z příkazového řádku pomocí VSDBCMD.EXE.

Příklad použití nástroje VSDBCMD ze souboru projektu MSBuild najdete 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, je chování 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 akci Nasadit nastavíte na Vytvořit skript nasazení (.sql), hodnota bude False. Pokud nastavíte akci Nasadit na Vytvořit skript nasazení (.sql) a nasadíte do databáze, bude hodnota True.

Poznámka

Tato nastavení jsou přidružená ke konkrétní konfiguraci sestavení a platformě. Pokud například nakonfigurujete nastavení pro konfiguraci ladění a pak ji publikujete pomocí konfigurace vydané verze , vaše nastavení se nepoužije.

Pokud například nakonfigurujete nastavení pro konfiguraci ladění a pak ji publikujete pomocí konfigurace vydané verze, vaše nastavení se nepoužije.

Poznámka

V tomto scénáři by měla být akce Nasadit vždy nastavená na Vytvořit skript 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 DeployToDatabase vlastnost je False a zadáte /dd+ nebo /dd, VSDBCMD přepíše DeployToDatabase vlastnost a nasadí databázi.
  • Pokud vlastnost DeployToDatabase je False a zadáte /dd- nebo vynecháte přepínač, VSDBCMD databázi nenasadí.
  • Pokud vlastnost DeployToDatabase je True, VSDBCMD bude ignorovat přepínač a nasadit databázi.
  • V každém případě se vygeneruje skript nasazení bez ohledu na to, jestli nasazujete i databázi.

Závěr

Toto téma obsahuje přehled procesu sestavení a nasazení pro databázové projekty v sadě Visual Studio 2010. Popisuje také, jak můžete použít VSDBCMD.exe s nástrojem MSBuild k podpoře nasazení databází 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í rolí databáze do testovacích prostředí. Pokyny ke správě některých jedinečných výzev, které členské databáze mají, najdete v tématu Nasazení databází členství do podnikových prostředí.

Tato témata na webu MSDN poskytují širší doprovodné materiály a základní informace o databázových projektech sady Visual Studio a procesu nasazení databáze: