概要
アプリケーション概要
Contoso、Ltd.は、エンタープライズリソースプランニング(ERP)アプリケーションの開発者です。
ContosoはERPアプリケーションの新しいバージョンを設計しています。以前のバージョンのERPアプリケーションはSQL Server 2008 R2を使用していました。
新しいバージョンはSQL Server 2014を使用します。
ERPアプリケーションは、サプライヤデータをロードするためのインポートプロセスに依存しています。インポートプロセスは、何千もの行を同時に更新し、データベースへの排他的アクセスを必要とし、毎日実行されます。
ERPアプリケーションの予期しない動作を報告するサポートコールがいくつかあります。呼び出しを分析した後、ユーザーはデータベース内のテーブルに直接変更を加えたと結論付けました。
テーブル
現在のデータベーススキーマには、OrderDetailsという名前のテーブルが含まれています。
OrderDetailsテーブルには、各注文書に対して販売された商品に関する情報が含まれています。 OrderDetailsは、購買発注の各製品に適用される製品ID、数量、および割引を格納します。
製品の価格はProductsという名前のテーブルに格納されています。 Productsテーブルは、SQL_Latin1_General_CP1_CI_AS照合順序を使用して定義されました。
ProductNameという列が、varcharデータ型を使用して作成されました。データベースにはOrdersという名前のテーブルが含まれています。
注文には、過去12か月間のすべての注文書が含まれています。より古い注文書
12か月はOrdersOldという名前のテーブルに格納されます。
以前のバージョンのERPアプリケーションは、テーブルレベルのセキュリティに依存していました。
ストアドプロシージャ
データベースの現在のバージョンには、2つのテーブルを変更するストアドプロシージャが含まれています。以下に、2つのストアドプロシージャの関連部分を示します。

顧客の問題
インストールの問題
現在のバージョンのERPアプリケーションでは、いくつかのSQL Serverログインが正しく機能するように設定されている必要があります。ほとんどの顧客はERPアプリケーションを複数の場所に設定しており、ログインを複数回作成する必要があります。
インデックスの断片化の問題
顧客は、クラスタ化インデックスが断片化されていることが多いことを発見しました。この問題を解決するために、顧客はより頻繁にインデックスを最適化します。断片化の影響を受けるすべてのテーブルには、クラスタ化インデックスキーとして使用される次の列があります。

バックアップの問題
大量の購入注文履歴データを持っている顧客は、バックアップ時間が許容できないと報告しています。
検索の問題
ユーザーは、製品名を検索すると、検索文字列にアクセント記号が含まれていない限り、検索結果にアクセントを含む製品名が除外されると報告しています。
欠落データの問題
顧客は、商品テーブルで価格を変更すると、以前の注文で商品が販売された価格を取得できないと報告しています。
クエリパフォーマンスの問題
顧客は、クエリのパフォーマンスが急速に低下すると報告しています。さらに、顧客は、SQL Serverがメンテナンスタスクを実行するときにユーザーがクエリを実行できないと報告しています。インポートの問題データベース管理者は、毎月のインポート処理中に、サプライヤデータにアクセスできないと報告したユーザーから多くのサポート要請を受けます。データベース管理者は、データのインポートに必要な時間を短縮したいと考えています。
設計要件
ファイルストレージ要件
ERPデータベースには、2 MBを超えるスキャン文書が保存されています。これらのファイルはERPアプリケーションを介してのみアクセスする必要があります。ファイルアクセスは、可能な限り最高の読み書きパフォーマンスを持つ必要があります。
データ復旧の要件
インポートプロセスが失敗した場合は、データベースをすぐに以前の状態に戻す必要があります。
セキュリティ要件
基礎となるテーブルに直接アクセスすることなく、ERPアプリケーション内で機能を実行する機能をユーザに提供する必要があります。
同時実行要件
Sales.ProdとSales.Proc2の実行時にデッドロックが発生する可能性を減らす必要があります。
不足データの問題を解決するソリューションを推奨する必要があります。
解決策は開発努力の量を最小にしなければなりません。何をお勧めですか?