• ベストアンサー

Accessの接続先をSQLサーバーからアクセスDBにしたい

はじめまして、宜しくお願いします。 現在、Access2002、SQLサーバー2000を使ってタイトルのようなことを 実現したいと思っています。 現在作っているファイル名の拡張子はDBにSQLサーバーを使っているので「adp」です。 しかし、システムが完成した後で、扱うデータ量がそんなに多くないことと、SQLサーバーをDBに使うとお金もかかってしまうということが分かったため やはり、アクセスの中だけの閉じたシステム(「mdb」のような状態)にしたいと思っています。 システム自体は完成してしまっているので、mdbファイルとして 作り直すには効率が大変悪いと思っています。 そこでシステムファイルはそのままでDBの接続先だけSQLサーバーから アクセスDBに変えようと思っているのですが、 なかなかうまくいかず、行き詰っています。 もしかして、そのようなことは無理なのでしょうか? もしもなにかお気づきの方が居られましたら、 ご教授宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

>アクセスDBに変えようと思っているのですが、なかなかうまくいかず、行き詰っています。 >もしかして、そのようなことは無理なのでしょうか? MSDEでの接続からADOかDAOにするということですか? 無理なことはないではないですが、ストアドの量で変換のボリュームが決まるような気がします。 しかし質問内容では、どこが行き詰まっているのかわかりません。 現在の接続方式 今後の接続方式 ストアドの本数 現在の大きな課題 などを記さないと、誰も答えることができないと思います。 ただこのようなDB変更はまれにあるので、あらかじめそういった想定をして、コーディングしておかないといけません。 特に ※DBへの接続/開放 ※テーブルのレコードセット/開放 ※EXECUTEする反映系の命令 ※トランザクション開始/コミット/ロールバック などのDBを操作するものは、関数化しておくのがよいと思います。 そうしておくとDB変更にも耐えやすいプログラムができると思います。

参考URL:
http://homepage2.nifty.com/inform/vbdb/
takatoo
質問者

お礼

返信が遅くなりましてすいません。 早速のレスありがとうございます。いつぞやもTAGOSAKU7さんに助けて いただいた記憶が・・。いつもありがとうございます。 確かに言われるとおり説明不足でした。 ADOからDAOに変更するわけでなく、データベースとしてSQLサーバーを 使わないようにするとうだけで、アクセスDBをADOで操作するという形に しようと思っています。(そのためadpからmdbに変更したい。) つまり操作はADOでするのでストアド部分は変更はないです。 結局、解決しました。 今回、インポートできるのはテーブルだけだと思いこんでしまっていたので このような問題がおきていました。 調べてもいないのに、決め付けていました。恥ずかしいです。 結局 (1)新しくmdbファイルをつくって、既存のadpファイルからテーブル、  レポート、フォーム、モジュールをインポートする。  (クエリだけはadpからmdbへのインポートではできないようです。) (2)インポートしたテーブルを使って既存のadpファイルのクエリを参照しながら  mdbファイルにもクエリをつくる。 (1)と(2)をやることでタイトルのことが実現できました。 参考URLを含めいろいろとありがとうございます。

その他の回答 (1)

noname#102878
noname#102878
回答No.2

何がうまくいっていないのでしょうか。 テーブルであればインポートできますよ。 それ以外のオブジェクトはSQL Server Enterprise Managerを開いてSQL Server内のものを参考にしてAccessで作り直すしかないでしょうね。 【インポート方法】 Access2000を起動してMDBファイルを開く、または新規作成する。 テーブル一覧を表示させ、[右クリック]-[インポート]を実行。 ファイルを選択するダイアログが表示されるので、「ファイルの種類」で「ODBC Database()」を選択する。 「データソースの選択」ダイアログが表示されるので、「ファイル データソース」タブで[新規作成]をクリック。 「データソースの新規作成」ダイアログが表示される。 「セットアップするデータソースのドライバを選択してください」で「SQL Server」を選択して[次へ]をクリック。 [参照]ボタンをクリック。「名前を付けて保存」ダイアログが表示される。 そのまま、もしくは好きなフォルダに移動して、適当なファイル名をつけて[保存]をクリック。 再び「データソースの新規作成」ダイアログに戻ってくるので[次へ]をクリック。 [完了]をクリック。「SQL Serverに接続するための新規データソースを作成する」ダイアログが表示される。 接続するSQL Serverを指定して[次へ]をクリック。 ログインの認証方法でWindowsNT認証かSQL Server用ログインのどちらか好きなほうを選択する。 # WindowsNT認証の場合は今ログインしているユーザーがSQL Serverに接続する権限を持っている必要があります。 # SQL Server用のログインIDの場合は、SQL Serverをインストールしたときに「SA」というユーザーを作ったと思いますので、ユーザー名「SA」と、インストール時に設定したパスワード(もしかしたらパスワードなしって場合もありますが)を入力する。 [次へ]をクリックする。 「既定のデータベースを以下のものに変更する」にチェックを入れて、接続したいデータベース名を選択し、[次へ]をクリックする。 そのまま[完了]をクリックする。 一応[データソースのテスト]をクリックする。 テストが完了しない場合は先ほど指定したユーザー名とパスワードや、その他の細かな情報を確認する。 テストが完了したら[OK]をクリックする。 「データソースの選択」ダイアログに戻ってくるので、今作成したデータソースを選択して[OK]をクリックする。 「オブジェクトのインポート」ダイアログが表示されるのでインポートしたいテーブルを選択する。 # テーブル名は dbo. + テーブル名 となっています。 # システムテーブルも表示されているので、自分で作成したテーブルだけを選んでください。 テーブルを選択したら[OK]をクリックする。 何事もなければこれでインポートできます。 あとはダイアグラムやビューやストアドプロシージャを参考にして、リレーションやクエリを作成してください。

takatoo
質問者

お礼

早速のレス、ありがとうございます。 返信がおそくなり申し訳ございません。 回答NO.1のお礼部分に書いた内容で解決いたしました。 インポートの手順を詳細に書いていただき本当にありがとうございます。 しかし、今回は説明の中にあります、「ファイルの種類」「ODBC Database()」を 選択せず、デフォルトのままでadpファイルを指定してインポートしました。 (テーブル名の先頭にado.がつくとストアドの内容の変更が発生してしまうため) temtecomaiさんのいわれるとうりクエリにつてはビューを参考にしてつくりました。

関連するQ&A

  • Access と SQL Server の接続

    20年ほど前にAccessとSQL Server Express でADPのシステムを自社用に自分で構築したのですが、多忙のためそのままになっていました。 いまさらですが、システムを再構築しようと思います。 Local で自分のコンピュータ内であれば、Access からSQLサーバに接続できるのですが、社内のネット環境内でAccessクライアントからサーバのSQLへの接続ができなくて困っています。 現バージョンのAccessからSQL Server Express への接続方法の参考書籍がありましたら、ご紹介願います。 ネットでいろいろと検索してみましたが、私にとってはキーワードが限りなく連鎖するため途方に暮れています。 宜しくお願いいたします。

  • VBでSQL-serverをプログラムする

    VBでmdbファイルを操作するプログラムを勉強していますが、データベースをサーバー管理するならば、AccessではなくSQL-serverなどを使った方が良いと聞きました。 質問なんですが、 SQL-serverには、Accessと同じようにユーザーフォームを使ってデータベースシステムを構築するような機能が付いているのでしょうか? そもそもOracle、dBase、SQL-serverといったデータベースソフトは、DBそのものを作成するソフトであって、DBシステムを構築するにはVBなどによるプログラム開発が必要なのでしょうか? 分かりにくい質問ですみません。

  • ACCESSからSQL Serverへの移行について

    こんにちは。 現在、ACCESS2000を使ってクライアントサーバーのシステムを構築 しております。 サーバーはWindows2003 Serverですが、データベースのMDBファイルを 置いてあるだけです。 クライアントはネットワークドライブを切って、サーバーのデータを 参照しています。 稼動してから8年間が過ぎ、機能強化を重ねた結果、いろいろと 問題点が出来ました。 データの大きさは、3ヶ月使用し続けると90MBまで膨らんでしまいます。 また、WAN越えの環境も出てきてしまい、レスポンスの悪さに頭を 悩ませています。 現在、このシステムの見直しを行っております。 まず、MDBファイルをデータベースとして使用した場合、3ヶ月で90MB という大きさは問題視すべきなのでしょうか? また、WAN越えで高レスポンスを得るためには、どのようなデータベース、言語を選択すべきなのでしょうか? 先輩の技術者からは、SQL Serverへの移行、またはDB2の採用を勧められました。 このような環境下でのシステム構築に経験がある方、どんなことでも よいのでアドバイスを頂けたらと思います。 長くなりましたが、よろしくお願いいたします。

  • AccessとSQL server 2005 Express Editionについて

    今ある、Accessの照会システムがあります。 テーブルはサーバ(Win2003Server)にmdbファイルを置いてます。 照会画面、レポート等のプログラムは各クライアントにそれぞれmdbを置き、サーバにあるmdbファイルをリンクテーブルで参照しています。 今後照会だけでなく入力エントリプログラムを追加していくのですが そのエントリは9台同時に入力することが考えられます。 今のmdbで9台同時複数エントリはAccessのmdbでは当然無理なので 今あるインターフェースをAccessで DBをSQL server 2005 Express Editionで考えています。 容量はMAX4GBと聞いているのですがデータの規模は4GBで問題ありません。 SQL server 2005 Express Editionでクライアント9台同時接続できるのでしょうか? 費用をかけれないので無償のSQL server 2005 Express Editionで考えています。 可能かどうか知りたいのです。9台の同時接続で運用にも耐えれるのかも疑問です。Express Editionでは無理があるのかも知りたいのです。 無理であれば今ある資産を利用して費用をかけないで済む方法があれば助かります。 どうぞよろしくお願いします。

  • SQL Serverへの接続について教えてください。

    いつも初歩的な質問ばかりで済みません。 VB.NET2003+Access2000で開発していたアプリをSQL SERVER 2005 に移そうと作業しています。 まずMSDE2000Aをインストールし、同じマシンにあるMDBからコンバートしたMDFファイルにはアクセス 出来ました。 SQL server 2005 Express に変更しましたが、これもうまく接続・更新が出来ていました。 そして今度は別のマシンにWindows SERVER 2003 R2評価版をインストール、次いで SQL SERVER 2005 Express をインストールしてそのサーバーへデータベースファイルをデタッチして移しました。 クライアントからマイネットワークをたどっていくと共通ディレクトリはちゃんと見え、 MDF以外のファイル(XLSやMDB等)はちゃんと読み書きが出来ます。 ただ肝心のMDFファイルにアクセス出来ません。 接続しにいくと「サーバーが見つからない」とか「接続が拒否されました」等々無情なメッセージばかり返ってきます。 どこをチェックしたらいいのか、ご教示に従って補足していきますのでどうぞよろしくお願いいたします。

  • リモートPCからSQL Server 2008 に接続できません。ご指導ください。

    環境 SERVER (Dell T-300) SQL-Server 2008 Workgroup Edition Windows認証 Workgroup による共有接続 ファイルサーバーとしては正常に接続できていますが、SQL-Serverのファイルに接続できません。SQL-ServerのデーターフォルダーはドライブDにあり、Administrator はフルコントールの設定です。 データーベース全体のセキュリティーのログインには SERVER\Administratorと表示されています。 個別データーベースのセキュリティーは: ユーザー dbo guest INFORMATION_SCHEMA sys 上記 dbo のプロパティーは ユーザー名  dbo ログイン名  SERVER\Administrator 規定のスキーマ dbo 所有されているスキーマ なし ロールメンバー db_owner にチェック済 上記の設定でAccess 2007からmdb、adpともアクセスを拒否されます。どこをどのように設定すればよいのでしょうか、ご指導のほど宜しくお願い致します。

  • 外部サーバにあるDBへのアクセス

    SQLサーバにあるDBから他のサーバにあるDBに対してアクセスを行い 、DB同士のデータの同期を取りたいのですが、どのようにすればDB同士で同期を取ることができますでしょうか? よろしくお願いします。

  • accessからSQL-Serverへの接続で

     ネットで調べても見つけ方が悪いせいか、参考になりそうなのが見つからなかったので、こちらでも情報を得ようと致しました。    Accessで、ADOを用いて、小さなシステムを作りましたが、フロントをAccessにして、DBをSQL-Serverで作りなおしてみようとしております。    Windows7 Pro 64bitのパソコンにaccess2010にて、当初作成しました。  そのパソコンに、SQL-Server2014 express をインストールしております。    元々、画面とDBを分けてAccessで作成しており、リンクテーブルでつなげております。  SQL-Serverとの接続においても、リンクテーブルでつなげて、同じPC内での正常稼働は確認ができましたが、そのPCをDBサーバーとして、別PCにAccessの画面を置いて、稼働させようとしましたが、エラーとなります。  そこで、接続設定及びコードの書き方を教えて下さい。    本来なら、サーバ機とサーバOSを購入してなのでしょうが、基幹システムでもない限り、購入費用はねん出してくれません。PC買うのにも渋り、HDDやCPU等の部品だけを購入して、私が直し、未だにXPを社員には使ってもらっているような中小企業であることをご理解ください。  環境イメージとして、 <サーバ> Windows7 Pro 64 bit SQL-Server 2014 express PC名:AAA DB名:YYY saアカウントで、パスはxxxx <クライアント> 現在Accessだけでも最大接続3名いるかいないかなので、とりあえず1台として Windows7 Pro 32bit Access2010ランタイム accdeのフロント部分 リンクテーブルでADOでサーバにつなぎに行きたい。 accdbでODBC接続設定をしたものをaccdeに変換したものを配布。  他PCからの接続には、ファイアウオールの設定等々も必要とのことで、それは施しました。  また、下記、コードを追加。 Dim cnnS As ADODB.Connection Dim recW As ADODB.Recordset Set cnnS = New ADODB.Connection Set recW = New ADODB.Recordset cnnS.Open "Provider=SQLOLE DB;" & _ "Data Source=AAA\SQLEXPRESS;" & _ "User ID=sa;" & _ "Password=xxxx;" & _ "Initial Catalog=YYY"  これで、サーバ内で実行すると、  「実行時エラー 3704  オブジェクトが閉じている場合は、操作は許可されません」  と表示され、リンクテーブルは生きているので、開けて、操作できてしまいます。    次に、accdeを他PCにて稼働させると、  「実行時エラーが発生したため、このアプリケーションの実行は中断されました。 アプリケーションを実行できません。システムはシャットダウンされました。」 と表示され、稼働しません。  どのようにすればよろしいのでしょうか?。

  • SQL2005のMDFファイルにAccessでプロジェクト接続

    こんにちは。 どなたか可否や方法についてご存知であれば教えて下さい。 SQL2005で作成したMDFファイルにAccess2002からプロジェクト接続(adpファイル)しようとしているのですが、タイムアウトになってしまって接続できません。MSDE2000Aで作成したファイルには接続できたのですが。。。 サーバー名(localhost)、ユーザー名(sa)、パスワード、DB名については確認済です。 よろしくお願いします。

  • SQL Serverのリンクサーバーの

    こんにちは。 現在VisualStudio 2008 ProでC#を用いてWebアプリケーションを作成しようとしています。 いつもは、SQL Serverのデータを扱うのにADO.NETを使用してアプリケーションを作成しています。 Webアプリケーションのデータベース用のPCとしてWindows2003とSQL Server2005 Standardが搭載されているPCにAccess2003で作られているmdbがリンクサーバー設定されているものを用意しております。 このmdbは別のシステムで使用されており、常に更新されています。 今のところ、SQL Serverのタスクを用いて定期的(10分おきとか)にこのリンクサーバー上のmdbの情報を読み取り、SQL Server上に作ったテーブルを更新しているのですが、これだと情報を取りにいった時にタスクの更新が行われるまで、古い情報を取得することになります。 リアルタイムで取得することを考えた場合、 C#で作成したアプリケーションでこのSQL Serverにアクセスした時に直接リンクサーバーに対してSQL文を実行するという方法を考えているのですが、いろいろ検索しましたが探すことが出来ませんでした。 この様な方法がありましたら教えていただけないでしょうか?