RE: Potíže s MS SQL Server Management Studiem?

Ráno jsem si přečetl příspěvek Tomáše o jeho problémech s MS SQL Server Management Studiem pro SQL Server 2008.

Ač jsem reagoval již v komentáři, neodpustím si ještě několik poznámek, které si zaslouží maličko více rozvést a najít řešení, které z Management Studia vytvoří plnohodnotný nástroj pro databázového administrátora.

Výroky a postesky nad tímto problémem:

Nepodařilo se mi ho přesvědčit, aby přesunulo sloupce v tabulce tak jak potřebuji. Po této operaci, kterou Designer tabulky viditelně umí, dojde při uložení změn v tabulce k chybě, která se hlásí jako "Název změněné tabulky".

obdobně jako tímto:

Velmi často při uložení změn v tabulce dojde k chybě ukládání. Netuším o jakou chybu jde, protože se hlásí stejně jako chyba předchozí.

jsou způsobeny pouze tím, jak se Management studio chová k ukládání databázových objektů. Tyto "problémy" jsou způsobeny tím, že se Management studio snaží při takovýchto změnách provést drop objektu a jeho znovuvytvoření, tak jak je popsáno na tomto místě. Je zde i návod, jak docílit změny a být, takříkajíc, spokojený, postačující je odškrnout volbu v menu Tools->Options->Designers->Table and Database designers->Prevent saving changes that require table re-creation.

Na Subversion je ovšem lepší ukládat textové soubory a to rozhodně záloha MS SQL serverů není. Textový soubor si tedy vyrábím v Management Studiu pomocí Generate Scripts. Jsem rád, že to Microsoft umí. Bohužel průvodce neumím zkrátit a nastavené volby si nepamatuje. Je to velmi zdlouhavé, zdržující a protivé.

Jak jsem se již zmínil v komentáři pod článkem, toto je asi lepší vyřešit pomocí Powershell scriptu. Samozřejmě, nesmí se zapomenout doinstalovat SQL Server PowerShell snapin pomocí příkazu sqlps. Poté je již možné vyscriptovat jakýkoli databázový objekt. Pro tabulky je to například příkazem:

PS SQLSERVER:\> sl SQLSERVER:\SQL\[server]\[instance]\Databases\[catalog]\Tables; gci| %{$_.Script()} > c:\tables.txt

Kde je potřeba zaměnit správné hodnoty za placeholdry [server], [instance] - zadat název default v případě, že se jedná o default instanci a samozřejmě [catalog] je název samotné databáze.

Myslím, že jednodušeji to snad jít ani nemůže. ;-)

3 Comments

  • CW said

    >Myslím, že jednodušeji to snad jít ani nemůže. ;-)

    Viz SQL Database Publishing Wizard...

  • Jarda Jirava said

    Ahoj, ale SQL Database publishing wizard je, pokud se nemýlím, opět o klikání. A to, jak jsem pochopil z uvedeného článku, není žádoucí. Myslím, že výhod PowerShellu by ještě dosahoval DTS resp. SSIS balíček.

Add a Comment