7

データベースに SQL Server 2008 R2 Express を使用している Web サイトを開発しています。テストでは、このデータベースに大量のデータと画像が保存されています。

ウィキによると、SQL Server Express エディションには10 GBのサイズ制限があります。データを挿入して制限に達すると、どのような例外がスローされますか? または、限界に近づいている問題をコードで検出するにはどうすればよいですか?

コードファーストのアプローチでEF 5を使用して、大きなデータセットを挿入します。

4

5 に答える 5

15

テストでは、次のことがわかりました。

sp_spaceused

期待どおりに動作しません。多くのレコードを削除した後、12GB が表示されました。query sys.databases に関する他の回答は、私には十分に明確ではありませんでした。

周りを検索すると、 Ramons Weblogで SQL Server 2012 Express Edition 10GB Size Limit に関する非常に良い説明が見つかりました[EDIT2018 更新リンク]

SELECT
  [name] AS [Filename],
  [size]/128.0 AS [Filesize],
  CAST(FILEPROPERTY([name],'SpaceUsed') AS int)/128.0 AS [UsedSpaceInMB],
  [size]/128.0 - CAST(FILEPROPERTY([name],'SpaceUsed') AS int)/128.0 AS [AvailableSpaceInMB],
  [physical_name] AS [Path]
FROM sys.database_files

「...スペースにはトランザクションログが含まれ、これらのファイル内のすべての未使用スペースも含まれます.....データファイル用にこれ以上スペースを予約できない場合、SQL Server Expressは不平を言い始めます。」

だからチェック

CAST(FILEPROPERTY([name],'SpaceUsed') AS int)/128.0 AS [UsedSpaceInMB]

が最良の選択肢のようです。

で EF と組み合わせると、DB へのリクエストは次のようになります

string sqlSelect = "SELECT CAST(FILEPROPERTY([name],'SpaceUsed') AS int)/128.0 AS [UsedSpaceInMB] FROM sys.database_files";
var dbResult = dbInstance.Database.SqlQuery<Decimal>(sqlSelect).FirstOrDefault();
double spaceUsedInGb = Convert.ToDouble(dbResult)/1024;
于 2014-03-20T14:40:10.037 に答える
2

この SQL コマンドを実行すると、現在のデータベースのディスク容量の使用状況が明らかになります。

sp_spaceused

また、特定のテーブルのスペース使用量を照会するために使用することもできます。このリンクは、この問題に関する有用な情報を提供します。

于 2013-11-14T07:29:12.263 に答える
1

データベースのサイズを確認するには、次の 2 つの方法があります。

/* 新しい学校の方法 - ここで見たいローカル データベースでのデータとログと実行は、ログと mdf ファイルを見ることができます。*/ size*8.0/1024.0 を size_in_gb として選択 * sys.database_files から GO

/* 昔ながらの方法で、すべてのデータベース サイズに対して実行します*/ sp_helpdb

参考までに - MDF ファイルと NDF ファイルは、10GB を超えるファイル サイズに起因する唯一のものです。

于 2013-11-10T17:18:58.980 に答える
1

データベース サイズ クエリを確認するには:

sys.databases

これをクエリするだけで、おそらく C# を使用するか、SSMS (SQL Server Management Studio) シェルを使用している場合は、メールを送信するジョブまたは必要なものをスケジュールできます。

例: SQL Server 2008: すべてのデータベース サイズを照会する方法は?

編集:エラーがスローされたかどうかはわかりません。イベントログまたはSQLログに記録する必要があります...

補足: 開発者バージョンはわずか 50 ドルで、524 PB を保持する Datacenter と同じ値を保持します http://technet.microsoft.com/en-us/library/cc645993%28v=sql.105%29.aspx

于 2013-11-08T07:14:50.707 に答える