最新情報
この
Web
サイトとは別に、Microsoft Jet Database Engine
の西暦
2000
年問題対応についての情報が入手できます。
Microsoft Jet Database Engine
の説明文には、Microsoft Jet
の対応についての情報が記載されています。対応についての最新情報を参照してください。
MDAC
の最新版は
2.1 Service Pack 2 (2.1.2.4202.3)
です。日本語版を含む各国語バージョンは、
http://www.microsoft.com/data/
からダウンロードできます。
全般的な情報
MS Data Access
Components
(MDAC)
は、データ接続コンポーネントの集合です。これには、MDAC
コア コンポーネント
(ADO、RDS、OLE DB、ODBC)、および
OLE DB
プロバイダと
ODBC
ドライバが含まれます。
ユーザーの皆様が使いやすいように、コンポーネントは
mdac_typ.exe
という再配布可能なセットアップ ファイルとしてまとめられています。このファイルは
Web
ページhttp://www.microsoft.com/data
と、各種アプリケーションおよび製品で提供されています。
MDAC
コア コンポーネント
(ADO、RDS、OLE DB、および
ODBC)
の西暦
2000
年問題対応についての個別の情報を入手できます。これらの情報に記載されている問題は、この
Web
ページに記載してあります。また、Microsoft Jet Database Engine
の西暦
2000
年問題対応についての情報も入手できます。
MDAC
に関するこの
Web
ページには、MDAC Version 1.5
〜
2.1 Service Pack 2
についての対応情報を記載してあります。
各国語のバージョン
Version 1.5: ブラジル語、簡易字中国語、繁体字中国語、チェコ語、デンマーク語、オランダ語、米英語、フィンランド語、ドイツ語、ギリシャ語、ハンガリー語、イタリア語、日本語、韓国語、ノルウェー語、ポルトガル語、ポーランド語、ロシア語、スロヴァキア語、スロヴェニア語、スペイン語、スウェーデン語、トルコ語
Version 2.0 (Visual Studio 6.0
と使用):簡易字中国語、繁体字中国語、米英語、フランス語、ドイツ語、イタリア語、日本語、韓国語、スペイン語
Version 2.0 Service Pack 1 (Windows NT 4 Service Pack 4
と使用):
ブラジル語、簡易字中国語、繁体字中国語、チェコ語、デンマーク語、オランダ語、米英語、フィンランド語、フランス語、ドイツ語、ハンガリー語、イタリア語、日本語、韓国語、ノルウェー語、ポーランド語、ロシア語、スペイン語、スウェーデン語
Version 2.1 (SQL Server 7.0
および
6.5 Service Pack 5
と使用):米英語、フランス語、ドイツ語、日本語、スペイン語
Version 2.1 Service Pack 1 (2.1.1.3711.6 、Internet Explorer 5
のみで提供):バスク語、簡易字中国語、繁体字中国語、チェコ語、デンマーク語、オランダ語、米英語、フランス語、フィンランド語、ドイツ語、ギリシャ語、ハンガリー語、アイスランド語、イタリア語、日本語、韓国語、ノルウェー語、ポーランド語、ポルトガル語、ポルトガル語
(ブラジル語)、ロシア語、スペイン語、スウェーデン語、トルコ語
Version 2.1 Service Pack 1 (2.1.1.3711.11 、通常のリリース):
バスク語、簡易字中国語、繁体字中国語、チェコ語、デンマーク語、オランダ語、米英語、フィンランド語、フランス語、ドイツ語、ギリシャ語、ハンガリー語、アイスランド語、イタリア語、日本語、韓国語、ノルウェー語、ポーランド語、ポルトガル語、ポルトガル語
(ブラジル語
)、ロシア語、
スペイン語、スウェーデン語、トルコ語
バージョン
2.1
Service Pack 2 (2.1.2.4202.3、通常のリリース
):
チェコ語、オランダ語、英語、フランス語、ドイツ語、ギリシャ語、ハンガリー語、
ポーランド語、ロシア語、スロバキア語、スロベニア語、トルコ語 、スペイン語、イタリア語、日本語、韓国語、簡易字中国語、
繁体字中国語、スウェーデン語、ノルウェー語、フィンランド語、デンマーク語、ポルトガル語、ポルトガル語 (ブラジル語)
次の表には、MDAC
のバージョン、修正前の対応状況、および修正の入手先についてまとめてあります。
MDAC
のバージョン |
年 |
対応状況 |
西暦
2000
年問題のあるコンポーネント
(詳細は下記を参照) |
修正方法 |
1.5 |
1997 |
対応 # |
補足
A
・OLE DB Data Coercion
補足
C
・Microsoft Jet Database Engine |
1.5 dll
のアップデート版
(msdadc.dll、msadce.dll)、Internet Explorer 4.01 Service Pack 2
または
Windows 98
西暦
2000
年問題パッケージから入手
Microsoft Jet 3.5x
の最新バージョン
修正プログラムのダウンロードについては、Microsoft Jet Database Engine
の西暦
2000
年問題の
Web
ページを参照してください。
または
MDAC 2.0 Service Pack
1:
Windows NT 4.0 Service Pack 4 に含まれている Y2KSetup からインストールできます。
Microsoft Jet 3.5x
の最新バージョン
修正プログラムのダウンロードについては、Microsoft Jet Database Engine
の西暦
2000
年問題の
Web
ページを参照してください。
または
MDAC 2.1 Service Pack 1 (2.1.1.3711.11)
:
補足
:
このバージョンの
MDAC
には、Microsoft Jet 3.51
ではなく
Jet4
が含まれています。このバージョンの
MDAC
は、既存バージョンの
Microsoft Jet 3.51
を上書きせずに、Microsoft Jet 4
をインストールします。
または
MDAC 2.1 Service Pack 2 (2.10.20.42020.3) :
http://www.microsoft.com/data/ からダウンロードできます。
補足
:
このバージョンの
MDAC
には、Microsoft Jet 3.51
ではなく
Jet4
が含まれています。このバージョンの
MDAC
は、既存バージョンの
Microsoft Jet 3.51
を上書きせずに、Microsoft Jet 4
をインストールします。
|
2.0 |
1998 |
対応 # |
補足 A
・OLE DB Data Coercion
補足 B
・SQL Server OLE DB
プロバイダ
補足 C - Jet |
MDAC 2.0 Service Pack
1 :
Windows NT 4.0 Service Pack 4 に含まれている Y2KSetup からインストールできます。
Microsoft Jet 3.5x
の最新バージョン
修正プログラムのダウンロードについては、Microsoft Jet Database Engine
の西暦
2000
年問題の
Web
ページを参照してください。
または
MDAC 2.1 Service Pack 1 (2.1.1.3711.11)
補足
:
このバージョンの
MDAC
には、Microsoft Jet 3.51
ではなく
Jet4
が含まれています。このバージョンの
MDAC
は、既存バージョンの
Microsoft Jet 3.51
を上書きせずに、Microsoft Jet 4
をインストールします。
または
MDAC 2.1 Service Pack 2 (2.1.2.4202.3) :
http://www.microsoft.com/data/ からダウンロードできます。
補足
:
このバージョンの
MDAC
には、Microsoft Jet 3.51
ではなく
Jet4
が含まれています。このバージョンの
MDAC
は、既存バージョンの
Microsoft Jet 3.51
を上書きせずに、Microsoft Jet 4
をインストールします。
|
2.0 SP1 |
1998 |
対応 # |
補足
C - Jet |
Microsoft Jet 3.5x
の最新バージョン
修正プログラムのダウンロードについては、Microsoft Jet Database Engine
の西暦
2000
年問題の
Web
ページを参照してください。
|
2.1 |
1998 |
対応 # |
補足
C - Jet |
Microsoft Jet 4.0
の最新バージョン。これは、MDAC 2.1 SP1 (2.1.1.3711.11)
および MDAC 2.1 SP2 (2.1.2.4202.3)
の一部として提供されます。
http://www.microsoft.com/data
|
2.0
SP2
(現在このリリースの日本語版は提供しておりません) |
1999 |
対応 # |
補足
C - Jet |
Jet 3.5x
の最新バージョン
修正プログラムのダウンロードについては、Microsoft Jet Database Engine
の西暦
2000
年問題の
Web
ページを参照してください。
|
2.1 SP1 、3711.6 |
1999 |
対応 |
|
修正プログラムは必要ありません。
2.1 Service Pack 1
のサブセットは、Internet Explorer 5
のみで提供されます。
|
2.1 SP1 、2.1.1.3711.11 |
1999 |
対応 |
|
修正プログラムは必要ありません。
( このバージョンは、MDAC 2.1 Service Pack 1a
と呼ばれることもあります。)
|
2.1 SP2 、2.1.2.4202.3
|
1999 |
対応 |
|
修正プログラムは必要ありません。
このバージョンは、http://www.microsoft.com/data
から入手できます。
( このバージョンは、MDAC 2.1 Service Pack 2
と呼ばれることもあります。)
|
補足
A (OLE DB
の対応):
OLE DB Data Coercion
ライブラリの西暦
2000
年問題
ADO
にコーディングされている場合、
ADO Recordset
に
adDate、adDBDate、adFileTime、または
adDBTimeStamp
などの日付データ型が含まれており、
かつ、日付の区切り記号としてスラッシュではなく、ピリオドを使った日付形式
(たとえば、01/01/98
ではなく
01.01.98)
を使用し、
下
2
桁の西暦が
60
未満に指定され、
日付と時刻情報の一部として時刻が指定されていないときには、
データ変換
msdadc.dll
によって日付が時刻に変換されます。たとえば、01.01.01 (2001
年
1
月
1
日)
は、01:01:01 (1899
年
12
月
30
日、午前
1
時
1
分
1
秒)
に変換されます。
OLE DB
に直接コーディングされている場合も、同じ結果になります。
変数
BSTR、VARIANT、または
PROPVARIANT
を次のような日付データ型に変換している場合、
DBTYPE_DATE
DBTYPE_DBDATE
DBTYPE_DBTIME
DBTYPE_FILETIME
DBTYPE_DBTIMESTAMP
かつ、日付の区切り記号としてスラッシュではなく、ピリオドを使った日付形式
(たとえば、01/01/98
ではなく
01.01.98)
を使用し、
下
2
桁の西暦が
60
未満に指定され、
日付と時刻情報の一部として時刻が指定されていないときには、
データ変換
msdadc.dll
によって日付が時刻に変換されます。たとえば、01.01.01 (2001
年
1
月
1
日)
は、01:01:01 (1899
年
12
月
30
日、午前
1
時
1
分
1
秒)
に変換されます。
補足
B:SQL Server OLE DB
プロバイダの対応
SQL Server OLE DB
プロバイダ
(sqloledb.dll)
では、コア コンポーネントの
OLE DB Data Coercion
ライブラリが使用されません。代わりに、独自の
Data Coercion
モジュールがインプリメントされます。このモジュールでも、補足
A
にある西暦
2000
年問題が発生します。これを次に示します。
ADO
にコーディングされている場合、
ADO Recordset
に
adDate、adDBDate、adFileTime、または
adDBTimeStamp
などの日付データ型が含まれており、
かつ、日付の区切り記号としてスラッシュではなく、ピリオドを使った日付形式
(たとえば、01/01/98
ではなく
01.01.98)
を使用し、
下
2
桁の西暦が
60
未満に指定され、
日付と時刻情報の一部として時刻が指定されていないときには、
SQL Server
プロバイダ
sqloledb.dll
によって日付が時刻に変換されます。たとえば、01.01.01 (2001
年
1
月
1
日)
は、01:01:01 (1899
年
12
月
30
日、午前
1
時
1
分
1
秒)
に変換されます。
OLE DB
に直接コーディングされている場合も、同じ結果になります。
変数
BSTR、VARIANT、または
PROPVARIANT
を次のような日付データ型に変換している場合、
DBTYPE_DATE
DBTYPE_DBDATE
DBTYPE_DBTIME
DBTYPE_FILETIME
DBTYPE_DBTIMESTAMP
かつ、日付の区切り記号としてスラッシュではなく、ピリオドを使った日付形式
(たとえば、01/01/98
ではなく
01.01.98)
を使用し、
下
2
桁の西暦が
60
未満に指定され、
日付と時刻情報の一部として時刻が指定されていないときには、
SQL Server
プロバイダ
sqloledb.dll
によって日付が時刻に変換されます。たとえば、01.01.01 (2001
年
1
月
1
日)
は、01:01:01 (1899
年
12
月
30
日、午前
1
時
1
分
1
秒)
に変換されます。
補足
C :Microsoft Jet Database Engine
の対応
修正プログラムのダウンロードを含む最新情報については、Microsoft Jet Database Engine
の西暦
2000
年問題に関するドキュメントを参照してください。
補足
D:Oracle ODBC
ドライバおよび
OLE DB
プロバイダの対応
Oracle ODBC
ドライバには既知の問題はありません。ただし、すでに
Oracle
の西暦
2000
年問題対応に関するホワイト ペーパーに記されていますが、ドライバがサーバーの変換動作の影響を受ける可能性があるという問題があります。
次のシナリオでは、特定の状況下で
DATE
データからの「世紀」の情報が正しくない結果になります。たとえば、タイムスタンプ列
(C1)
のデータベース
(テーブル名
'testdate')
に次の値を含むデータがあるとします。
C1
---------------------
2/21/1904
2/21/2004
2/21/2104
Oracle
サーバーとクライアントは「デフォルト」設定でインストールされているとします。同様に、タイムスタンプを含むデフォルトの日付形式が、DD-MON-YYであり、
この例だけのために
WinNT
クライアント マシンの地域の短い日付形式を
4
桁の西暦に設定します。
Oracle
サーバーの現在の日付と時刻を
1/1/2000
に設定します。
データベースに対して次の任意のクエリーを実行します。
- SELECT {fn convert(c1, SQL_DATE)} FROM testdate
[ これはタイムスタンプから日付への変換です。]
(2) SELECT TO_DATE(C1) FROM testdate
[ デフォルトの書式]
(3) SELECT TO_DATE(TO_CHAR(C1,'YY-MM-DD'),'YY-MM-DD') FROM testdate
[ 上記の形式より複雑な書式で、ユーザー定義の日付形式マスクを使用します]
結果は次のように表示されます。
C1
---------------------
2/21/2004
2/21/2004
2/21/2004
補足:
シナリオ
1
は、Microsoft
の
ODBC
ドライブ経由で実行する必要があります。シナリオ
2
と
3
は、Oracle
のツールから直接実行することができます。
西暦
2000
年問題に関するホワイト ペーパーには、Oracle
サーバーでは特定の暗黙の変換を可能な限り回避する必要があり、暗黙の変換が起こった場合には、さまざまな状況に適用できる「形式マスク」によって既定される特定の規則に従うと記されています。上記のそれぞれの場合、適用されたデフォルトの形式マスクは上記の
"DD-MON-YY"
です。Oracle
のドキュメントには、この変換によって一部のデータが失われる可能性があることが明記されています。特に、日付の正確な世紀が、Oracle
サーバー マシンの日付と時刻で指定された「現在の」世紀に置き換えられる可能性があります。
Microsoft
の
ODBC
ドライバは、シナリオ
1
の
"fn convert()"
を有効にする機能を実装します。そのために、ODBC
ドライバは、組み込みの
Oracle
サーバーの機能と必要となる暗黙的な変換に依存します。これによって、Oracle
サーバーから直接実行する場合と一貫性を保ちながら、同じように柔軟な操作を実行できます。デフォルトの日付形式を使用して、上記で示したように日付を変換すると、上記のような結果になります。
補足
E:ADO 1.5
の日付に関する問題
MDAC
でサポートされている対応期間は
0100
年以降です。補足
D
の場合の他にも、ADO
で
0100
年以前の年数を含むデータが意図したとおりに変換されない可能性があります。
ADO 1.5
には、日付に関する問題があります。この問題は、ADO 2.0
以降のすべてのバージョンで修正されました。ADO 1.5
は、Windows 98、IE4.x
および
NT Option Pack
に付属しています。
次の状況下では、基礎となるデータ ストアに保存された実際の年数が
100
より小さい場合に、ADO
はデータを正しく表示しません。
基礎となるデータ ストアに保存された年数が
100
より小さい場合
(たとえば
98)、
かつ、OLE DB
プロバイダ によって、DBDATE
および
DBTIMESTAMP
のデータ型からオートメーション形式への変換機能が提供されない場合。この場合、ADO 1.5
は日付値自体を変換し、1998
として
98
を、1901
として
01
を表示します。DBDATE
および
DBTIMESTAMP
は、プロバイダがデータをそのままの形式で保存する方法と、データが
OLE DB
に渡される方法をマッピングできる
OLE DB
データ型です。
DBDATE
の構造体は次のとおりです。
typedef struct tagDBDATE {
SHORT year;
USHORT month;
USHORT day;
} DBDATE;
DBTIMESTAMP
の構造体は次のとおりです。
typedef struct tagDBTIMESTAMP {
SHORT year;
USHORT month;
USHORT day;
USHORT hour;
USHORT minute;
USHORT second;
ULONG fraction;
} DBTIMESTAMP;
ADO
はオートメーション オブジェクトなので、すべてのデータはバリアントによってクライアントに公開されます。DBDATE と
DBTIMESTAMP からバリアントへの変換が存在し、プロバイダがこの変換を提供できない場合は、プロバイダが使用できるデータ変換ライブラリを
OLE DB が提供します。この動作を確認するには、年フィールドが
100 未満の
DBDATE または
DBTIMESTAMP があること、および
ADO の要求に応じて、そのままの形式かデータ変換ライブラリを使用してデータをバリアントに変換する方法がプロバイダにないことが条件となります。この説明に該当する出荷済みプロバイダがあるという報告はベンダから届いておりません。ADO 1.5 では、西暦
50 年のつもりで年数を
0050 と指定した場合でも
1950 年に変更されます。
データ ストアで
50 または
0050 のような年数を使用して作業する必要がある場合は、クライアントを
ADO 2.x. にアップグレードしてください。
補足
F:全般的な情報
1)
日付に関する注意事項
データを保存する場合や
MDAC データ アクセス
API のメソッドとプロパティを呼び出す場合には、4 桁の西暦を使用します。下
2 桁の西暦を使用すると、バックエンドまたはプロバイダで既定されている下
2 桁の西暦の変換ロジックが使われる可能性があります。バックエンドのデータ ストアが明確でない場合に、境界条件で予想しないことが発生する可能性があります。
2)
テスト時のガイドラインと推奨事項
ほとんどのバックエンドのデータ ストアには、下
2 桁の西暦のウィンドウ処理が埋め込まれているので、西暦が
4 桁の日付を使用してください。データをデータ ストアに登録して問い合わせる場合は、特に注意が必要です。
3)
対応期間と世紀の開始日
OLE DB
に直接コードを追加し、バリアント
BSTR を
DBDATE に変換する場合は、"0001-01-01" (1 年
1 月
1 日) が
"2001-01-01" (2001 年
1 月
1 日) と解釈される可能性があります。この問題は、0001 〜
0099 年に影響します。そのため、対応期間は
0100 年以降とするのが安全です。
インストールされている
MDAC バージョンを調べ、OLE DB Data Coercion、Microsoft Jet Database Engine、および
SQL Server OLE DB プロバイダのバージョンが対応しているかどうかを調べる方法
ファイルのバージョンは、まずエクスプローラの
[ツール] メニューの
[検索] で目的のファイルを検索すると最も簡単に調べることができます。ファイルが見つかったら、ファイルを右クリックし、[プロパティ] をクリックして、[バージョン情報] タブをクリックします。
- MDAC
全体では、ファイルは
msdadc.dll と
oledb32.dll を調べる必要があります。これらは
OLE DB Data Coercion ライブラリに使用されています。
MDAC
のバージョン |
Msdadc.dll
のバージョン
(x86 の場合)
|
Oledb32.dll
のバージョン
(x86 の場合) |
修正前の
DataCoercion の対応状況 |
1.5 |
1.50.3506 |
なし
|
対応 #
|
修正版
1.5 |
1.50.9801 |
なし
|
対応
|
2.0 |
2.00.3002.4 |
2.00.1706
|
対応 #
|
2.0 SP1 |
2.00.3002.23 |
2.00.1706
|
対応
|
2.0 SP2 (現在このリリースの日本語版は提供しておりません) |
2.00.3002.23 |
2.00.1706
|
対応
|
2.1 |
2.10.3513.0 |
2.10.3513.0
|
対応
|
2.1 SP1 、3711.6 (Internet Explorer 5 のみで提供) |
2.10.3711.2 |
2.10.3711.2
|
対応
|
2.1 SP1 、3711.11 |
2.10.3711.2 |
2.10.3711.9
|
対応
|
2.1 SP2 、2.1.2.4202.3 |
2.10.4202.0 |
2.10.4202.0
|
対応
|
***MDAC 2.0 SP2
は
MDAC 2.0 SP1
のスーパーセットであることに注意してください。つまり、MDAC 2.0 SP2 には、2.0 SP1 からの
MDAC コンポーネントが含まれているのに加えて、SQL Server と
Oracle の
OLE DB プロバイダ、および
oleaut32.dll のアップデート版が含まれています。
- Microsoft Jet Database Engine
Microsoft Jet は
MDAC に同梱されていないことがあるので、MDAC のバージョンだけでなく、Microsoft Jet のバージョンも調べてください。対応バージョンと修正方法の最新情報については、Microsoft Jet Database Engine
の西暦
2000 年問題に関するドキュメントを参照してください。
- SQL Server OLE DB
プロバイダのバージョンを確認するには、sqloledb.dll を調べます。
SQL Server OLE DB
プロバイダのバージョン |
対応状況 |
同梱される
MDAC
バージョン
|
07.00.503
|
対応 # |
MDAC 2.0
|
07.01.623
|
対応 |
MDAC 2.0 Service Pack 2
、MDAC 2.1、
MDAC 2.1
Service Pack 1、
3711.11
|
07.01.690
|
対応 |
MDAC 2.1 Service Pack 2
、
2.1.2.4202.3
|
|