トップ回答者
SQLServer2000への接続方法

質問
-
<サーバ>
Windows2000Server
SQLServer2000
<クライアント>
WindowsXPPro上記の環境でLANを構築し、LAN上でサーバのSQLServerに接続が希望です。
現在クライアントにVisualBasic2005ExpressEditionをインストールしデータベースエクスプローラにて接続文字列を確認しようとしたのですが、接続確認がうまくいきません。
データソースは「SQLClient」を指定しデータベースファイル名はネットワークを参照し「接続したいテーブル名.mdf」を指定しています。
エラーメッセージは「provider:SQLネットワークインターフェイスerror:22指定されたサーバまたはインスタンスの位置を指定している時にエラーが発生しました」と出てしまっています。解決方法を模索しているのですが、根本的にサーバにも.netFrameworkがインストールされていないと接続はできないのでしょうか?
IDやパスワードがエラーで拒否されているのかどうかなどエラーの詳細の調査の仕方もヒントを頂ければ助かります。
SQLServerの設定の不備が原因かもしれないので的確な質問ができていないと思いますが、少しずつでもヒントを頂ければ助かります。
1時間ほどしたら本屋に走る予定でもいますのでこの本を見ればVisualBasic2005とSQLServerの接続は分かるというお勧めでも助かります。
お手数ですが、初心者にお力をお貸し下さる様お願いします。
回答
-
早速の回答ありがとうございます。
説明が的確でなくてごめんなさい。
データベースエクスプローラで接続の追加という画面を出して接続確認を行っています。
この画面には入力する個所が2箇所あり
1.データソース
2.データベースファイル名
となっています。
この2番目の場所に現在は「¥¥サーバ名¥ドライブ名¥フォルダ名¥・・・・¥データベースファイル名.MDF」と
設定してあります。
この2番目の個所を訂正すればいいのでしょうか?もしかして上記の解釈で誤っていて別の場所の設定方法を教えて頂いているのでしょうか?
MDBへの接続などはデータベースファイル名を指定していたのですが、SQLServerの場合は「サーバ名」のみでいいのでしょうか?
初歩的な質問で申し訳ありませんがもう少しお付き合い下さる様お願いします。
-
回答ありがとうございます。
画面で操作して接続確認ができない事が分かったのは前進です。ありがとうございます。
もしかして接続方法はこのような方法でよいのでしょうか?
Imports System.Data.SqlClient
Private SUB Btn_Click・・・・・
dim sqlCn as New SqlConnection
dim StCn as stringstCn = ""
stCn = stCn & "data source=●●●●●;" '※●●●●●はサーバの端末名
stCn = stCn & "initial catalog=△△△△△;" '※△△△△△はテーブル名
stCn = stCn & "password=■■■■■;" '※■■■■■はパスワード
stCn = stCn & "persit security info=true;"sqlCn.ConnectionString = stcn
sqlCn.Open()
sqlCn.Close()
End Sub
上記の書式で後はSQLServerのIDとパスワードの設定で接続が出来るのでしょうか?
現在は「ユーザー●●●●●はログインできませんでした」というエラーが表示される状況です。
-
SQL Server 2000 の認証モードはどうなっているのでしょうか?
Windows 認証ですか?それとも SQL 認証ですか?
Windows 認証(現在ログインしているユーザで SQL Server へ接続する方法)の場合は、該当のユーザを SQL Server に接続できるようにしてあげる必要があります。
たとえば、ワークグループ(ローカルの SQL Server 2000)で構成されている場合で、%COMPUTERNAME%\%USERNAME% というユーザを XXXX というデータベースの所有者として接続できるようにする場合、まずクエリーアナライザーで管理者として SQL Server 2000 に接続します。
で、次に
use master
go
sp_grantlogin '%COMPUTERNAME%\%USERNAME%'
go
use XXXX
go
sp_grantdbaccess '%COMPUTERNAME%\%USERNAME%'
go
sp_grantaddrolemember 'db_owner', '%COMPUTERNAME%\%USERNAME%'
go
という風にします。
別のコンピュータに接続する場合は、同じユーザ名・パスワードを設定した Windows アカウントを作成して、別のコンピュータの名前とユーザで登録してください。
Active Directory を構成している場合は、%DOMAINNAME%\%USERNAME% で指定してください。SQL 認証の場合は
use master
go
sp_addlogin 'UserName', 'Password'
go
use XXXX
go
sp_grantdbaccess 'UserName'
go
sp_grantaddrolemember 'db_owner', 'UserName'
go
という風にします。で、実際にアプリケーションから接続する場合
Windows 認証の場合は
Data Source=%COMPUTERNAME%;Initial Catalog=XXXX;Trusted_Connection=yes;
のような形にします。SQL 認証の場合は
Data Source=%COMPUTERNAME%;Initial Catalog=XXXX;User ID=UserName;Password=Password;
のような形にします。まぁ、ここまで書けばたぶん出来るでしょうから、後はヘルプを参照してくださいね。
すべての返信
-
早速の回答ありがとうございます。
説明が的確でなくてごめんなさい。
データベースエクスプローラで接続の追加という画面を出して接続確認を行っています。
この画面には入力する個所が2箇所あり
1.データソース
2.データベースファイル名
となっています。
この2番目の場所に現在は「¥¥サーバ名¥ドライブ名¥フォルダ名¥・・・・¥データベースファイル名.MDF」と
設定してあります。
この2番目の個所を訂正すればいいのでしょうか?もしかして上記の解釈で誤っていて別の場所の設定方法を教えて頂いているのでしょうか?
MDBへの接続などはデータベースファイル名を指定していたのですが、SQLServerの場合は「サーバ名」のみでいいのでしょうか?
初歩的な質問で申し訳ありませんがもう少しお付き合い下さる様お願いします。
-
回答ありがとうございます。
画面で操作して接続確認ができない事が分かったのは前進です。ありがとうございます。
もしかして接続方法はこのような方法でよいのでしょうか?
Imports System.Data.SqlClient
Private SUB Btn_Click・・・・・
dim sqlCn as New SqlConnection
dim StCn as stringstCn = ""
stCn = stCn & "data source=●●●●●;" '※●●●●●はサーバの端末名
stCn = stCn & "initial catalog=△△△△△;" '※△△△△△はテーブル名
stCn = stCn & "password=■■■■■;" '※■■■■■はパスワード
stCn = stCn & "persit security info=true;"sqlCn.ConnectionString = stcn
sqlCn.Open()
sqlCn.Close()
End Sub
上記の書式で後はSQLServerのIDとパスワードの設定で接続が出来るのでしょうか?
現在は「ユーザー●●●●●はログインできませんでした」というエラーが表示される状況です。
-
SQL Server 2000 の認証モードはどうなっているのでしょうか?
Windows 認証ですか?それとも SQL 認証ですか?
Windows 認証(現在ログインしているユーザで SQL Server へ接続する方法)の場合は、該当のユーザを SQL Server に接続できるようにしてあげる必要があります。
たとえば、ワークグループ(ローカルの SQL Server 2000)で構成されている場合で、%COMPUTERNAME%\%USERNAME% というユーザを XXXX というデータベースの所有者として接続できるようにする場合、まずクエリーアナライザーで管理者として SQL Server 2000 に接続します。
で、次に
use master
go
sp_grantlogin '%COMPUTERNAME%\%USERNAME%'
go
use XXXX
go
sp_grantdbaccess '%COMPUTERNAME%\%USERNAME%'
go
sp_grantaddrolemember 'db_owner', '%COMPUTERNAME%\%USERNAME%'
go
という風にします。
別のコンピュータに接続する場合は、同じユーザ名・パスワードを設定した Windows アカウントを作成して、別のコンピュータの名前とユーザで登録してください。
Active Directory を構成している場合は、%DOMAINNAME%\%USERNAME% で指定してください。SQL 認証の場合は
use master
go
sp_addlogin 'UserName', 'Password'
go
use XXXX
go
sp_grantdbaccess 'UserName'
go
sp_grantaddrolemember 'db_owner', 'UserName'
go
という風にします。で、実際にアプリケーションから接続する場合
Windows 認証の場合は
Data Source=%COMPUTERNAME%;Initial Catalog=XXXX;Trusted_Connection=yes;
のような形にします。SQL 認証の場合は
Data Source=%COMPUTERNAME%;Initial Catalog=XXXX;User ID=UserName;Password=Password;
のような形にします。まぁ、ここまで書けばたぶん出来るでしょうから、後はヘルプを参照してくださいね。
-
もし、わからなければ PASSJ http://www.sqlpassj.org/ も活用していただければと思います。
PASSJ ではオフラインの勉強会もやっています。近いうちに私も講師に立つことも考えていますので、そのときはぜひ。
# SQL Server 2005 Express の開発の仕方とかって感じで考えています。