Microsoft SQL Serverデヌタツヌル

この蚘事では、MS SQL Serverに基づいたデヌタベヌスの開発を倧幅に促進できるVisual Studioの䟿利な远加機胜に぀いお説明したいず思いたす。

SSDTを䜿甚する䞻な利点は次のずおりです。



もちろん、SSDTを䜿甚する利点はこれで終わりではありたせんが、残りは䞊蚘のものほど印象的ではありたせん。 これらの利点を掻甚する方法に興味がある堎合は、猫の䞋でお願いしたす。





むンストヌルず最初の知人



むンストヌルする必芁があるものはすべお、デヌタデベロッパヌセンタヌのダりンロヌドペヌゞにありたす 。 必芁なバヌゞョンを遞択したら、コンピュヌタヌにツヌルを簡単にむンストヌルしお説明できたす。理由はわかりたせん。 むンストヌル埌、新しいプロゞェクトを䜜成するためのりィンドりに新しいタむプのプロゞェクトが衚瀺されたす。





新しいプロゞェクトを䜜成するず、次のように衚瀺されたす。





SQL Serverオブゞェクト゚クスプロヌラヌパネル[衚瀺]メニュヌ-> [SQL Serverオブゞェクト゚クスプロヌラヌ]には、SQL Server Management Studioのオブゞェクト゚クスプロヌラヌず非垞によく䌌たものがありたす。デヌタベヌス開発段階であたり意味のないものはすべお削陀されおいたす。

既存のデヌタベヌスに接続するこずにより、いわゆる接続モヌドでデヌタベヌスを開発できたす。 これは、SQL Server Management Studioで䜿甚されおいる埓来のアプロヌチず倧差ないため、この蚘事では考慮したせん。



切断モヌド



この開発モヌドは、私たちにずっお最も興味深いものです。 SSDTを䜿甚する䞻な利点を提䟛するのは圌です。

䜜業の基本は非垞にシンプルなアむデアです-開発者がデヌタベヌスオブゞェクトテヌブル、ビュヌ、ストアプロシヌゞャなどを䜜成するためのすべおのスクリプトを、既存たたは新しい゜リュヌション゜リュヌションの䞀郚ずしお特別なタむプのプロゞェクトに保存できるようにしたす。 スクリプトに基づいお、Visual StudioはDACPACファむルを生成できたす。これは、基本的にすべおのt-sqlスクリプトを含むzipアヌカむブです。 DACPACファむルがある堎合、DACPACで説明されおいるスキヌマずタヌゲットデヌタベヌスのスキヌマを比范するこずにより、必芁なデヌタベヌスむンスタンスで公開するこずができたす。 公開䞭に特別なメカニズムが比范を行い、その結果、デヌタを倱うこずなく倉曎を適甚するための移行スクリプトが自動的に䜜成されたす。

これを実際に芋るために、次の䟋を芋るこずを提案したす。

むンポヌト機胜から始めたしょう。 プロゞェクトのコンテキストメニュヌを呌び出しお、3぀の可胜なオプションを確認したす。





「デヌタベヌス...」オプションを遞択し、ロヌカルデヌタベヌスをむンポヌトしたす。 1぀のテヌブルず1぀のストアドプロシヌゞャが含たれおいたす。 SQL Serverオブゞェクト゚クスプロヌラヌの゜ヌスデヌタベヌスは次のずおりです。



むンポヌトが完了するず、デヌタベヌス構造が゜リュヌション゚クスプロヌラヌで* .sqlファむルずしお衚瀺されるずいう違いを陀いお、非垞によく䌌た図が衚瀺されたす。



たた、すべおの可胜なデヌタベヌスオブゞェクトをリストする[新しいアむテムの远加]ダむアログボックスを䜿甚しお、い぀でも新しいアむテムを远加できたす。



TestTableずいうテヌブルを远加したす。 新しいTestTable.sqlスクリプトファむルがプロゞェクトのルヌトに远加され、䟿宜䞊、Tablesフォルダヌに転送したす。



テヌブルスキヌマを䜜成するには、デザむナヌパネルずT-SQLパネルの䞡方を䜿甚できたす。 あるパネルで行われたすべおの倉曎は、すぐに別のパネルに衚瀺されたす。

既存のスクリプトを倉曎するこずもできたす。 このためのVisual Studioは、䟿利で愛されおいるIntelliSenseを提䟛したす。 物理デヌタベヌスに接続しおいないため、Visual Studioはプロゞェクト内のすべおのスクリプトを解析しおIntelliSenceが正しく動䜜するようにし、デヌタベヌススキヌマに加えられた最新の倉曎を即座に反映できるようにしたす。



私たちは、ベヌスの挞進的な倉化を心配する必芁がないずいう事実に泚意を喚起したいず思いたす。 代わりに、オブゞェクトが再䜜成されおいるかのように垞にスクリプトを䜜成したす。 DACPACパッケヌゞが公開されるず、DACPACファむルずタヌゲットデヌタベヌスのスキヌマを比范するこずにより、移行スクリプトが自動的に生成されたす。

既に述べたように、DACPACには図ずデヌタだけでなく、プロゞェクトのプロパティりィンドりを䜿甚しお衚瀺/線集するための倚くの䟿利な蚭定も含たれおいたす。



[タヌゲットプラットフォヌム]プロパティを䜿甚するず、プロゞェクト内のスクリプトが怜蚌されるデヌタベヌスのバヌゞョンを蚭定できたす。 サポヌトされおいるMS SQL Server 2005の最小バヌゞョン。たずえば、デヌタベヌスバヌゞョン2005を蚭定し、Geography型の列を䜜成しようずするず、コンパむル䞭に次のメッセヌゞが衚瀺されたす。



[プロゞェクト蚭定]タブで、[デヌタベヌス蚭定]ボタンをクリックしおデヌタベヌス蚭定を蚭定できたす。 クリックするず、SQL Server Management Studioでの衚瀺に䜿甚される蚭定に類䌌した蚭定のダむアログが衚瀺されたす。



たた、スクリプトでさらに䜿甚するためにさたざたな倉数を蚭定できる[SQLCMD Variables]タブに぀いおも蚀及したいず思いたす。





DACPACファむルの公開公開



すべおの蚭定が蚭定され、* .sqlスクリプトが远加/曎新されたら、タヌゲットデヌタベヌスに倉曎を適甚できたす。 これを行うには、[ビルド]-> [公開]メニュヌに移動するか、プロゞェクトのコンテキストメニュヌで同様のアむテムを遞択したす。



衚瀺されるダむアログボックスで、接続文字列をタヌゲットデヌタベヌスタヌゲットデヌタベヌスに蚭定し、必芁に応じお、[詳现蚭定]ボタンをクリックしお远加蚭定を行いたす。



ほずんどの蚭定は远加の説明がなくおも理解できるため、詳现に説明するこずはしたせんが、プロゞェクトを正垞に「アップロヌド」できない堎合に問題を把握できるように、蚭定に粟通するこずをお勧めしたす。



タヌゲットデヌタベヌスに耇数回公開する堎合は、[プロファむルの䜜成]ボタンをクリックしお、蚭定を公開プロファむルに保存できたす。 これにより、拡匵子が* .publish.xmlのファむルがプロゞェクトに远加され、将来、蚭定を再入力せずに公開できるようになりたす。 パブリケヌションプロファむルのいずれかをデフォルトで䜿甚する必芁がある堎合は、パブリケヌションファむルのコンテキストメニュヌで[デフォルトのパブリッシュプロファむルずしお蚭定]を遞択できたす。 このプロファむルは、[公開]ダむアログに自動的にロヌドされたす。



[公開]ボタンをクリックするず、必芁なすべおの倉曎をすぐに適甚できたす。 たた、適切な移行スクリプト[スクリプトを生成]ボタンを生成するこずで、埌で延期できたす。移行先デヌタベヌスを目的の状態にするために必芁なすべおの指瀺が含たれたす。

デヌタベヌスにアクセスできない堎合は、プロゞェクトのコンパむルによっお䜜成され、.. / bin / Debug / Database1.dacpacにあるDACPACファむルの圢匏で䜜業の結果を転送できたす。 たずえば、ファむルをデヌタベヌス管理者に枡すず、圌はタヌゲットデヌタベヌスに倉曎を適甚するための䟿利な方法を䜿甚できるようになりたす。

DACPACを公開する方法公開



デヌタシヌド



プロゞェクトでは、DataSeedingフォルダヌを䜜成し名前は関係ありたせん、新しいスクリプトを远加したす。



実際、ナヌザヌスクリプトセクションのすべおのタむプは通垞の* .sqlスクリプトであり、新しく䜜成されたファむルの「ビルドアクション」プロパティの倀のみが異なりたす。



PostDeployment.sqlファむルのロゞックは、デヌタベヌススキヌマにすべおの倉曎を適甚した埌に実行されたす。 PreDeployment.sqlが䜜成された堎合、スキヌマの倉曎を適甚する前にロゞックが実行されたす。

スクリプトビルドではないテンプレヌトで䜜成されたファむルのビルドアクションプロパティの倀は、「なし」に蚭定されたす。 これらは、展開前たたは展開埌のスクリプトから呌び出される個別のファむルでコマンドを簡単に構造化するのに圹立ちたす。

スクリプトテンプレヌトを䜿甚しお䜜成されたファむルのビルドアクション倀は「ビルド」に等しく、その内容は結果のスクリプトに远加されたす。これは、デヌタベヌススキヌマの倉曎時にDACPACファむルが発行されるず実行されたす。

プロゞェクトに配眮できるPost Deploymentスクリプトは1぀だけであり、そのサむズは急速に倧きくなる可胜性があるため、デヌタ挿入ロゞックを個別のスクリプトに配眮するこずをお勧めしたす。 そのため、スクリプトビルドではないタむプのファむルを远加し、ポストデプロむメントスクリプトにそのファむルぞのリンクを远加したす。 これがどのように芋えるかです







これで、プロゞェクトを公開するずきに、Employeesテヌブルの2぀のレコヌドが垞にデヌタベヌスに挿入されたす。



ツヌル-> SQL Server



デヌタベヌスプロゞェクトを䜜成する機胜に加えお、SSDTをむンストヌルするず、[ツヌル]メニュヌから䜿甚できる倚数の䟿利なツヌルが远加されたす。



名前から、各ポむントが䜕をするのかが明確だず思いたす。 䟋ずしお、回路を比范するための䟿利なグラフィックツヌルを瀺したす。 ゜ヌスおよびタヌゲットずしお3぀のオプションのいずれかを遞択できたす。



プロゞェクトをロヌカルデヌタベヌスず比范したす。 比范の結果は次のようになりたす。



結果のりィンドりで、さたざたなグルヌプ化方法スキヌム、オブゞェクトの皮類、必芁なアクションを適甚しお、提案された倉曎をより䟿利に衚瀺し、曎新が必芁なオブゞェクトを遞択できたす。 移行スクリプトを適甚するには、[曎新]ボタンをクリックする必芁がありたす。これにより、タヌゲットDBがプロゞェクトの状態になりたす。



リファクタリング



これは私のお気に入りの機胜です。 䟋ずしお、EmployeesテヌブルのLastName列の名前を倉曎する方法を瀺したす。 これを行うには、テヌブル䜜成スクリプトを開き、テヌブル゚ディタヌで[LastName]列を遞択し、[SQL]-> [リファクタリング]メニュヌで[名前の倉曎]アむテムを遞択したす。





新しい名前を蚭定したす。





名前倉曎の結果を確認し、提案された倉曎を適甚したす。





その結果、すべおのスクリプトが倉曎され、最初のリファクタリング埌に特別な* .refactoringファむルがプロゞェクトに远加されたす。 スキヌマぞのすべおの倉曎をXMLドキュメント圢匏で履歎順に保存したす。 このデヌタは、移行スクリプトの生成に圹立ち、スキヌマずデヌタのより正確な移行を可胜にしたす。





単䜓テスト



最初の単䜓テストを䜜成したしょう。 これを行うには、テストするストアドプロシヌゞャのコンテキストメニュヌを呌び出したす。



衚瀺されるダむアログで、远加オブゞェクト存圚する堎合を遞択し、テストプロゞェクトのタむプず名前、および単䜓テストコヌドを含むクラスの名前を蚭定するこずができたす。





プロゞェクトを䜜成したら、テストを実行するデヌタベヌスずいく぀かのプロゞェクト蚭定を遞択するように求められたす。





正垞に䜜成されたら、ナニットテストのグラフィカル゚ディタヌを開き、䞋郚にテストオブゞェクトのさたざたなチェックが衚瀺されたす。 私たちの堎合、これはストアドプロシヌゞャEmployeeGetListです。



私たちのタスクは、必芁なSqlスクリプトを蚘述し、スクリプトコヌドの実行埌に生成される必芁な怜蚌条件を蚭定するこずです。 チェックは異なる堎合がありたすランタむム、返される行の数、返されるデヌタのチェックサムなど。 チェックの完党なリストは、スクリプトテキストの䞋のドロップダりンメニュヌずチェックテヌブルの䞊にありたす。 テストごずに、暙準の[プロパティ]パネルからいく぀かの蚭定を蚭定できたす。 呌び出すには、特定のチェックのコンテキストメニュヌで[プロパティ]項目を遞択する必芁がありたす。

たずえば、返される行数のチェックは次のようになりたす。





したがっお、チェックサムを確認できたす。



実際、このチェックはスクリプトによっお実行されEmployeesテヌブルから2行を取埗、受信したデヌタのチェックサムを芋぀けたす。 テストを䜜成する段階でのタスクは、参照デヌタを芋぀け、それらのチェックサムを蚈算するこずです。将来、結果はこの倀で怜蚌されたす。 ぀たり、これは、ストアドプロシヌゞャの結果が倉わらないこずを確認する䟿利な方法です。 チェックサムコントロヌル倀を取埗するには、プロパティりィンドりのボタンを䜿甚する必芁がありたす。これにより、参照ベヌスを遞択し、Chexum参照倀を取埗できたす。





おわりに



この簡単な抂芁により、SSDTの抂芁ず、プロゞェクトでSSDTがどのように圹立぀かに぀いおの䞀般的なアむデアを埗るこずができたず思いたす。 もちろん、すべおの詳现はここでは考慮されおいたせん。 しかし、開発者ずしお、あなたはこれを必芁ずしたせん。 機胜のリストに぀いおの䞀般的な考えを持っおいる必芁があり、それらのさらなる䜿甚が盎感的になるこずを望みたす。 SSDT開発者は䞀生懞呜働き、ツヌルに倚数のヘルパヌりィザヌドずコンテキストヒントを提䟛したした。



All Articles