説明/参照:
テストレット1
Litware、Inc
総括
総括
Litware、Inc.という名前の会社のデータベース開発者です。Litwareにはマイアミに本社があります。
Litwareには、WebApp1という名前のWebアプリケーションが転記されています。 WebApp1はDB1という名前のデータベースを使用します。 DB1はServer1という名前のサーバーでホストされています。 DB1のデータベース設計が展示されています。 (展示ボタンをクリックしてください)。

WebApp1を使用すると、ユーザーは求職者または求職者としてログオンできます。候補者は、キーワードに基づいて求人を検索し、オープニングに応募し、応募書類を閲覧し、履歴書をMicrosoft Word形式で読み込むことができます。企業は、求人を追加し、求人に応募した候補者のリストを表示し、申請を拒否とマークすることができます。
ユーザーとロール
DB1には、Company、CompanyWeb、Candidate、CandidateWeb、およびAdministratorという5つのデータベースユーザーがあります。
DB1には、3つのユーザー定義データベース・ロールがあります。役割は次の表のように構成されています。

キーワード検索
求人情報のキーワード検索は、usp_GetOpeningsという名前のストアドプロシージャを使用して実行されます。

オープニングアップデート
Openingsテーブルへの更新は、usp_UpdateOpeningという名前の次のストアドプロシージャを使用して実行されます。

問題と報告された問題
並行性の問題
デッドロックが頻繁に発生することがわかります。
usp_AcceptCandidateという名前のストアドプロシージャとusp_UpdateCandidateという名前のストアドプロシージャがデッドロックを生成することを識別します。 usp_AcceptCandidateのコードは次のとおりです。

給与クエリの問題
ユーザーは、最低給与を指定せずに求人情報を検索すると、最低給与を指定する求人情報のみが表示されます。
ログファイルの増加に関する問題
DB1の現在のログファイルは絶えず増加しています。毎日のSQL Serverエージェントのデータベースの縮小タスクが実行されても、ログファイルが縮小されません。
パフォーマンスの問題
usp_ExportOpeningsという名前のストアドプロシージャが実行に時間がかかり、実行時にテーブルスキャンを実行することがわかります。
また、usp_GetOpeningsストアドプロシージャの実行に時間がかかり、Description列の非クラスタ化インデックスが使用されていないことがわかります。
ページ分割の問題
DB1では、数分ごとに多くのページ分割が毎秒スパイクされます。
要件
セキュリティとアプリケーションの要件
Litwareは、次のセキュリティおよびアプリケーション要件を識別します。
Administrator、Company、およびCompanyWebのデータベースユーザーだけが

usp_Updateストアドプロシージャを開きます。
データベースに対する変更は、WebApp1に影響してはなりません。

ロック要件
Litwareは、次のロック要件を識別します。
usp_GetOpeningsストアドプロシージャを、usp_UpdateOpeningストアドプロシージャによってブロックしてはいけません

手順。
Openingsテーブルで行がロックされている場合、usp_GetOpeningsは最新バージョンの行を取得する必要があります。

行がまだコミットされていなくても。
統合要件
Litwareは、その求人情報を外部企業にXMLデータとしてエクスポートします。 XMLデータは次の形式を使用します。

usp_ExportOpeningsという名前のストアドプロシージャがXMLデータの生成に使用されます。 usp_ExportOpeningsのコードは次のとおりです。

ストアドプロシージャは、Package1という名前のSQL Server Integration Services(SSIS)パッケージによって実行されます。
XMLデータは、Folder1という名前の保護されたフォルダに書き込まれます。アカウント1という名前の専用Active Directoryアカウントには、Folder1の読み書き権限が割り当てられます。
リファクタリングの要件
Litwareは、次のリファクタリング要件を識別します。
新しいコードは、次のクエリを再利用して記述する必要があります。


照会の結果は、他の照会と結合できなければなりません。

アップロード要件
Litwareを使用するには、WebApp1を使用して、ユーザーがWordファイルにジョブの操作をアップロードする必要があります。 WebApp1はWordファイルをバイトストリームとしてDB1に送信します。 DB1は、Wordファイルの内容が候補テーブルに保存される前に、Wordファイルをテキストに変換します。
データベース開発者は、次を含むConversionsという名前のアセンブリを作成します。
SqlConversions名前空間のConvertという名前のクラス

Wordファイルをテキストに変換するConvertクラスのConvertToTextという名前のメソッド

ConvertToTextメソッドは、バイトストリームを受け取り、テキストを返します。このメソッドは、次のストアドプロシージャで使用されます。

ジョブのアプリケーション要件
候補者は、各求人に一度しか応募できません。
データ復旧要件
データベースに対するすべての変更は、ストアドプロシージャを使用して実行されます。 WebApp1は、アプリケーションがデータベースに対して行うストアド・プロシージャ・コールごとに固有のトランザクションIDを生成します。
サーバーに障害が発生した場合は、指定したトランザクションにデータをリストアできる必要があります。