Přizpůsobení nasazené databáze pro různá prostředí
Toto téma popisuje, jak v rámci procesu nasazení přizpůsobit vlastnosti databáze konkrétním cílovým prostředím.
Poznámka
V tématu se předpokládá, že nasazujete databázový projekt sady Visual Studio 2010 pomocí MSBuild.exe a VSDBCMD.exe. Další informace o tom, proč byste mohli zvolit tento přístup, najdete v tématech Nasazení webu v podnikových projektech a Nasazení databáze.
Když nasadíte databázový projekt do více cílů, budete často chtít přizpůsobit vlastnosti nasazení databáze pro každé cílové prostředí. Například v testovacích prostředích byste databázi obvykle znovuvytvořeli při každém nasazení, zatímco v přípravných nebo produkčních prostředích byste měli mnohem větší pravděpodobnost, že provedete přírůstkové aktualizace, abyste zachovali svá data.
V databázovém projektu sady Visual Studio 2010 jsou nastavení nasazení obsažena v konfiguračním souboru nasazení (.sqldeployment). V tomto tématu se dozvíte, jak vytvořit konfigurační soubory nasazení specifické pro konkrétní prostředí a určit ten, který chcete použít jako parametr VSDBCMD.
Toto téma je součástí řady kurzů založených na požadavcích na podnikové nasazení fiktivní společnosti s názvem Fabrikam, Inc. Tato série kurzů používá ukázkové řešení – řešení Contact Manager – k reprezentaci webové aplikace s realistickou úrovní složitosti, včetně aplikace ASP.NET MVC 3, služby Windows Communication Foundation (WCF) a databázového projektu.
Metoda nasazení, která je základem těchto kurzů, je založená na přístupu k rozděleným souborům projektu popsaném v tématu Principy souboru projektu, ve kterém je proces sestavení řízen dvěma soubory projektu – jeden obsahuje pokyny k sestavení, které platí pro každé cílové prostředí, a druhý obsahuje nastavení sestavení a nasazení specifické pro dané prostředí. V době sestavení se soubor projektu pro konkrétní prostředí sloučí do souboru projektu nezávislého na prostředí, aby se vytvořila úplná sada pokynů k sestavení.
Přehled úkolů
V tomto tématu se předpokládá, že:
- K nasazení řešení použijete přístup rozděleného souboru projektu, jak je popsáno v tématu Principy souboru projektu.
- VoláníM VSDBCMD ze souboru projektu nasadíte databázový projekt, jak je popsáno v tématu Principy procesu sestavení.
Pokud chcete vytvořit systém nasazení, který podporuje různé vlastnosti nasazení databáze mezi cílovými prostředími, budete muset:
- Vytvořte konfigurační soubor nasazení (.sqldeployment) pro každé cílové prostředí.
- Vytvořte příkaz VSDBCMD, který určuje konfigurační soubor nasazení jako přepínač příkazového řádku.
- Parametrizujte příkaz VSDBCMD v souboru projektu Microsoft Build Engine (MSBuild), aby možnosti VSDBCMD byly vhodné pro cílové prostředí.
V tomto tématu se dozvíte, jak provést každý z těchto postupů.
Vytváření konfiguračních souborů nasazení Environment-Specific
Ve výchozím nastavení obsahuje databázový projekt jeden konfigurační soubor nasazení s názvem Database.sqldeployment. Pokud tento soubor otevřete v sadě Visual Studio 2010, uvidíte různé možnosti nasazení, které máte k dispozici:
- Kolace porovnání nasazení To vám umožní zvolit, jestli se má použít kolace databáze vašeho projektu ( zdrojová kolace) nebo kolace databáze cílového serveru ( cílová kolace). Ve většině případů budete chtít při nasazování do vývojového nebo testovacího prostředí použít kolaci zdroje. Při nasazení do přípravného nebo produkčního prostředí budete obvykle chtít nechat cílovou kolaci beze změny, abyste se vyhnuli problémům s interoperabilitou.
- Nasaďte vlastnosti databáze. To vám umožní zvolit, zda se mají použít vlastnosti databáze definované v souboru Database.sqlsettings . Při prvním nasazení databáze byste měli nasadit vlastnosti databáze. Pokud aktualizujete existující databázi, vlastnosti by už měly být na místě a neměli byste je muset nasazovat znovu.
- Databázi vždy znovu vytvořte. Díky tomu se můžete rozhodnout, jestli chcete cílovou databázi znovu vytvořit pokaždé, když nasadíte, nebo provést přírůstkové změny, aby byla cílová databáze aktuální podle vašeho schématu. Pokud databázi znovu vytvoříte, přijdete o všechna data v existující databázi. Proto byste pro nasazení do přípravného nebo produkčního prostředí měli obvykle nastavit hodnotu false .
- Pokud může dojít ke ztrátě dat, zablokujte přírůstkové nasazení. To vám umožní zvolit, jestli se má nasazení zastavit, pokud změna schématu databáze způsobí ztrátu dat. Obvykle tuto možnost nastavíte na true pro nasazení do produkčního prostředí, abyste měli příležitost k zásahu a ochraně důležitých dat. Pokud jste nastavili možnost Vždy znovu vytvářet databázi na hodnotu false, nebude mít toto nastavení žádný vliv.
- Spusťte nasazení v režimu pro jednoho uživatele. To obvykle není problém ve vývojových nebo testovacích prostředích. Pro nasazení do přípravných nebo produkčních prostředí byste ji ale obvykle měli nastavit na hodnotu true . Zabráníte tak uživatelům v provádění změn databáze, zatímco probíhá nasazení.
- Před nasazením zálohujte databázi. Tuto hodnotu obvykle nastavíte na true při nasazení do produkčního prostředí jako preventivní opatření proti ztrátě dat. Pokud vaše pracovní databáze obsahuje velké množství dat, můžete ji také nastavit na hodnotu true při nasazení do přípravného prostředí.
- Generovat příkazy DROP pro objekty, které jsou v cílové databázi, ale nejsou v databázovém projektu. Ve většině případů je to nedílnou a nezbytnou součástí provádění přírůstkových změn v databázi. Pokud jste nastavili možnost Vždy znovu vytvářet databázi na hodnotu false, nebude mít toto nastavení žádný vliv.
- Nepoužívejte příkazy ALTER ASSEMBLY k aktualizaci typů CLR. Toto nastavení určuje, jak SQL Server aktualizovat typy modulu CLR (Common Language Runtime) na novější verze sestavení. Ve většině scénářů by tato hodnota měla být nastavená na hodnotu false .
Tato tabulka zobrazuje typická nastavení nasazení pro různá cílová prostředí. Vaše nastavení se ale může lišit v závislosti na vašich přesných požadavcích.
Vývojář/testování | Příprava/integrace | Výroba | |
---|---|---|---|
Kolace porovnání nasazení | Zdroj | Cíl | Cíl |
Nasazení vlastností databáze | Ano | Jenom poprvé | Jenom poprvé |
Vždy znovu vytvořit databázi | Ano | Nepravda | Nepravda |
Blokování přírůstkového nasazení, pokud může dojít ke ztrátě dat | Ne | Možná | Ano |
Spuštění skriptu nasazení v režimu pro jednoho uživatele | Nepravda | Ano | Ano |
Zálohování databáze před nasazením | Ne | Možná | Ano |
Generování příkazů DROP pro objekty, které jsou v cílové databázi, ale nejsou v databázovém projektu | Nepravda | Ano | Ano |
Nepoužívejte příkazy ALTER ASSEMBLY k aktualizaci typů CLR. | Nepravda | Nepravda | Nepravda |
Poznámka
Další informace o vlastnostech nasazení databáze a důležitých aspektech prostředí najdete v tématech Přehled nastavení databázového projektu, Postupy: Konfigurace vlastností pro podrobnosti nasazení, Sestavení a nasazení databáze do izolovaného vývojového prostředí a Sestavení a nasazení databází do přípravného nebo produkčního prostředí.
Pokud chcete podporovat nasazení databázového projektu do více cílů, měli byste vytvořit konfigurační soubor nasazení pro každé cílové prostředí.
Vytvoření konfiguračního souboru specifického pro prostředí
V sadě Visual Studio 2010 klikněte v okně Průzkumník řešení pravým tlačítkem na projekt databáze a potom klikněte na Vlastnosti.
Na stránce vlastností projektu databáze klikněte na kartě Nasazení na řádku konfiguračního souboru nasazení na Nový.
V dialogovém okně Nový konfigurační soubor nasazení dejte souboru smysluplný název (například TestEnvironment.sqldeployment) a klikněte na Uložit.
Na stránce [Název_souboru].sqldeployment nastavte vlastnosti nasazení tak, aby odpovídaly požadavkům cílového prostředí, a pak soubor uložte.
Všimněte si, že nový soubor je přidán do složky Vlastnosti v databázovém projektu.
Zadání konfiguračního souboru nasazení ve VSDBCMD
Když v sadě Visual Studio 2010 používáte konfigurace řešení (například Ladění a Vydání), můžete ke každé konfiguraci přidružit konfigurační soubor nasazení. Když sestavíte konkrétní konfiguraci, proces sestavení vygeneruje soubor manifestu nasazení specifického pro konfiguraci, který odkazuje na konfigurační soubor nasazení pro konkrétní konfiguraci. Jedním z hlavních cílů přístupu k nasazení popsaného v těchto kurzech je ale dát lidem možnost řídit proces nasazení bez použití sady Visual Studio 2010 a konfigurace řešení. V tomto přístupu je konfigurace řešení stejná bez ohledu na cílové prostředí nasazení. Pokud chcete nasazení databáze přizpůsobit konkrétnímu cílovému prostředí, můžete pomocí možností příkazového řádku VSDBCMD zadat konfigurační soubor nasazení.
Pokud chcete zadat konfigurační soubor nasazení ve VSDBCMD, použijte přepínač p:/DeploymentConfigurationFile a zadejte úplnou cestu k souboru. Tím se přepíše konfigurační soubor nasazení, který manifest nasazení identifikuje. Můžete například použít tento příkaz VSDBCMD k nasazení databáze ContactManager do testovacího prostředí:
vsdbcmd.exe /a:Deploy
/manifest:"…\ContactManager.Database.deploymanifest"
/cs:"Data Source=TESTDB1;Integrated Security=true"
/p:TargetDatabase=ContactManager
/p:DeploymentConfigurationFile=
"…\ContactManager.Database_TestEnvironment.sqldeployment"
/dd+
/script:"…\Publish-ContactManager-Db.sql"
Poznámka
Všimněte si, že proces sestavení může přejmenovat soubor .sqldeployment při kopírování souboru do výstupního adresáře.
Pokud ve skriptech SQL před nasazením nebo po nasazení používáte proměnné příkazů SQL, můžete k nasazení přidružit soubor .sqlcmdvars specifický pro konkrétní prostředí. V tomto případě použijete přepínač p:/SqlCommandVariablesFile k identifikaci souboru .sqlcmdvars.
Spuštění příkazu VSDBCMD ze souboru projektu MSBuild
Příkaz VSDBCMD můžete vyvolat ze souboru projektu MSBuild pomocí úlohy Exec v rámci cíle nástroje MSBuild. V nejjednodušší podobě by vypadal takto:
<Target Name="DeployDatabase">
<PropertyGroup>
<_Cmd>
Add your VSDBCMD command here
</_Cmd>
</PropertyGroup>
<Exec Command="$(_Cmd)"/>
</Target>
- Abyste v praxi usnadnili čtení a opakované použití souborů projektu, budete chtít vytvořit vlastnosti pro ukládání různých parametrů příkazového řádku. To usnadňuje uživatelům zadání hodnot vlastností v souboru projektu specifickém pro prostředí nebo přepsání výchozích hodnot z příkazového řádku nástroje MSBuild. Pokud použijete metodu rozděleného souboru projektu popsanou v tématu Principy souboru projektu, měli byste mezi tyto dva soubory odpovídajícím způsobem rozdělit pokyny a vlastnosti sestavení:
- Nastavení specifická pro prostředí, jako je název souboru konfigurace nasazení, připojovací řetězec databáze a název cílové databáze, by měla být v souboru projektu specifickém pro dané prostředí.
- Cíl nástroje MSBuild, který spouští příkaz VSDBCMD, spolu s univerzálními vlastnostmi, jako je umístění spustitelného souboru VSDBCMD, by měl být v souboru univerzálního projektu.
Měli byste se také ujistit, že jste vytvořili databázový projekt před vyvolání VSDBCMD, aby byl soubor .deploymanifest vytvořen a připravený k použití. Úplný příklad tohoto přístupu najdete v tématu Principy procesu sestavení, které vás provede soubory projektu v ukázkovém řešení Contact Manageru.
Závěr
Toto téma popisuje, jak můžete přizpůsobit vlastnosti databáze různým cílovým prostředím při nasazování databázových projektů pomocí nástroje MSBuild a VSDBCMD. Tento přístup je užitečný, když potřebujete nasadit databázové projekty jako součást větších řešení na podnikové úrovni. Tato řešení se často nasazují do několika cílů, jako jsou vývojová nebo testovací prostředí v izolovaném prostoru (sandbox), přípravné nebo integrační platformy a produkční nebo živá prostředí. Každé z těchto cílových prostředí obvykle vyžaduje jedinečnou sadu vlastností nasazení databáze.
Další čtení
Další informace o nasazení databázových projektů pomocí VSDBCMD.exe najdete v tématu Nasazení databázových projektů. Další informace o řízení procesu nasazení pomocí vlastních souborů projektu MSBuild najdete v tématech Principy souboru projektu a Principy procesu sestavení.
Tyto články o MSDN poskytují obecnější pokyny k nasazení databáze: