web-dev-qa-db-ja.com

SQL Server ExpressとMS Access

私が一緒に仕事をしている同僚から、SQL ExpressとMS Accessは本質的に同じものだと言われました。これは正確な説明ではないようです。 AccessをSQL DBに変換できることはわかっていますが、おそらくカバーは似ていますが、SQL DBエンジンとアクセスの実行に使用されるものは同じではないと思います。それだけでなく、SQLステートメントの構文なども同じではありません。

私は主にバージョンを理解できるように理解しようとしています。

21
scarpacci

ええと、違う、同じではない。

まず、いくつかの用語を整理する必要があります。 MS Accessは、リレーショナルデータにバインドされたフォームとレポートをすばやく作成できるRapid Application Development(RAD)ツールです。ファイルベースのデータベースエンジン(Jet/ACE)が付属しています。

アクセスRADツールは、多くの異なるバックエンドデータベース(Jet、SQL Server、ODBCをサポートする任意のdbなど)で使用できます。同僚がJet/ACEについてコメントしていると仮定します。つまり、MS Accessが使用するデータベースエンジンです。

Jet/ACEデータベースエンジンMS SQL Server Express の最大の違いは、Jet/ACEがファイルベースであることだと思いますおよびSQL Server Expressは、クライアント/サーバーモデルを使用します。つまり、SQL Server Expressでは、データストアへのアクセスを提供するために実行中のサービスが必要です。これにより、一部のシナリオで展開が複雑になる可能性があります。

SQL Server Expressは、実際にはSQL Serverのスロットルバックバージョンにすぎません。最大データベースサイズは4GB(2008R2では10GB)で、単一の物理CPUのみを使用します。これらの制限は、大規模な組織が自由に利用できるExpressエディションを使用できないようにするために課されています。本格的なSQL Serverインストールの代わり。これの要点は、SQL Server ExpressがSQL Serverへの本当にシームレスなアップグレードパスを提供することです。また、(一般的に言えば)Jet/ACEよりも堅牢でフル機能のデータベース管理システムです。

類似性

  • リレーショナルデータベース管理システム
  • マイクロソフトが作成

違い

  • MS Access
    • ファイルベース
    • 無料の配布可能なランタイム(2007以降)
    • RADツール(フォーム/レポートデザイナー)
    • jet SQLを使用
    • 最大ファイルサイズ2GB
  • SQL Server Express
    • クライアント/サーバーモデル
    • 自由
    • いいえRADツール
    • transact-SQLを使用
    • 最大データベースサイズ4 GB(SSE R2)の場合10 GB)、最大1つの物理CPU
47
mwolfe02

あなたの同僚が念頭に置いていたのは SQL Server CE だと思います。これは、非常に軽量な埋め込みデータベースであり、データベース管理の面でAccessよりもはるかに優れています(IMO)。 SQL Expressは、前者を害することなくAccessと比較することさえできません。

2
Anton Gogolev

ここに両方の​​製品のデータシートがありますので、2つのデータベースの違いについての確かな事実を確認できます。

アクセス: http://office.Microsoft.com/en-us/access-help/access-specifications-HP005186808.aspx

SQL(Expressは右端の列にリストされています): http://www.Microsoft.com/sqlserver/2008/en/us/editions-compare.aspx

私がいつも読んだコメントは、Accessはシングルユーザーのシングルアクセスデータベースの使用に最適であることです。それは一続きの「ビット」かもしれませんが、Accessは実際にはマルチユーザー環境ではうまく機能しません。経験から、バックエンドデータベースをAccessからSQLに移行するという私たちのリクエストを無視して無視してきたクライアントがいて、バックアップから復元したり、破損のためにAccessデータベースをオフラインにしたりしなければならないことが何度もありました。

それらは、2つの異なるターゲット市場を持つ2つの完全に異なるテクノロジーです。 T-SQLはAccess SQLとは異なりますが、データベースエンジンは実際には異なります。

SSISパッケージまたはその他のツールを作成してインポートを行うことにより、AccessデータベースをSQLに「スケールアップ」できますが、これによりAccessスキーマとデータが取得され、真のSQLデータベースに移行されます。 Accessデータベースなどをアタッチするだけではありません。

「実際の」データベースが必要なときはいつでも、Accessで利用可能なSQLバージョンを確認することを強くお勧めします。

0
Ryan

MS-Accessでは、カードを正しくプレイできればサイズの制限がないことに注意してください。たとえば、それぞれが独自のデータベースに単独で含まれる2〜4つのGigテーブルを多数持たない理由はありません。あなたのODBCアプリケーションは、複数のMS-Accessデータベースへの接続を開いて、それぞれの単一のテーブルにクエリを実行できます。そのため、複数のMDBファイルに格納された何兆ものレコードを含むデータベースを作成できます。1つの会社I MS-Accessフォームで行われる問題追跡システムを実行するために単一のMS-Accessデータベースを使用するために働きました。MS-Accessをロックする問題を共有するため、彼らは一度に1人しか使用できませんでした。私はWin32 PerlネイティブのWindows GUIデータベースへのユーザーインターフェイスは、フィールド/レコードの検証に優れていて、my ODBCコードは同時ユーザーアクセスの接続を管理できました。開始と読み取りを管理しましたPerlプログラムを使用して、ユーザーごとにデータベースの書き込みと終了を行いました。データベースは開いたままにしませんでした。各ユーザーの永続的な接続は維持せず、編集用のレコードを取得するのに十分な時間だけ接続を維持しました。次に、レコードを書き込む時間になるまで接続を閉じましたbデータベースへのack。また、ユーザーが現在編集しているレコードのレコードIDを含むユーザーログインテーブルを維持することにより、独自のレコードロックプログラムロジックを作成し、そのレコードを編集しなくなったときにそのエントリを消去しました。別のユーザーが同じレコードを編集しようとすると、プログラムはそのレコードが現在別のユーザーによって編集用に開かれているかどうかをチェックしました。システムは問題なく動作しました。 MS-AccessはODBCおよびマルチユーザーアクセスを介してロックアップされませんでした。他のAccessデータベースのデータにアクセスできないように、コンパイルされたPerlプログラムにデータベースへのパスワードを埋め込みました私のPerlプログラムよりも。

0
Eric