こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

SQLクライアント設定

前回質問させていただきましたが、私の力不足により解決にいたりませんでしたのでもう一度質問させていただきます。

今現在accessでデータベースを構築しています。ウインドウズXPのPCを6台でローカルネットワーク経由で一つのaccessファイルを見に行っています。
データ量が多くなり、レスポンスが悪くなったことと、クライアントとして使用するにはaccessは向かないと知り、SQLサーバーを使用しaccessのデータテーブルをリンクさせフロントエンドとして構築しようと考えています。

ウインドウズXPにSQL express editionをインストールし、テーブルリンクまではできました。ファイヤーウォールの例外とTCP/IPのみを使用するという設定も調べてやりました。
SQLをインストールしたPCではaccessからリンクテーブルへ繋げれますが、他のマシンからリンクテーブルに繋げられません。拒否されましたとエラーが出ます。

nativeclientもインストールし、リモート接続も許可しているのですが、いまいち原因がわかりません。
データソース(ODBC)のシステムDSNに追加をするように聞いたのですが、それをしようにもやはり拒否されます。
もっと根本的な原因があるのでしょうか?

これも試したいと思っていますが、Configration Managerがないのでためせない状態です。
http://nas-tech.nasbi.co.jp/blog/2006/10/sql_server_express.html


宜しくお願いいたします。

投稿日時 - 2008-07-07 16:00:04

QNo.4158187

すぐに回答ほしいです

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

> あるサイトで見たのですが、
> マイコンピューターのプロパティから
> リモートを許可するにチェックを入れました。
そらリモートデスクトップやろ!(見た瞬間思わずこう叫びました)
リモートデスクトップとは、RDPというプロトコル(一般的なポート番号は3389)を使って、Windowsマシンの画面を別のマシン上に表示できる仕組みで、SQL Serverとは何の関係もありません。

> レジストリのHKEY_LOCAL_・・・・/TcpPort でポート番号を調べました。
いきなりここだけレベル高い事してますな。ただ、これだとポート番号を勝手に変えられた時に困るので、例外を「プログラムの追加」でSQL Serverを登録すると良いでしょう。あるいは、ポート番号を決めてそこだけあけるか。本来ポート番号を調べる必要はありません。なぜならあなたが決定するのだから(あなたが提示したサイトの1の(5))。一般的には1433を使います。

> 別マシンのユーザID/パスワードとはどのユーザID/パスワードのことでしょうか?
これは普通にWindowsのユーザアカウントの事でしょうね(提示されたサイトでは)。ただ、おそらくあなたは最終的にSQL Serverをバックエンド、Accessをフロントエンドとした情報システムを構築したいのだと思うので、ユーザアカウントを作る方法はあまりお勧めできません。まぁとりあえずこっちはおいておこうよ。先にネットワークでつなげる方をやろう。知りたいのであればつながった後でこっちも説明します。提示サイトの手順1は全部やったんだよね? だから接続自体は今でもできるはずなんだけどな。確かに言葉っ足らずで肝心の「なぜこうするか、こうすると何が起こるのか」がさっぱり書かれていないので、サイト様には申し訳ないが引用で説明をつけさせてもらおう。

> 1.SQL Serverにリモート接続許可する設定
> (1)SQL Server Configration Managerを立ち上げる
 ANo.1の方がおっしゃるとおりSQL Server Configuration Managerはあなたのマシンにも入っているはずです。スタートメニューあるいはマイコンピュータを右クリックして管理の中に自動で入るはず。
> (2)SQL EXPRESSのプロトコルでTCP/IPを有効にする。
 ここでこうしないと当然TCP/IP接続できないよね。
>(4)IPアドレスのIP1,IP2の有効を「いいえ」にする。
 これはおそらくサイト様の環境がLANカードが1つでそれがIP1、もう一つがローカルループバックアドレス(127.0.0.1)なのだろう。これはLANカードが増えるとIP3、IP4・・・となるので、一番下のIPALL以外全て無効にしよう。
> (5)IPAllのTCP動的ポートを消し、TCPポートにマシン上存在しないポート番号を指定(例:1234)
 ここで指定したポート番号で接続します。前述の通り一般的には1433番。

 まずここまででサーバ側の設定は全て完了した事になる。(5)で指定したポート番号にtelnetで接続してみればうまくいっているか分かるのでとりあえずその確認をしましょう。それとも、「TCP/IPでの導通は既に確認できていて、ユーザ名の登録だけが分からなくってまだ」って事なのかな? それなら、質問文の「拒否されましたとエラーが出ます。」のところを詳しく。なんでもそうだけど、質問の時にエラーなどのメッセージは可能な限り正確に書かないと、かえって状況を推測する妨げになるのです。「Connection Refused」なのか「Invalid Username/Password」なのかで話が全然違いますので。

とにかく、
1.サーバ側の待ちうけ設定は正しくされているか
2.TCP/IPでの接続は確実にできているか
を全部クリアしてからやっとユーザ名の話に移れる訳です。

投稿日時 - 2008-07-08 21:43:10

補足

すっごく丁寧な回答本当に有難う御座います!
ちょっといろいろあってここにこれませんでした。すみません!

明日にでも会社に行ってすぐいろいろと補足させてもらいます!
遅くなりまして失礼いたしました!

投稿日時 - 2008-07-11 23:27:24

お礼

遅くなりました。補足させていただきます。
ご教授いただいたものは今全てできたと思います。

telnetで確認しましたが、接続できているようです。

あとはクライアントの別マシンのエラーについてです。

SQLstate'28000
エラー'18456
「Microsoft」「ODBC SQLserver driver」「SQLserver」
ユーザー'パソコン名¥guest'はログインできませんでした。

こんな内容です。
パソコン名とは、SQLをインストールしたパソコン(WindowsXP)の名前です。

guestとなっていますが、guestを許可する必要があるのでしょうか。
というか別マシンをserverで登録をしてそのパソコン名で入るのでしょうか。

宜しくお願いいたします。

投稿日時 - 2008-07-12 11:38:28

ANo.3

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

> もっと根本的な原因があるのでしょうか?
でしょうね。

> リモート接続も許可している
ここだな。ここで「何を使って何をして設定が正しい事を何で確認した」の? 何を根拠にリモート接続を許可していると考えたの? 構成マネージャが無い状態でどうやったの? レジストリを直接いじったの?

> ファイヤーウォールの例外とTCP/IPのみを使用するという設定も調べてやりました。
例外にはプログラムを指定したの? ポートを指定したの? TCP/IPのみを使用するという設定はどこで何をどうしたの? そもそも今立ち上がっているSQLServerのポート番号は何番か分かる?

とにかく情報が少なすぎて何ともいえません。

ところで、関係ない話で有用であると推測される情報を2つほど。
・Accessは2000から「Accessプロジェクト」なる機能が追加された。これは、ODBC経由ではなくネイティブ接続でSQLサーバーのテーブルがそっくりそのまま(テーブルリンクじゃなしに)Accessのテーブルであるかのように見えるものだ。拡張子はmdbじゃなくてadpとなる。
・Windows XP ProfessionalにSQL Server 2005 Express Editionをインストールし、同じマシン上のAccessから接続するのはOKだが、隣のマシンのAccessから接続するのは「Windows XP Professional Operating Systemというソフトウェアの利用において違反となる」、SQLEXRESSは問題ない。XPであるというのがダメなのだ。これは、昔から「EULAをよく読めばOKと書かれている」と主張する輩がずいぶんと多いが、Microsoftはこれについてどれだけ抗議を受けてもスタンスを変えていない。「AccessのMDBにAccessからテーブルリンクで行くのは良いじゃん」と思うかも知れないが、それはあくまでもライセンス範囲内の「Windowsフォルダとプリンタの共有」という枠組みの中で行っているからだ。

投稿日時 - 2008-07-07 21:55:07

補足

すみません、情報があまりにも不足してました。

とりあえずmanagement studioを使用しています。

> リモート接続も許可している

あるサイトで見たのですが、マイコンピューターのプロパティからリモートを許可するにチェックを入れました。これだけじゃないようですねぇ。。。

> ファイヤーウォールの例外とTCP/IPのみを使用するという設定も調べてやりました。

レジストリのHKEY_LOCAL_MACHINE/Software/Microsoft/MSSQLServer/MSSQLServer/SuperSocketNetLib/Tcp/TcpPort でポート番号を調べました。それを例外に入れました。
あとTCP/IPのみの設定は、SQLserver2005セキュリティ構成で、サービスとセキュリティ構成、リモート接続の中でやりました。

すみません。よろしければ今一度ご助言頂きたく思います。補足は早急に致します。

投稿日時 - 2008-07-08 12:16:11

お礼

すみません。補足の補足します。

http://nas-tech.nasbi.co.jp/blog/2006/10/sql_server_express.html
に記載されていることができました。

だた下記の部分で躓いています。

2.SQL Server Expressにアクセスするユーザの設定
(1)SQL Server Expressにアクセスする別マシンのユーザID/パスワードと同じユーザIDをSQL Serverのマシンの登録する。(セキュリティ上、管理者以外のユーザとして登録する)
(2)SQL Serverに(1)で登録したユーザに権限を与える(マシン名はSQL Serverのマシン名)。
登録方法はADO.NETの部屋10/5ブログ参照。
(3)例えば、ODBCを設定してアクセスする場合、ODBCの接続文字列は
SQL Server ExpressのマシンのIPアドレス\SQLEXpress,プロトコル番号
で作成する。

別マシンのユーザID/パスワードとはどのユーザID/パスワードのことでしょうか?

投稿日時 - 2008-07-08 13:26:53

ANo.1

SQL Server Expressをインストールして、構成マネージャがないというのが解せないのですが。。メニューの「SQL Server」の中に「構成ツールー構成マネージャ」はありませんか?

投稿日時 - 2008-07-07 21:15:35

あなたにオススメの質問