• 締切済み

SQLSERVERの接続方法を教えて下さい

Visual Studio C# Windows CE環境でSQLSERVERに接続する方法を教えて頂きたいです。 System.Data.SqlClient.SqlConnection cSqlConnection = new System.Data.SqlClient.SqlConnection("接続文字列"); cSqlConnection.Open(); とすると実行時にエラーになります。

みんなの回答

回答No.2

「SQL Server 構成マネージャ」で、 ・TCP/IP ・名前付きパイプ が無効なのでは?

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

http://jeanne.wankuma.com/tips/csharp/sqlserver/open.html ・接続文字列が間違っている(SQL認証を許していないなど) ・構成マネージャ、ファイアウォールでリモート接続が許可されていない。

関連するQ&A

  • SQLで同じDBに対し2つのコネクションをもてる?

    SQLServer2005ExpressEditionとVB.NETで、ひとつのDBに対して、コネクションを2つ持つことは可能ですか?または、問題などおこりませんか? 以下のような感じでやってみたところ、両方ともに接続はできましたが、何か問題をはらんでいないかお気づきの方いらっしゃいましたらご教示いただけると助かります。 ' 接続文字列を生成する Dim stConnectionString As String = "接続情報" ' SqlConnection の新しいインスタンスを生成する (接続文字列を指定) Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString)   Dim cSqlConnection1 As New System.Data.SqlClient.SqlConnection(stConnectionString) ' データベース接続を開く cSqlConnection.Open() cSqlConnection1.Open() ' 実処理   ・   ・   ・ ' データベース接続を閉じる cSqlConnection.Close() cSqlConnection.Dispose() cSqlConnection1.Close() cSqlConnection1.Dispose()

  • VS2010 SqlServer 接続

    VisualStudio2010を使用しています。 MFCアプリケーション(DLL)化をして作成中。 言語はVC++を使っています。 下記のような構文を作成するとSYSTEMの構文でエラーになってしまいます。 エラー内容 : "定義していない識別子です"とエラー表示   CString stConnectionString; stConnectionString += "Data Source = ServerName;"; stConnectionString += "Initial Catalog = Northwind;"; stConnectionString += "Integrated Security = SSPI;"; System.Data.SqlClient.SqlConnection cSqlConnection = ( new System.Data.SqlClient.SqlConnection(stConnectionString) ); cSqlConnection.Open();   - - - 処理 - - - cSqlConnection.Close(); cSqlConnection.Dispose(); systemの定義はどのようにすればよいのか、調べてる最中です。 VBでは上手く接続できるのに、VC++では上手く接続出来ないので、説明があるようなサイトなどありましたら教えて下さい。 よろしくお願いします。

  • VB.NetでSQLServer2005に接続できません。教えてください。

    はじめまして。初めて投稿します。 かなり困っているので、誰か助けてください。 内容はVB.Net2003を使用して、SQLServer2005に接続するときに 「SSPI コンテキストを生成できません」のエラーが発生してしまいます。 SQLServer2005をインストールしているのがサーバーではなく クライアント(プログラムを実行している端末)なので、 それが原因だと思うのですが、どうしてもその環境でしなくてはいけないので 何かご存知の方がおられるのなら、ご教示お願いします。 ソースは以下のとおりです。 ↓ Dim Scn As SqlClient.SqlConnection = New SqlClient.SqlConnection '接続文字列セット Scn.ConnectionString = _ "Server=""(local)"";Integrated Security=SSPI;database=" & データベース名 'dbオープン Scn.Open() ←このタイミングでエラーが発生

  • エラーを発生させたい(SQLサーバーへの接続)

    ネットのサンプルコードでSQLサーバーの接続テストをしましたが、 存在しないSQL文でもエラーになりません。(vb2005です) Sub sqlサーバーへ接続() ' 接続文字列を生成する Dim Cn As New System.Data.SqlClient.SqlConnection Dim SQL As System.Data.SqlClient.SqlCommand Dim stConnectionString As String = String.Empty stConnectionString &= "Data Source = ××××\SQLEXPRESS;" stConnectionString &= "Initial Catalog = ×××;" stConnectionString &= "Integrated Security = SSPI;" ' SqlConnection の新しいインスタンスを生成する (接続文字列を指定) Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString) ' データベース接続を開く cSqlConnection.Open() SQL = Cn.CreateCommand SQL.CommandText = "SELECT テーブル1.あああフィールド1 FROM テーブル1" '間違ってても進んでしまう。 ' 接続に成功した旨を表示する MessageBox.Show("Microsoft SQL Server に接続されました") ' データベース接続を閉じる (正しくは オブジェクトの破棄を保証する を参照) cSqlConnection.Close() cSqlConnection.Dispose() End Sub 「あああフィールド1」なんて存在しないのに、先に進んでしまいます。 エラー処理の仕方を教えてください。 よろしくお願いします。

  • VB.netでSQLserverに接続したい

    VB2008express で SQLserver2000に接続しようとしています フォーム上で ボタンを2つ作成し button1の記述では接続できるのですが button2では接続できず タイムオーバーになります。 SqlConnectionの使い方など基本的な理解不足かと思いますが お気づきの点あればお願いします。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim DATACNN As String Dim DATAADO As ADODB.Connection DATACNN = "DRIVER={SQL SERVER};" & "SERVER=TESTSERVER;UID=sa;PWD=123;DATABASE=BD" DATAADO = New ADODB.Connection DATAADO.Open(DATACNN) MsgBox("接続1OK") End Sub Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Dim stConnectionString As String = String.Empty stConnectionString &= "Data Source =TESTSERVER;" stConnectionString &= "persist security info=True;" stConnectionString &= "Database=BD;" stConnectionString &= "user id=sa;" stConnectionString &= "password=123;"  Dim cSqlConnection As New System.Data.SqlClient.SqlConnection(stConnectionString) cSqlConnection.Open()  ’←タイムオーバーになります MsgBox("接続2OK") cSqlConnection.Close() cSqlConnection.Dispose() End Sub

  • ログインに失敗し、MicrosoftReportViewer で作成したレポートが表示できない。

    正しい接続文字列で接続しているはずなのですが、 レポートが表示されずに困っています。 皆様の知恵をお借りしたく思います。よろしくお願いします。 開発環境はVisualStudio2008、DBはSQLServer2005EXPRESSです。 目的と操作手順、ソース、エラー内容は以下になります。 MicrosoftReportViewerでレポートデザインReport1.rdlcと それを表示するためのForm2を作成しました。 Form2は、ユーザー名やパスワードを入力するForm1で 正しい接続文字列が作成され、接続に成功した時に表示されます。 Report1.rdlc作成時に、 データソース構成ウィザードのデータ接続の選択で 「接続文字列に重要情報を含めますか?」という質問には 「いいえ。重要情報を接続文字列に含めません。」を選択し、 Form1でユーザーが入力するようにします。 -------Form1 ログインフォーム------------------- private void button1_Click(object sender, EventArgs e) { // 接続文字列を生成する string stConnectionString = string.Empty;  stConnectionString += "Data Source = " + textBox1.Text + "\\" + textBox2.Text + ";";  stConnectionString += "Initial Catalog = " + textBox3.Text + ";";  stConnectionString += "UID = sa;";  stConnectionString += "PWD = " + textBox4.Text + ";";  // インスタンスを生成 System.Data.SqlClient.SqlConnection cSqlConnection = ( new System.Data.SqlClient.SqlConnectio(stConnectionString));  // データベース接続 cSqlConnection.Open();  // 接続文字列を渡す。  Form2 form = new Form2(); form.myEditData = stConnectionString; form.ShowDialog(); form.Dispose();  //接続を閉じる  cSqlConnection.Close(); cSqlConnection.Dispose(); } ---Form2 MicrosoftReportViewerで作成した、Report1.rdlcを表示 public partial class Form2 : Form public string myEditData; private void Form2_Load(object sender, EventArgs e) {   //Form1で接続確定している文字列を使用する。 string stConnectionString = myEditData;   // SqlConnection の新しいインスタンス生成する    System.Data.SqlClient.SqlConnection cSqlConnection = ( new System.Data.SqlClient.SqlConnectio(stConnectionString)); // データベース接続 cSqlConnection.Open(); (※1) // report1.rdlcをForm2に張り付けた際に自動生成されるコード // TODO: このコード行はデータを  '[DB名]DataSet.[テーブル名]' テーブルに読み込みます。   必要に応じて移動、または削除をしてください。 (※2) this.[テーブル名]TableAdapter.Fill    (this.[DB名]DataSet.T_USERLIST); this.reportViewer1.RefreshReport(); } 接続文字列が正しい&ログイン出来ているのは(※1)の行で SQL文を実行し、正常な応答があった事で確認しました。 実行すると(※2)の行でエラーが発生します。内容は、  SQL EXCEPTIONはハンドルされませんでした。  ユーザー 'sa' はログインできませんでした。 というものです。

  • 共通モジュールでDBへの接続と利用方法

    VB.net のモジュールの引数にについての質問です。 やりたい事はSQLServerへの接続およびSELCT文を実行させることです DB側へのセッションをモジュールで作成し、 それを元に、他のモジュールやクラスファイルで selectやinsertを動かしたいと思っていますが、うまくいきません 「ExecuteReader には接続が開かれていて使用可能なことが必要です。 現在の接続の状態は終了です」というエラーが出てしまいます。 おそらく戻り値のあたりがおかしいのかなと思うのですが、 解決策がわかりません。 Module Connect Dim cn As System.Data.SqlClient.SqlConnection Public Function Connection() Try cn = New System.Data.SqlClient.SqlConnection() 'SQL Server認証を利用して接続 cn.ConnectionString = _ "Data Source = " & ServerName & _ ";Initial Catalog = " & DBName & _ ";User ID = " & UserID & _ ";Password = " & password 'Windows認証を利用して接続 'cn.ConnectionString = _ ' "Data Source = " & ServerName & _ ' ";Initial Catalog = " & DBName & _ ' ";Integrated Security = SSPI" cn.Open() MessageBox.Show("接続されました") Catch ex As Exception MessageBox.Show(ex.ToString) End Try Return cn End Function End Module Public Sub ExecuteReaderTest() Try Dim cn As New System.Data.SqlClient.SqlConnection Connection() Dim hCommand As System.Data.SqlClient.SqlCommand = cn.CreateCommand() hCommand.CommandText = "SELECT ~~ " Dim cReader As System.Data.SqlClient.SqlDataReader = hCommand.ExecuteReader() hCommand.Dispose() ......

  • データベースへの接続方法(どれがよいのか?)

    VB.NETを使用して、SQLServer(2000 or 2005)やORACLE(8 or 9 or 10)に接続しようと思います。 VB.NETの場合、下記の4つの方法(私はこれしか分かりません)がある と思うのですが、どれで接続した方がよいのでしょうか? (総合的にどれがよいのかを知りたいのです) 質問が抽象的すぎて申し訳ありません。 ---------------------------------------------------------------------------------- ◎ = 推奨 ○ = まあまあ推奨 △ = あまり推奨しない × = 接続できない ? = 不明 1つ目: ADODB.Connection(SQLServer=○、ORACLE=○) 2つ目: System.Data.SqlClient.SqlConnection(SQLServer=◎、ORACLE=?) 3つ目: System.Data.OleDb.OleDbConnection(SQLServer=○、ORACLE=○) 4つ目: System.Data.Odbc.OdbcConnection(SQLServer=○、ORACLE=○)

  • SQLServer,接続失敗時のエラー処理について

    現在、VisualStudio C# にて、 接続~レコード編集のアプリを作成しております。 テキストボックスでユーザーからインスタンス名やパスワードを受け取り、接続文字列を作成。 それが正しければ接続成功…と、ここまではできています。 しかし、接続文字列が間違っていた時、 インスタンス名やパスワードが間違っていた時等 当然エラーになりますがどのようなエラー処理を記述すればよいのでしょうか? 現在VisualStudioでデバッグしているため、 自分は「error: 25 - 接続文字列が有効ではありません」 というエラー内容を参照できますが、 この「25番のエラーが起きているんだな」というのを ユーザーにどうやって伝えればよいのでしょう? 下記の★印の部分に、何かしら…Cでいうなら (DB接続関数の引数にエラー番号を持つと仮定して) if(ret =! 0){ Logprint("エラー%dによる終了",err); return 1; } として、ユーザーが接続の失敗を知ることができますがが… VisualStudio C#ではどうすればよいのか判らず困っています。 どうぞよろしくお願いします。 【現在のソース】 private void connectbutton_Click(object sender, EventArgs e)  { // 接続文字列を生成する string stConnectionString = string.Empty;   //DataSource ([サーバー名]+[インスタンス名]を連結) //サーバー名とインスタンス名の区切りは[\]でなく[\\]を挿入 stConnectionString += "Data Source = " + textBox1.Text + "\\" + textBox2.Text + ";"; //Initial Catalog (データベース名を取得) stConnectionString += "Initial Catalog = " + textBox3.Text + ";"; //UserIDは[sa]で固定 stConnectionString += "UID = s;"; //Passwordを入力し、接続文字列の最後に[;]を付ける stConnectionString += "PWD = " + textBox4.Text + ";"; // SqlConnection の新しいインスタンスを生成する System.Data.SqlClient.SqlConnection cSqlConnection =(new System.Data.SqlClient.SqlConnection (stConnectionString) ); // データベース接続を開く cSqlConnection.Open(); // 接続に成功した旨を表示する(デバッグ用 MessageBox.Show("Microsoft SQL Server に接続"); ★ //オブジェクトの破棄を保証 cSqlConnection.Close(); cSqlConnection.Dispose(); }

  • 同じPC内のSQLServerにリモート接続許可されない

    DT-PC(WindowsXP-sp2)にVisual C# 2005 Standard EditionとSQLServer2005 とSQLServer Management Studio Expressをインストールして,C#のプログラムでデバッグを実行して、SQLServerに接続しようとしたら「規定の設定がリモート接続を許可しないようになっていることがエラーの原因である可能性があります。」と通知ポップアップウィンドウに表示されるので、http://www.microsoft.com/japan/sql/ssj/tips/01.mspxを参考にして、 「ローカル接続およびリモート接続」と「TCP/IPのみを使用する」を選択し、 一度、サービスを停止した後、「開始」ボタンを押下して、Windowsファイアウォールを無効にして、下記の様にIPアドレスを直接してし、 private void button2_Click(object sender, EventArgs e) { System.Data.SqlClient.SqlConnection cn = new System.Data.SqlClient.SqlConnection(); //接続文字列を作成する cn.ConnectionString = "Data Source=192.168.30.80:139" + ";Integrated Security=True;database=Database1"; try { cn.Open(); MessageBox.Show("接続に成功しました。", "通知"); cn.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message, "通知"); } } 接続文字列を色々と書き換えてやってみましたが、どうしても先のリモート接続を許可しない・・・が表示され、SQLServer2500に接続できません。 DOSコマンドでnetstat -anを実行すると Microsoft Windows XP [Version 5.1.2600] (C) Copyright 1985-2001 Microsoft Corp. C:\Documents and Settings\yamada>netstat -an Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:135 0.0.0.0:0 LISTENING TCP 0.0.0.0:445 0.0.0.0:0 LISTENING TCP 0.0.0.0:1059 0.0.0.0:0 LISTENING TCP 0.0.0.0:3389 0.0.0.0:0 LISTENING TCP 127.0.0.1:1028 0.0.0.0:0 LISTENING TCP 192.168.30.80:139 0.0.0.0:0 LISTENING UDP 0.0.0.0:445 *:* UDP 0.0.0.0:500 *:* UDP 0.0.0.0:1035 *:* UDP 0.0.0.0:1434 *:* UDP 0.0.0.0:4500 *:* UDP 127.0.0.1:123 *:* UDP 127.0.0.1:1900 *:* UDP 192.168.30.80:123 *:* UDP 192.168.30.80:137 *:* UDP 192.168.30.80:138 *:* UDP 192.168.30.80:1900 *:* C:\Documents and Settings\yamada> のように表示されます。 先のソースは、株式会社 秀和システムの「Visuai C# 2005 逆引き大全 500 の極意」のP301のリスト2を書き換えたものです。 Cドライブのフォルダ「C#2005」に置いたACCESSへの接続は成功しますが、 ( C:\C#2005\SampleDB.mdb) Cドライブ直下に置いたSQLSqerverデータベース C:\Database1.mdf への接続は失敗してしまいます。 Windowsファイアウォールは無効に設定せず、「例外」を設定する必要があるのでしょうか。 また、現在、使用している某社のウィルスセキュリティソフトも無効に設定しなければならないのでしょうか。また、管理者権限でないと接続できないのでしょうか。 以上