none
ODBC接続でSQLSERVER20005の接続エラーについて RRS feed

  • 質問

  • Win2000SERVER上にSQLSERVER20005をインストールしているのですが
    他のPCからODBC接続を行いたいのですが、旨く接続出来ません。

    接続できる方法を教えてください。

    よろしくお願いします。

    環境は以下の通りです。

    システム : Microsoft Windows 2000 Service Pack4
    DB : SQL Server 2005

    何でも情報を頂けると助かります。
    どうぞ宜しくお願いいたします。

    データソーステストで、以下の結果になりました。

    Microsoft SQL Server ODBC ドライバ Version 03.85.1132

    接続テストを実行中です...

    接続を試みています
    [Microsoft][ODBC SQL Server Driver][TCP/IP Sockets]SQL Server が存在しないか、アクセスが拒否されました。

    テストは失敗しました。

    以上

    • 編集済み tanuyoshi 2009年6月30日 9:08
    2009年6月30日 5:22

回答

  • >まず、提示されているパスワードがリアルであれば危険ですので、削除して下さい。
    了解しました。修正します。

    コマンドプロンプトより、sqlコマンドを実行したところ、以下のエラーがでました。

    HResult 0x274D、レベル 16、状態 1
    TCP プロバイダ : 対象のコンピュータによって拒否されたため、接続できませんでした

    Sqlcmd: エラー: Microsoft SQL Native Client: サーバーへの接続確立時にエラーが発
    生しました。接続先が SQL Server 2005 である場合は、既定の設定では SQL Server が
    リモート接続を許可していないことが原因である可能性があります。。
    Sqlcmd: エラー: Microsoft SQL Native Client: ログイン タイムアウトが時間切れにな
    りました。

    エラーを見ると、SQL Server がリモート接続を許可していないことが原因である可能性があります。
    リモート接続できるように、規定の値を変更しています。

    ファイヤオールについても、 Win XPで、参照する方に、TCP 1433,1434を受信可能に設定しています。
    WIN 2000 server側の ファイヤオールの設定が何か必要でしょうか?


    よろしくお願いします。

    以上

    • 回答としてマーク tanuyoshi 2009年7月6日 7:23
    2009年7月1日 7:35
  • 説次に、コマンドラインに、 sqlcmd -S XXX\SQLExpress -U XXXX -P XXXXと、入力して上記エラーとなりました。

    アプリケーションの問題ではなく、やはりリモートからうまく接続できないようです。


    このときにコマンドライン1>が表示されています。以下のコマンドを入力しました。

    1> sqlcmd -S XXX\SQLExpress -U XXXXX -P XXXX
    2> select top 1 * from XXXマスタ
    3> GO
    メッセージ 170、レベル 15、状態 1、サーバー XXXXX、行 1
    行 1: 'S' の近くに無効な構文があります。
    1>

    sqlcmd -S XXX\SQLExpress -U XXXXX -P XXXX は、データベースに接続するためのコマンドです。うまく接続された場合、1>が表示されます。つまり、1>を出すためのコマンドとも言えます。
    しがって、提示されている
    1> sqlcmd -S XXX\SQLExpress -U XXXXX -P XXXX
    は必要ありません。
    以下の二行だけでOKです。
    1> select top 1 * from XXXマスタ
    2> GO
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク tanuyoshi 2009年7月6日 7:23
    2009年7月3日 8:09

  • 以下の設定箇所を参照して、接続できるようになりました。

    ODBC ドライバの設定方法
    http://www.venus.dti.ne.jp/~yoshi-o/RDB/ODBC-connection.html#SQLServer%202000

    いろいろ参考意見有難うございました。

    以上
    • 回答としてマーク tanuyoshi 2010年3月5日 7:38
    2009年7月6日 7:23

すべての返信

  • 原因はいろいろ考えられますが、とりあえずリモート接続が許可されていること、SQL Server Browserが動作していることを確認して下さい。あと、接続はWindows認証でしょうか、SQL Server認証でしょうか?

    (参考)
    リモート接続が許可されるように SQL Server 2005 を構成する方法
    http://support.microsoft.com/kb/914277/


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年6月30日 5:53
  • 早速の回答ありがとうございます。

    >とりあえずリモート接続が許可されていること、SQL Server Browserが動作していることを確認して下さい。あと、接続はWindows認証でしょうか、SQL Server認証でしょうか?

    1)リモート接続が許可されているように定義しました。
    2)SQL Server Browserは、動作しています。
    3)SQL Server認証を使用しています。

    以下の指定する方法がよくわかりません。
    4)SQL Server および SQL Server Browser サービスに関連するネットワーク トラフィックが許可されるようにファイアウォールを構成します。

    Windows ファイアウォールを開くには、[スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリックします。firewall.cpl と入力し、[OK] をクリックします。 firewall.cpl が、起動できませんでした。


    よろしくお願いします。

    以上
    2009年6月30日 8:47
  • ファイアウォールの件はWindows 2000 Serverだからでしょう。
    ところでsqlcmdなどを使って、ローカルでログインできることは確認されていますでしょうか?


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年6月30日 14:32
  • >sqlcmdなどを使って、ローカルでログインできることは確認されていますでしょうか?

    確認していませんので、実行していますが、以下のところで、次の確認項目がわかりませんので、教えてください。

    sqlcmd.EXEを実行して、以下のコマンドを入力しました。

    sqlcmd -S サーバ名\SQLExpress

    注:サーバ名を設定。
    特にメッセージが表示されていない状態です。
    接続されてるのかどうか確認する方法を教えてください。

    よろしくお願いします。

    以上
    2009年7月1日 1:00
  • sqlcmd -S サーバ名\SQLExpress

    SQL Server認証ですと、 sqlcmd -U ユーザー名 -P パスワード -S サーバー名\SQLExpress
    のようになります。


    特にメッセージが表示されていない状態です。
    接続されてるのかどうか確認する方法を教えてください。

    1>が表示されていれば接続できていますが、いかがでしょうか?
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年7月1日 1:11
  • 早速の回答有難うございます。

    >1>が表示されていれば接続できていますが、いかがでしょうか?

    はい、1>が表示されています。

    コマンドでは、接続されていると、見ていいのでしょうか?

    >SQL Server認証ですと、 sqlcmd -U ユーザー名 -P パスワード -S サーバー名\SQLExpress
    のようになります。

    指定されて内容のコマンドを入力しましたが、特にメッセージ等は、でない状態です。


    よろしくお願いします。

    以上


    2009年7月1日 1:31
  • はい、1>が表示されています。

    コマンドでは、接続されていると、見ていいのでしょうか?
    接続されています。


    >SQL Server認証ですと、 sqlcmd -U ユーザー名 -P パスワード -S サーバー名\SQLExpress
    のようになります。

    指定されて内容のコマンドを入力しましたが、特にメッセージ等は、でない状態です。
    1>はSQL文の受付を待っている状態です。例えば、select top 1 * from テーブル名 でレコードが表示されるはずです。

    お使いのSQL ServerがExpressのようですので、リモートから接続するためには少し設定がいるようです。以下が参考になると思います。

    SQL Server 2005 Express Editionにリモート接続
    http://www.seosoft.net/weblog/dotnet/2005/12/sql_server_2005_express_edition.html
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年7月1日 2:19
  • 回答有難うございます。

    >1>はSQL文の受付を待っている状態です。例えば、select top 1 * from テーブル名 でレコードが表示されるはずです。

    select top 1 * from テーブル名を指定しましたが、3>と表示されるだけで、何も表示されていない状態です。 

    他に確認方法があれば、教えてください。

    >SQL Server 2005 Express Editionにリモート接続
    http://www.seosoft.net/weblog/dotnet/2005/12/sql_server_2005_express_edition.html
    指摘有難うございます。
    参考にします。
    2009年7月1日 2:34
  • select top 1 * from テーブル名を指定しましたが、3>と表示されるだけで、何も表示されていない状態です。 
    すみません。書き足りませんでした。 3>のところにgoを入力して下さい。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年7月1日 2:36
  • > 3>のところにgoを入力して下さい。
    了解しました。実行したところ、以下のメッセージが表示されました。

    メッセージ 170、レベル 15、状態 1、サーバー XXXXXX、行 1
    行 1: 'S' の近くに無効な構文があります。
    1>

    サーバ名は、大文字、小文字の区別があるのでしょうか?

    確認です。

    以上
    2009年7月1日 2:53
  • サーバー名に大文字小文字の区別はありませんが、goを入力する場面ではサーバー名は必要ありません。
    以下のような感じです。

    1>select top 1 * from テーブル名
    2>go

    以下にsqlcmdの自習書がありますので、参考の一つにされると良いと思います。

    SQL Server 2005 自習書シリーズ
    http://technet.microsoft.com/ja-jp/sqlserver/cc721623.aspx


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年7月1日 3:24
  • >以下にsqlcmdの自習書がありますので、参考の一つにされると良いと思います。

    >SQL Server 2005 自習書シリーズ
    >http://technet.microsoft.com/ja-jp/sqlserver/cc721623.aspx

    参考したいと考えています。

    sqlコマンドは、以下のように、sqlcmd -U 付近でエラーになっています。
    構文どおりに設定しえているようなのですが、エラーが発生しています。
    対応方法を教えてくだいさい。
    よろしくお願いします。

    1> sqlcmd -U sa -P xxxx -S xxx\SQLEXPRESS
    2> select top 1 * from 価格設定マスタ
    3> go
    メッセージ 170、レベル 15、状態 1、サーバー BSC0010606、行 1
    行 1: 'U' の近くに無効な構文があります。
    1>
    • 編集済み tanuyoshi 2009年7月1日 7:28
    2009年7月1日 6:10
  • まず、提示されているパスワードがリアルであれば危険ですので、削除して下さい。

    sqlcmd -U sa -P p@ssw0rd -S xxx\SQLEXPRESS

    はSQL Serverに接続するためのコマンドです。上記を実行すると初めて
    1> と表示されます。
    そして、

    1> select top 1 * from テーブル名
    2> go

    です。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年7月1日 7:18
  • >まず、提示されているパスワードがリアルであれば危険ですので、削除して下さい。
    了解しました。修正します。

    コマンドプロンプトより、sqlコマンドを実行したところ、以下のエラーがでました。

    HResult 0x274D、レベル 16、状態 1
    TCP プロバイダ : 対象のコンピュータによって拒否されたため、接続できませんでした

    Sqlcmd: エラー: Microsoft SQL Native Client: サーバーへの接続確立時にエラーが発
    生しました。接続先が SQL Server 2005 である場合は、既定の設定では SQL Server が
    リモート接続を許可していないことが原因である可能性があります。。
    Sqlcmd: エラー: Microsoft SQL Native Client: ログイン タイムアウトが時間切れにな
    りました。

    エラーを見ると、SQL Server がリモート接続を許可していないことが原因である可能性があります。
    リモート接続できるように、規定の値を変更しています。

    ファイヤオールについても、 Win XPで、参照する方に、TCP 1433,1434を受信可能に設定しています。
    WIN 2000 server側の ファイヤオールの設定が何か必要でしょうか?


    よろしくお願いします。

    以上

    • 回答としてマーク tanuyoshi 2009年7月6日 7:23
    2009年7月1日 7:35
  • コマンドプロンプトより、sqlコマンドを実行したところ、以下のエラーがでました。

    HResult 0x274D、レベル 16、状態 1
    TCP プロバイダ : 対象のコンピュータによって拒否されたため、接続できませんでした

    接続する条件がいろいろと変わっている気がします。どのような条件でどのようなコマンドを実行したら上記のエラーが出たのでしょうか? ローカルでは無事に接続できて 1> が表示されていたと少し上では書かれていましたが、これはローカルでどのようなコマンドを実行されたのでしょうか? 何をどう実行されたのかがこちらではわからないので、今の状況が掴めないでいます。


    エラーを見ると、SQL Server がリモート接続を許可していないことが原因である可能性があります。
    リモート接続できるように、規定の値を変更しています。

    ファイヤオールについても、 Win XPで、参照する方に、TCP 1433,1434を受信可能に設定しています。
    WIN 2000 server側の ファイヤオールの設定が何か必要でしょうか?
    とりあえず私が紹介したページのことは試されたのでしょうか? すぐ上でも述べましたが、試されたことを書かれないと私に限らずみなさんがアドバイスをしにくいと思います。

    さて、ファイアウォールの件ですが、SQL Server 2005 Express Editionの場合、デフォルトで動的ポートでインストールされます。
    「SQL Server 構成マネージャ」より、「SQL Server 2005 ネットワークの構成」 -> 「SQLEXPRESSのプロトコル」 -> 「TCP/IP」のプロトコルで表示されたダイアログの「IPアドレス」のIPALLのところを見てください。そこに動的に設定されたポート番号が表示されているはずです。
    固定ポートにしたければ、
    TCPポート・・・・・・・固定したいポート番号
    TCP動的ポート・・・(空白)
    にして下さい。
    そして「SQL Server 構成マネージャ」の「SQL Server 2005のサービス」で「SQL Server(SQLEXPRESS)」を右クリックして再起動して下さい。
    その後、コマンドプロンプトで、netstat -aを実行し、固定したいポート番号がリッスン状態になっていることを確認して下さい。
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    2009年7月1日 15:38
  • 説明不足で、すいません。

    >接続する条件がいろいろと変わっている気がします。どのような条件でどのようなコマンドを実行したら上記のエラーが出たのでしょう>か? 
    ファイル名を指定して実行で cmdを実行
    次に、コマンドラインに、 sqlcmd -S XXX\SQLExpress -U XXXX -P XXXXと、入力して上記エラーとなりました。

    >ローカルでは無事に接続できて 1> が表示されていたと少し上では書かれていましたが、これはローカルでどのようなコマンド>を実行されたのでしょうか? 
    このときは、ファイル名を指定して実行で sqlcmd.exeを実行
    このときにコマンドライン1>が表示されています。以下のコマンドを入力しました。

    1> sqlcmd -S XXX\SQLExpress -U XXXXX -P XXXX
    2> select top 1 * from XXXマスタ
    3> GO
    メッセージ 170、レベル 15、状態 1、サーバー XXXXX、行 1
    行 1: 'S' の近くに無効な構文があります。
    1>

    >とりあえず私が紹介したページのことは試されたのでしょうか? すぐ上でも述べましたが、試されたことを書かれないと私に限らずみなさんがアドバイスをしにくいと思います。
    了解しました。
    具体的に設定内容等を確認してみます。

    以上

    2009年7月3日 6:12
  • 説次に、コマンドラインに、 sqlcmd -S XXX\SQLExpress -U XXXX -P XXXXと、入力して上記エラーとなりました。

    アプリケーションの問題ではなく、やはりリモートからうまく接続できないようです。


    このときにコマンドライン1>が表示されています。以下のコマンドを入力しました。

    1> sqlcmd -S XXX\SQLExpress -U XXXXX -P XXXX
    2> select top 1 * from XXXマスタ
    3> GO
    メッセージ 170、レベル 15、状態 1、サーバー XXXXX、行 1
    行 1: 'S' の近くに無効な構文があります。
    1>

    sqlcmd -S XXX\SQLExpress -U XXXXX -P XXXX は、データベースに接続するためのコマンドです。うまく接続された場合、1>が表示されます。つまり、1>を出すためのコマンドとも言えます。
    しがって、提示されている
    1> sqlcmd -S XXX\SQLExpress -U XXXXX -P XXXX
    は必要ありません。
    以下の二行だけでOKです。
    1> select top 1 * from XXXマスタ
    2> GO
    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://blogs.wankuma.com/trapemiya/
    • 回答としてマーク tanuyoshi 2009年7月6日 7:23
    2009年7月3日 8:09

  • 以下の設定箇所を参照して、接続できるようになりました。

    ODBC ドライバの設定方法
    http://www.venus.dti.ne.jp/~yoshi-o/RDB/ODBC-connection.html#SQLServer%202000

    いろいろ参考意見有難うございました。

    以上
    • 回答としてマーク tanuyoshi 2010年3月5日 7:38
    2009年7月6日 7:23