バックエンドデータベース:
【マイクロソフトアクセス】
そして
【マイクロソフトSQLサーバー】
置き換え後の ASP コードは、次のような修正が必要な箇所に注意する必要があります。
[1] 接続の問題 (例)
【マイクロソフトアクセス】
constr = "DBQ=c:dataclwz.mdb; DRIVER={Microsoft Access Driver (*.mdb)}"
【マイクロソフトSQLサーバー】
constr = "DRIVER={SQL Server};SERVER=host;DATABASE=mydata;uid=sa;pwd="
[2] 同様の関数 (例)
[1]DATEDIFF(datepart, startdate, enddate)
「datepart」パラメータのオプションは次のとおりです。
設定の説明————————————
【マイクロソフトアクセス】
年
四半期Q
月
y年の日数
日
曜日w
周ww
時間 h
分
秒
[Microsoft SQL Server]
yy年、yyyy年
四半期 qq、q
月 mm、m
年の日 dy、y
日、日
週週、ww
時間、ああ
分ミ、ン
2番目のSS、S
ミリ秒 ms
----------------------
基本的には同じですが、書くときに注意してください。
[Microsoft Access] datediff('d',enddate,'2004/08/01') のように引用符を追加します。
[Microsoft SQL Server] は必要ありません。たとえば、datediff(d,enddate,'2004/08/01')
[2][Microsoft Access] は、cstr などのデータ型変換関数を使用できます。
[Microsoft SQL Server] では、次のような変換またはキャスト関数を使用します。
Convert(varchar,[amount]) など
[3][Microsoft SQLサーバー]
現在時刻を取得するには、getdate などを使用します。
[3] ステートメント
【マイクロソフトSQLサーバー】
利用可能
場合
そのとき
そのとき
...
それ以外
終わり
ステートメント、一方
【マイクロソフトアクセス】
サポートされていません。
[Microsoft Access] も between ステートメントをサポートしていません
[Microsoft SQL Server] は次のように記述できます。
[日付] @date1 と @date2 の間
[4] クエリテーブル
【マイクロソフトSQLサーバー】
3 つ以上のテーブルを結合することでクエリを実行できます。
【マイクロソフトアクセス】
クエリのために結合できるテーブルは 2 つだけのようです (当局に確認済み)。
また、[Microsoft SQL Server] では、「*=」および「=*」コネクタを使用できます。 [5] ゼロ除算問題
【マイクロソフトアクセス】
除数がゼロの場合、関連するレコードは自動的に破棄され、
【マイクロソフトSQLサーバー】
エラーが報告され、クエリは終了します。コードを削除します:
【マイクロソフトアクセス】
次のように書くことができます: delete * from [table]
【マイクロソフトSQLサーバー】
次のようにのみ記述できます: delete from [table]
何度もエラーが報告される
______________________________________________________
現在の日付:
【マイクロソフトアクセス】
date() を使用する
【マイクロソフトSQLサーバー】
getdate() を使用すると、データベースの型が変更される可能性がある場合、これを ASP コードに追加できます。
if inStr(constr,"Microsoft Access") > 0 then
sqlstr=[Microsoft Access][SQLコード]
それ以外
sqlstr=[Microsoft SQL Server][SQLコード]
終了する場合
(constr--接続文字列)
これにより、データベースが変更された場合でも、データベースのクエリを変更したり、コードを更新したりする必要がありません。
さらに、access には true と false のフィールド レコードがありますが、SQL には smallint しかありません。これに対応して、access に「フィールド名=true」がある場合は、SQL では「フィールド名=1」に変更する必要があります。
インターネット上の無料 ASP プログラムのほとんどは、Access データベースを使用します。ただし、アクセス データベースは、中小規模のスタンドアロン データベース システムであるため、大量のアクセスとデータを伴う Web サイト アプリケーションに使用すると、多くの場合、過剰な負荷がかかります。一般に、アクセス データベースのパフォーマンスは 50M を超えると大幅に低下し始め、100M を超えるとエラーや動作の遅さの問題が顕著になると考えられています。 Dongwang 7.0 以降のようにプログラムの観点から最適化を行ってパフォーマンスを向上させることはできますが、問題を根本的に解決することはできません。
現時点では、おそらく Microsoft の SQL Server データベースを使用するのが最も可能性の高い方法です。もちろん、Oracle や MySQL などの他のデータベースを使用することもできますが、両方とも Microsoft 製品であるため、SQL Server に書き換えます。最も省力化できる方法であるはずです。
1. 書き換えの前提条件:
システムに SQL Server2000 がインストールされており、SP3 パッチが適用されている。Office スイートの Access がインストールされている。ただし、行番号表示をサポートするエディターを使用することをお勧めします。もちろんFrontPage2003でも使えますが、以前のバージョンでは行番号表示が使いにくかったです。
個人の能力要件: 基本的な ASP 構文、アクセス データベース操作、および SQL Server Enterprise Manager の基本操作を理解できること。
2. 一般的に、データベースの準備には 2 つの状況があります
。
1. プログラムは SQL データベース形式を提供します。MDF ファイル、または SQL データベースを作成するための SQL スクリプト ファイル (拡張子 .sql) が提供されます。
mdf ファイルがある場合は、Enterprise Manager を使用して直接添付できます。SQL スクリプト ファイルが提供されている場合は、Enterprise Manager を使用して SQL データベースを作成し、Enterprise Manager のクエリ アナライザを使用して SQL データベースを実行します。データベーステーブルを作成するスクリプト。
このようにして構築されたデータベースは、基本的に書き換える必要はありません。
2. 現時点では、ほとんどの場合、SQL データベースやスクリプト ファイルが提供されていません。これは、この記事で解決する主な問題でもあります。通常、このようなプログラムは Access データベースを提供するため、Enterprise Manager を使用して Access データベースをインポートできるようになり、インポート後に次のことを書き直す必要があります。
元のアクセスと比較して、次の部分を書き換えます。
(1) SQL データベース テーブルには自動フィールドがないため、アクセス時の元の自動フィールドは通常のフィールドに変換され、1 ずつ増分して識別タイプに手動で変更する必要があります。
(2) すべての時刻フィールドについて、デフォルト値が定義されている場合は、now() にする必要があり、getdate() に変更する必要があります。
(3) 元のフィールドのデフォルト値は通常自動的に導入されず、元のテーブルのフィールドに対して手動で追加する必要があります。
(4) データベースが異なるため、access および SQL の多くのフィールド タイプが変換後に変更されます。たとえば、元の「wether」フィールドは bit または int に変換され、メモ フィールドはロングテキストに変換され、テキスト フィールドは次のようになります。 varchar などに変換しても、通常はプログラムの動作には影響しません。問題がある場合は、以下のプログラムの書き換えセクションで説明します。
(5) ストアド プロシージャを使用する For SQL プログラムを使用する場合は、プログラム自体に SQL データベースを作成する方法が必要です。独自の SQL データベース ファイルを用意するか、そうでない場合は SQL スクリプトを使用します。 access データベース メソッドではストアド プロシージャを作成できないため、これを放棄した方がよいでしょう。SQL プログラム バージョンの場合は、同じバージョンの For Access プログラムを使用し、アクセス データベースをインポートしてから、次の書き換えメソッドを使用して SQL バージョンに変更します。自分でプログラムしてください。
3. 接続文字列を書き換えるには、
アクセスと SQL に関する Dongwang のこのセクションを参照してください。
ディムコンストラ
IsSqlDataBase = 1 の場合
'SQL データベース接続パラメータ: データベース名、ユーザー パスワード、ユーザー名、接続名 (ローカルでローカルを使用、海外で IP を使用)
Dim SqlDatabaseName、SqlPassword、SqlUsername、SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
Sqlユーザー名 = "dvbbs"
SqlLocalName = "(ローカル)"
ConnStr = "プロバイダ = Sqloledb; ユーザー ID = " & SqlUsername & "; パスワード = " & SqlPassword & "; 初期カタログ = " & SqlDatabaseName & "; データ ソース = " & SqlLocalName & ";"
それ以外
無料ユーザーの場合は、データ ディレクトリ内のデータベース アドレスとデータベース名を適宜変更してください。たとえば、dvbbs6.mdb を dvbbs6.asp に変更してください。
「http://www.downcodes.com/」
Db = "データ/fengerqingqing.mdb"
ConnStr = "プロバイダ = Microsoft.Jet.OLEDB.4.0;データ ソース = " & Server.MapPath(db)
終了の場合
エラー時は次へ再開
set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr
もちろん、SQL を使用する場合は、access ステートメントを削除することができます。つまり、else の後と、次にエラーが再開される前は、次のようになります。
Dim ConnStr
'SQL データベース接続パラメータ: データベース名、ユーザー パスワード、ユーザー名、接続名 (ローカルでローカルを使用、海外で IP を使用)
Dim SqlDatabaseName、SqlPassword、SqlUsername、SqlLocalName
SqlDatabaseName = "dvbbs7"
SqlPassword = ""
Sqlユーザー名 = "dvbbs"
SqlLocalName = "(ローカル)"
ConnStr = "プロバイダ = Sqloledb; ユーザー ID = " & SqlUsername & "; パスワード = " & SqlPassword & "; 初期カタログ = " & SqlDatabaseName & "; データ ソース = " & SqlLocalName & ";"
エラー時は次へ再開
set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnStr は
、より簡潔に次のように記述することもできます。
set conn = Server.CreateObject("ADODB.Connection")
conn.open "プロバイダ = Sqloledb; ユーザー ID = sa; パスワード = 1234567; 初期カタログ = dvbbs7; データ ソース = (ローカル);"
実際の状況に応じて、データベース名、データ ソース、ユーザー、パスワードを書き換えます。
4. プログラムの書き換え
次の 2 つの状況があります。
1. 運よく For SQL プログラムを入手できた場合、上記のデータベース作成プロセスに問題がなければ、プログラムは基本的に実行できます。エラーがある場合、それはプログラム自体の単なるバグです。この投稿ではその内容については詳しく説明しません。
2. ほとんどの場合、プログラム自体は For Access です。For SQL プログラムとの違いは主に、プログラム内で使用される SQL クエリ ステートメントです。 SQL クエリ ステートメントはデータベース アプリケーションの不可欠な部分であることに注意してください。For SQL であっても For Aceess であっても、プログラムで使用される構文はほぼ同じですが、プログラムが汎用的ではないのは、これらの違いによるものです。必要なもの 変更の主な内容。一般的に変更が必要な部分は次のとおりです。
(1) time 関数の問題: SQL データベースの time 関数は、access の時刻関数とは異なります。最も一般的な関数は、Access が now() で、SQL が getdate() です。したがって、where 句で now() が使用されている場合は、 getdate() に変更する必要があります。データベースで使用されていない now() 関数は、asp プログラム自体でも使用する必要があることに注意してください。クエリまたは実行文は変更しないでください。
(2) 時刻比較関数: datediff('d','time1','time2') これは、SQl のこれらの引用符を削除する必要があると同時に、 と の前に追加する必要があります。時刻形式の後も削除する必要があります。同様に、これは SQL ステートメントも参照し、ASP ステートメントはそのままにしておく必要があります。
(3) null 値の表現: アクセスでは、null 値の判断は一般的に ="" かどうかで表現されますが、SQL ではこれが失敗することが多く、エラーが発生したり、プログラムが正常に動作しない場合は変更できます。このように判断するには :where (name is null)
(4) 真偽値判定:アクセス時は=true、=falseで判定できますが、SQLではエラーとなりますので、SQLクエリや実行文ではこの判定を=1に変更してください。と =0 をそれぞれ表します。注: 一部のプログラムでは = "true" と記述されますが、引用符があるため、このフィールドは文字タイプです。=1 に変更することはできません。そのままにしておきます。
上記は書き換えが一般的な場所ですが、あまり一般的ではない場所もありますので、ここに返信して議論してください。
5. プログラムのデバッグ
上記の書き換えは、プログラムのソースコードを直接検索して行う可能性が低く、すべてを見つけるのが難しいため、行番号付きのエディタを使用することをお勧めします。
私が主に採用している方法は、データベースの書き換えが完了した後、エラーが発生した後、プログラムを直接デバッグすることです。エラー メッセージを見て、該当するファイルのコード行を見つけます。しかし、根本的な原因が見つからないこともよくあります。たとえば、エラー文は conn.execute(sql) ですが、この文自体は間違っていません。エラーの原因は内部の SQL 文字列です。次に、SQL 文字列がどのように生成されるかを調べて、それを変更します。上記のプログラム修正方法に準じます。
データベースをインポートした後、自動的に追加されたフィールドを書き換える必要があり、すべての数値タイプの長さを増やす必要があります。10 進数を使用するのが最善です。
すべてのデフォルト値が失われます。主に数値型と日付型です。
now()、time()、date() はすべて getdate() に変更する必要があります。
すべての datediff('d', time1, time2) は datediff(day, time1, time2) に変更する必要があります。
一部の true/false 型は使用できないため、1/0 に変更する必要があります。
リマークタイプは、cast(column as varchar) を通じて使用する必要があります。
CursorType を 1 に変更する必要があります。つまり、データベースを開くときに最初の数値パラメータを 1 として指定する必要があります。そうしないと、レコードが完全に表示されない可能性があります。
isnull(rowname) を rowname = null に変換する
と、ACCESS データベースの自動番号付けタイプが SQL Server によって自動番号付けタイプに設定されません。自動番号付けを示すために、SQL 作成ステートメントに ID を追加する必要があります。
変換中、SQL SERVER は日付関連フィールドに対してデフォルトで smalldatetime 型を使用します。datetime 型は smalldatetime 型よりも範囲が広いため、これを datetime 型に変更することをお勧めします。 smalldatetime 型を使用すると変換が失敗することがありますが、datetime 型を使用すると変換が成功します。
2 つのデータベースの操作に使用される SQL ステートメントはまったく同じではありません。たとえば、ACCESS データベースのレコードを削除する場合は「delete * from user where id=10」を使用し、SQL SERVER データベースを削除する場合は「」を使用します。 delete user where id=10"。
日付関数が異なります。ACCESS データベースを処理する場合は、date() や time() などの関数が使用できます。ただし、SQL SERVER データベースを処理する場合は、datediff や dateadd などの関数のみが使用できます。は使用できますが、date( )、time() およびその他の関数は使用できません。
ACCESS データベースを処理する場合、cstr() 関数などの一部の VB 関数は SQL ステートメントで直接使用できますが、SQL SERVER データベースを処理する場合は使用できません。
次の表は、Microsoft Access データベース (Microsoft Access データベース: 特定のトピックや目的に関連するテーブル、クエリ、フォームなどのデータとオブジェクトのコレクション。データの管理には Microsoft Jet データベース エンジンが使用されます。) とを比較しています。 Microsoft Access プロジェクト (Microsoft Access プロジェクト: Microsoft SQL Server データベースに接続し、クライアント/サーバー アプリケーションの作成に使用される Access ファイルです。プロジェクト ファイルには、データやデータベース ベースのオブジェクト (テーブルやビューなど) は含まれません。データ型のフィールド特性には、Boolean、Integer、Long、Currency、Single、Double、Date、String、および Variant (デフォルト) が含まれます。
Microsoft Access データ型 SQL Server データ型 Yes/No (Yes/No データ型: 可能な値が 2 つだけ (Yes または No、True または False など) を持つフィールドに使用されるフィールド データ型。Null 値は使用できませんbit (ビットデータ型: Access プロジェクトにおいて、1 または 0 の値を格納するデータ型。1 と 0 以外の整数値を受け入れますが、常に 1 として解釈されます。)
数値 (数値データ型: 数学的演算で使用される数値データに使用される Microsoft Access データベースのフィールド データ型。ただし、金額の値を表示または計算する場合は、通貨データ型を使用する必要があります。) (バイト) tinyint (tinyint データ型: Access プロジェクトの 1 バイト (8 ビット) データ型。0 ~ 255 の範囲の整数を格納するために使用されます。)
数値 (整数) smallint (smallint データ型: Access プロジェクトの 2 バイト (16 ビット) データ型。 -2^15(-32,768) から 2^15-1(32,767) までの数値を格納します。)
数値 (長整数) int (int データ型: Access プロジェクトの 4 バイト (32 ビット) データ型で、-2^31(-2,147,483,648) から 2^31-1(2,147,483,647) までの値を格納します。 。)
Number (単精度浮動小数点型) real (実数データ型:Access プロジェクトでは、精度 7 桁、正の値は 1.18E-38 ~ 3.40E+38 の範囲、負の値) の近似数値データ型値の範囲はおよそ -1.18E-38 ~ -3.40E+38 で、0 の場合もあります)。
(同等のデータ型はありません) bigint (bigint データ型: Access プロジェクトの 8 バイト (64 ビット) データ型。 -2^63 (-9,223,372,036,854,775,808) と 2^63-1 (9,223,372,036,854,775,807) の間に格納されます。)
Number (倍精度浮動小数点) float (float データ型: Access プロジェクトでは、15 桁の精度を持つ近似的な数値データ型。格納される正の値の範囲は、およそ 2.23E-308 から 1.79E+ 308、負の値の範囲はおよそ -2.23E-308 ~ -1.79E+308 ですが、0 の場合もあります)。
通貨 (「通貨」データ型: 精度が非常に重要な通貨関連の計算または固定小数点計算に使用される Microsoft Access データベースのデータ型。) お金 (通貨データ型: Access プロジェクトで、通貨のデータを保存するために使用されます)値の種類、値の範囲は-922,337,203,685,477.5707から922,337,203,685,477.5807、精度は通貨単位の1万分の1です。)
smallmoney(smallmoneyデータ型:Accessプロジェクトに通貨値を格納するデータ型、値の範囲
)は - 214,748.3648 から 214,748.3647 で、通貨単位の 10,000 分の 1 の精度で表示されます。小数点第 2 位に四捨五入されます。)
10 進数/数値 (10 進数データ型 (Access データベース)): -10^38-1 から 10^38-1 までの値を格納するために使用される正確な数値データ型。数値範囲 (最大合計桁数) と精度 (小数点) を指定できます。 ) 10 進数 (10 進データ型 (Access プロジェクト): -10^38-1 から 10^38-1 までの値を格納するために使用される正確な数値データ型。数値範囲 (最大)合計桁数) は、数値) と精度 (小数点の右側の最大桁数) を指定できます。)
数値 (数値データ型: Access プロジェクトでは、-10^38 からの値を持つ正確な数値データ型
)-1 ~ 10^38-1。数値範囲 (最大合計桁数) と精度 (小数点の右側の最大桁数) を指定できます。
日付/時刻 (「日付/時刻」データ型: Access データベースのデータ型で、日付と時刻の情報を格納するために使用されます。) datetime (日付時刻データ型: Access プロジェクトの日付と時刻のデータ型で、1753 からの範囲) 9999 年 1 月 1 日から 12 月 31 日までの精度は、100 分の 3 秒、つまり 3.33 ミリ秒です。
smalldatetime (smalldatetime データ型: Access プロジェクトの日付と時刻のデータ型)、精度は datetime 時刻ほど良くありません。データ値の範囲は 1900 年 1 月 1 日から 2079 年 6 月 6 日までで、精度は 1 分です)。
AutoNumber (「AutoNumber」データ型: Microsoft Access データベースのフィールド データ型で、テーブルに新しいレコードが追加されると、各レコードに一意の番号が自動的に格納されます。生成できる数値は、シーケンス番号、乱数、同期の 3 種類です。レプリケーション ID。) (増分) int (int データ型: Access プロジェクトの 4 バイト (32 ビット) データ型。-2^31 (-2,147,483,648) および 2 ^31-1(2,147,483,647) に格納されます。 Identity 属性が定義されています)。
Text (「Text」データ型: Microsoft Access データベースのフィールド データ型。「Text」データ型には、最大 255 文字、または FieldSize プロパティで指定されたそれより少ない文字数を含めることができます。) (n) varchar( n ) (varchar(n) データ型: Access プロジェクトの可変長データ型で、最大長は ANSI 文字 8,000 文字です。)
nvarchar(n) (nvarchar(n) データ型: Access プロジェクトでは、可変長データ最大 4,000 個の Unicode 文字を含めることができるタイプ。Unicode 文字は 1 文字あたり 2 バイトを占め、すべての国際文字をサポートします。)
備考 (「備考」データ型: Microsoft Access データベースのフィールド データ型。「備考」フィールドには最大 65,535 文字を含めることができます。) text (テキスト データ型: Access プロジェクトの可変長データ型。格納可能)最大 2^31-1(2,147,483,647) 文字。デフォルトの長さは 16)。
OLE オブジェクト (「OLE オブジェクト」データ型: Access データベースにリンクまたは埋め込み (挿入) できる、他のアプリケーションで作成されたオブジェクトで使用されるフィールドのデータ型の 1 つ) image (画像データ型: Access 内 プロジェクト内)可変長データ型は、最大 2^31-1 (2,147,483,647) バイトのバイナリ データを格納できます。イメージ データ型は、画像、ドキュメント、サウンド、ファイルなどの BLOB (バイナリ ラージ オブジェクト) を格納するために使用されます。コンパイルされたコード。)
同期レプリケーション ID (別名グローバル一意識別子 (GUID)): Access データベースでは、同期レプリケーションの一意の識別子を確立するために使用される 16 バイトのフィールド。GUID は、レプリカ、レプリカ セット、テーブル、レコード、およびその他のオブジェクトを識別するために使用されます。 Access データベースの GUID は同期レプリケーション ID (GUID) を指します) uniqueidentifier (uniqueidentifier データ型: Access プロジェクトでは、16 バイトのグローバル一意識別子 (GUID)。) (SQL Server 7.0 以降のバージョンにのみ適用されます)
hyperlink (「ハイパーリンク」データ型: ハイパーリンク アドレスを格納する Access データベース フィールドのデータ型。アドレスには最大 4 つの部分を含めることができ、displaytext#address#subaddress# という構文形式で記述されます。) char (char データ型) : Access プロジェクトでは、最大 8,000 の ANSI 文字を含めることができる固定長のデータ型。)、
nchar (nchar データ型: Access プロジェクトでは、最大 4,000 の Unicode 文字を含めることができる固定長のデータ型。Unicode それぞれ文字は 2 バイトを占め、すべての国際文字をサポートします)、varchar、nvarchar (ハイパーリンク属性は Yes に設定されています)。
(同等のデータ型はありません) varbinary (varbinary データ型: 最大 8,000 バイトのバイナリ データを格納できる Access プロジェクトの可変長データ型。)
(同等のデータ型はありません) smallint (smallint データ型: Access プロジェクトの 2 バイト (16 ビット) データ型。 -2^15(-32,768) と 2^15-1(32,767) の間に格納されます。)
(同等のデータ型はありません) タイムスタンプ (タイムスタンプ データ型: Access プロジェクトでは、行が挿入または更新されるたびに自動的に更新されるデータ型。タイムスタンプ列の値は日時データではなく、binary(8) または varbinary です。 (8)、データ変更の順序を示します)。
(同等のデータ型はありません) charchar
(同等のデータ型はありません) sql_variant (sql_variant データ型: text、ntext、image、timestamp、および sql_variant 型以外の複数のデータ型の値を格納する Access プロジェクトのデータ型。列、パラメーター、変数で使用されたり、ユーザー定義関数の戻り値)。
(同等のデータ型はありません) ユーザー定義 (ユーザー定義のデータ型: Microsoft SQL Server データベースでは、列に含まれるデータの型定義は、既存のシステム データ型定義を使用してユーザーが定義できます。ルールとデフォルト値は、ユーザー定義のデータ型にのみバインドできます。)
注 Access プロジェクトまたは SQL Server データベースでは、接頭辞「n」は「国/地域」を表し、このデータ型が Unicode 対応であることを意味します。 。 Access データベースでは、すべてのテキスト列がデフォルトで Unicode 対応になっています。
ACCESS を SQL に変換するときに注意する必要がある問題
2006-2-13 16:01:20
多くの友人が SQL2000 データベース プログラミング方法を使用したいと考えていますが、ACCESS を学習中であり、SQL についてはほとんど理解していないという事実に悩まされています。ここでは、ACCESS を SQL2000 に変換するための方法と注意事項を紹介します。 , まず第一に、私が話しているのはACCESS2000とSQL2000の間の変換です。他のものはまだ試していませんが、方法はあるはずです。
2. 変換方法
1. [コントロール パネル] の [管理ツール] で [データベース ソース] を開きます。
2. [追加] をクリックして新しいデータ ソースを追加し、選択列で [DriverdomicrosoftAccess] を選択します。
(*.mdb)」と入力するとボックスが表示されます。
「データベースソース」に書きたい名前を入力します。私は入力する必要がないので「ABC」としました。そして下の選択を押してください。データベースのアドレスと選択内容を見つけて (最初に ACCESS データベースをバックアップしてください)、確認します。
ここでデータソースが作成され、あとは変換するだけです。
3. SQL2000 Enterprise Manager を開き、データベースに入り、新しい空のデータベース「ABC」を作成します。
4. 新しく作成したデータベースを選択し、マウスを右クリックして、[すべてのタスク] の下の [データのインポート] を選択し、[次へ] をクリックして続行します。
5. データベース ソース ドロップダウン リストで [DriverdoMicrosoft Access (*.mdb)] を選択し、[ユーザー/システム DSN] で追加したばかりの [ABC] を選択し、[次へ] をクリックします。
6. 「目的」は、サーバーを選択する必要はありません (通常は自分のマシン「ローカル」ですが、サーバーのアドレスまたは LAN アドレスを選択して、権限が動作できるかどうかを決定することもできます)。「Windows 認証を使用する」は、使用することを意味します。独自のシステム管理者の ID 操作では、Web サイトの操作に「SQL ID 操作検証を使用する」を使用できます。後者をお勧めします。
7. 「SQL ID 操作検証を使用する」を選択した後、システムのデフォルト番号「sa」と「****」を選択し、新しく作成した「ABC」を選択して押します。 「次のステップ」;
8. このステップには、「データ ソースからテーブルとビューをコピーする」と「クエリ コマンドを使用して転送するデータを指定する」という 2 つの単一の選択肢があります。前者を選択し、「次へ」をクリックして続行します。
9. 独自の ACCESS データベースのテーブルがここに表示されます。[すべて選択] をクリックして次のステップに進みます。
10. [DTS インポート/エクスポート ウィザード] で、[今すぐ実行] が選択されていることを確認し、[次へ] をクリックします。
11.「完了」を押して続行します。
12. このステップでは、データが SQL2000 にインポートされていることがわかります。「XXX テーブルがデータベースに正常にインポートされました」という言葉が表示され、すべてのテーブルの前に緑色のチェックマークが付いていることは、すべてのデータがデータベースにインポートされたことを意味します。プロセス中に問題が発生した場合、またはテーブルの前に赤い * が表示された場合は、その時点でテーブルに戻って操作が正しいかどうかを確認する必要があります
。データの変更
1. SQL2000 には「自動番号付け」がないため、「自動番号付け」で設定したフィールドは空ではないフィールドになります。この場合、これらのフィールドを手動で変更し、「マーク」で「はい」を選択する必要があります。シードは「1」、増分は「1」、
2. さらに、ACCESS2000 を SQL2000 に変換すると、元の属性「yes/no」を持つフィールドは空ではない「bit」に変換されます。この時点で、希望する属性に変更する必要があります。
3. さらに、時間関数の把握にも注意を払う必要があります。ACCESS と SQL の間には多くの違いがあります。
4. 関連分野の問題
1. ACCESS データベースの自動番号付けタイプを変換するときに、sqlserver がそれを自動番号付けタイプに設定しませんでした。自動番号付けを示すために SQL 作成ステートメントに ID を追加する必要があります。
2. 変換中、SQLSERVER は日付関連フィールドに対してデフォルトで smalldatetime 型を使用します。datetime 型は smalldatetime 型よりも範囲が広いため、これを datetime 型に変更することをお勧めします。 smalldatetime 型を使用すると変換に失敗しましたが、datetime 型を使用すると変換は成功しました。
3. 2 つのデータベースの操作に使用される SQL ステートメントはまったく同じではありません。たとえば、ACCESS データベースのレコードを削除する場合は「delete*fromuserwhereid=10」を使用しますが、SQLSERVER データベースを削除する場合は「deleteuserwhereid=」を使用します。 10インチ。
4. 日付関数は異なります。ACCESS データベースを処理する場合は、date() や time() などの関数を使用できます。ただし、SQLSERVER データベースを処理する場合は、datediff や dateadd などの関数のみを使用できます。 ()、time() およびその他の関数。
5. ACCESS データベースを処理する場合、cstr() 関数などの一部の VB 関数は SQL ステートメントで直接使用できますが、SQLSERVER データベースを処理する場合は使用できません。
5. 関連するステートメントの問題。自動的に追加されるフィールドを書き直す必要があります。 Access でよく使用される自動番号付けフィールドは、mssql にインポートされた後、自動インクリメントされる int ではありません。インポートされた自動番号付けフィールドの "no" を "yes" および "seed" に変更する必要があります。 . と「増分額」はどちらも「1」で自動数値となります。
すべてのデフォルト値が失われます。主に数値型と日付型
now()、time()、date() はすべて getdate() に変更する必要があります。
すべての datediff('d',time1,time2) を datediff(day,time1,time2) に変更する必要があります。
すべての datediff('ww',time1,time2) を datediff(week,time1,time2) に変更する必要があります。
すべての datediff('d',time1,time2) を datediff(day,time1,time2) に変更する必要があります。
mssqlserver には、アクセスできない予約語が多数あります。mssql にデータをインポートすると、問題が発生します。 mssql をインポートすると、これらのフィールド (データベース内のテーブル名を含む) に「[フィールド名]」が自動的に追加されるため、スクリプトを変更して対応するフィールド名 (またはテーブル名) を追加するか、変更する必要があります。フィールド名をmssqlではない予約語に変更する
アクセスを使用して時間を使用する場合、誰もが「select*fromaaaawhiletime="&now()」などの SQL ステートメントを使用しますが、mssql には「now()」関数はなく、「getdate()」が使用されるため、 , すべての SQL ステートメントの「now()」は「getdate()」に置き換える必要があります。
日付関数は異なります。ACCESS データベースの処理では、date() や time() などの関数を使用できます。
SQLSERVERのデータベース処理では、datediff、dateaddなどの関数のみ使用でき、date()、time()などの関数は使用できません。
変換中、SQLSERVER は日付関連フィールドに対してデフォルトで smalldatetime 型を使用しますが、これを datetime 型に変更することをお勧めします。