• ベストアンサー

MDBからSQLSVに変更したい

VS.NET2005(ASP.NET),MSDE2000使用の、初心者です。 MDBへの接続から、SQLSVにしたいと思います。SQLSVに、 テーブルとComputerID\ASPNETのログインをつくり、sysadminと Database role membershipを与えていますが、 以下のcon.open() で「権限の指定が正しくありません」が 出てしまいます。どのようにすれば、接続できますでしょうか。 Dim con As New OleDbConnection(ConfigurationSettings.AppSettings(strConnectionString)) Dim cmd As New OleDbCommand(strQuery, con) con.Open() ' Return cmd.ExecuteReader(CommandBehavior.CloseConnection) End Function web.config <appSettings> <!-- <add key="conStringFaq" value="PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=C:\webdb\faq.mdb"/> --> <add key="conStringFaq" value="PROVIDER=SQLOLEDB;Data Source=ComputerID\VSNET;Initial Catalog=VSNET"/>

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

  • ベストアンサー
回答No.1

お世話になります。 OleDbConnection でやられているのでしょうね。 余裕があるのであれば、 SqlClient.SqlConnection の方が パフォーマンスが向上しますので 変えられる事をオススメします。 認証についてですが、 Windwos 認証のままでやるのであれば、 ユーザーの偽装をしたらいかがでしょうか。 接続文字列はこちらを参照下さい。 http://www.connectionstrings.com/

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;306158
tomiyamax
質問者

お礼

naganaga_001さん。ご回答ありがとうございます。 おかげさまで接続できました。 初心者で、雑誌のソースコードを少し変えて勉強するのが 精一杯の状態ですが、ご指摘のことを少しずつ 学びたいとおもいます。ありがとうございました。

その他の回答 (1)

  • NOBNNN
  • ベストアンサー率50% (93/186)
回答No.2

vs2005はデータセットデザイナでDBの接続や構成をおこないます。 VB.NEt 2005 のメニュー(ファイル/編集/・データ)のデータ・新しいデータ接続を実行します。データベースのアイコンをクリックします。ウイザードの指示に従うだけで接続のストリングが作成されます。 いちいちプログラムで記述しなくても共通変数としてアプリケーション に登録されます。登録場所はメニューバーのプロジェクト・プログラムのプロパティの設定の中に保存されています。 VB中からは my.Settings.ほにゃららDBConnectionString で参照できます。 変更する場合はこの設定タブのほにゃららDBConnectionString の[・・]のところをクリックすると接続の画面が表示されます。 これらの操作を行うにはあらかじめデータベースを作成しておく必要が あります。 MSDE2000にしたいとのことですが 現在のバージョンは SQL Server 2005 Express が無償でダウンロード できます。 6ヶ月間、無償で試験用に使える  「SQL Server 2005 Enterprise Edition 180 日間 限定評価版」 期間は無期限で使用できますがあくまで個人でのテストに限定した 「SQL Server 2005 Developere Edition」 市場価格で5000円 から6000円くらいです。機能も制約はありません。 SQL Server 2005 Enterprise Edition」と同じです。 簡単にMDBのデータベースをインポートするには上記のうち GUIツールが使える 「SQL Server 2005 Enterprise Edition 180 日間 限定評価版」 あるいは 「SQL Server 2005 Developere Edition」 で操作を行ったほうが簡単です。 「SQL Server Management Studio」でデータのインポートウイザード に従うだけでできます。 もし、ACCESS 2000 以降のバージョンをお持ちでしたら新規作成でプロジェクトを作成し、ACCESS のインポートのウイザードでできます。 どうしてもMSDE 2000 で操作する場合は OSQl コマンドでの操作となります。 いずれにせよSQLサーバーへの認証の設置が必要でWindows 認証またはSQL サーバーのログインアカウントを使ってログインするのかを選択します。 Windows 認証にした場合はSQL サーバーをインストールしたマシンのWindowsのアカウント登録がされていないとログインできません。この辺りを注意して設定してください。

tomiyamax
質問者

お礼

NOBNNNさん。回答ありがとうございます。 Windows認証と、SQL Server認証、それにASPNETユーザーなど いまいち正しく理解していませんが、Integrated Security=SSPI; を接続文字列に入れたら接続できるようになりました。 これはWindows認証と理解しています。 SQL Server 2005 Developer Editionは、昨日手にいれましたので 今後はこちらを使用していきたいと思います。 ありがとうございました。

関連するQ&A

  • VB.NET、mdbに新しいデータを追加したい

    超初心者で申し訳ありません。下のプログラムにおいてオペレータ名が一致する場合には 更新(UPDATE)する。一致するデータが無い場合には新規登録を行いたいのですが どのように書いたらいいのかさっぱりでNETを相当探したのですが回答が見つかりません。 お手数ですがどなたか助けていただけませんでしょうか。なお、一致する場合には 更新(UPDATE)は動作するようになりました。 VBを始めて2ケ月になります。Microsoftの文献を見ても難しくてまだ理解できるレベルに達していません。どなたか、よろしくお願い致します。 「データ構造」 ID          integer オペレータ名   string ランク       integer パスワード    string 補足       string Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click '■■■■■■■■■■■■■■■■■■■■■■■■ '■■■   オペレータの新規/更新登録   ■■■  '■■■■■■■■■■■■■■■■■■■■■■■■ '----------------------------------------------------------- 'コネクションを作成 Dim CurrentDir As String = System.IO.Directory.GetCurrentDirectory() Dim cn As New OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & CurrentDir & "\operator.mdb" '**************** コマンドを作成 **************** Dim OPE As String Dim PWORD As String Dim HOSOKU As String Dim RANK As Integer OPE = オペレータ名.Text RANK = ランク.Text HOSOKU = 補足.Text PWORD = パスワード.Text Dim cmd As New OleDbCommand( "UPDATE table1 " & "SET ランク = ? " & "," & "パスワード = ? " & "," & "補足 = ? " & " WHERE オペレータ名 = ? ", cn) '************** パラメータを作成 **************** cmd.Parameters.Add("ランク", OleDbType.Integer).Value = RANK cmd.Parameters.Add("パスワード", OleDbType.Char).Value = PWORD cmd.Parameters.Add("補足", OleDbType.Char).Value = HOSOKU cmd.Parameters.Add("オペレータ名", OleDbType.Char).Value = OPE '実行 cn.Open() cmd.ExecuteNonQuery() '-------------------------- Dim COUNTC As Integer COUNTC = cmd.ExecuteNonQuery()   '************************************ elseの中に簡単に記載すのって難???*** If COUNTC > 0 Then MessageBox.Show("更新 完了")     Else 'INSERTの手順       ’★ ここにmdbの中に 項目値 OPE、RANK、HOSOKU、PWORDを挿入(追加)        する命令を入れたい。   '実行 cmd.ExecuteNonQuery() End If ’********************************** '-------------------------- cn.Close() End Sub

  • <>&などを保存する方法をおしえてください。

    <>&などを保存する方法をおしえてください。 NameTextBox CommentTextBox 保存ボタン があり保存ボタンを押すと 下記コードが実行されるようにしました。 これで、保存はできるようになったのですが <>&などを使用するとエラーとなってしまします。 <>&を使用するにはどのようにしたらいいのでしょうか? 教えてください。 Dim strSQL As String = "INSERT INTO tableA (Name,Comment) VALUES (@Name,@Comment)" Using con As New SqlConnection(conStr) Dim command As New SqlCommand(strSQL, con) con.Open() Using cmd1 As SqlDataReader = con.CreateCommand() cmd1.CommandType = CommandType.Text Try with cmd1 .Parameters.Add("@Name", SqlDbType.NVarChar) .Parameters.Add("@Comment", SqlDbType.NVarChar) .Parameters("@Name").Value = NameTextBox .Parameters("@Comment").Value = CommentTextBox End With cmd1.CommandText = strSQL cmd1.ExecuteNonQuery() Catch er As Exception Finally con.Close() Catch ex As Exception Finally con.Close() End Try End Using End Using

  • .NET MDBデータベース更新について質問です

    DataGridViewで表示するところまでできたのですが DataGridView上で編集したものを更新ボタンで MDBデータベースに上書き保存という形で 行いたいのですがいろいろ調べてもわかりませんでした。 VBを初めて日が浅いのでこつこつ勉強中なのですが 業務上の都合でDBの作成を行っています。 基本的に書き直したもの 'データベース取得 Dim Cn As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=保存場所" ) Dim Cm As OleDbCommand = Cn.CreateCommand Dim Adapter As New OleDbDataAdapter(Cm) Dim Table As New DataTable Cn.Open() Cm.CommandText = "SELECT * FROM Aテーブル" Adapter.Fill(Table) DataGridView1.DataSource = Table DBにはこのように接続しております。 ここまでも手探りで行ったので熟練の方から見ればへんかもしれませんが指導おねがいします。

  • VB2005でMDBに接続方法

    お世話になります。 VB2005でアクセスに接続したいのですが、 よく理解できません。 こんな感じで、ネットで見たのを 記述したのですが、なんかエラーになります。 VB6みたいに参照設定が必要なのでしょうか? (記述例) Dim Cn As New OleDbConnection  ↑で警告?になる。 ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\データ.mdb") Dim SQLCm As OleDbCommand = Cn.CreateCommand ↑参照コンポーネントがみつかりませんでした。 と怒られます。 宜しくお願いいたします。

  • エクセル側からアクセスへデータ転送

    エクセル側からアクセスにデータ転送する時に Sub Data_Add() Dim db As New ADODB.Connection Dim Rs As New ADODB.Recordset db.Open _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\Users\Owner\Desktop\1.mdb;" アクセス2003にデータを転送する場合はこれでうまくいきましたが、 アクセス2007にデータを転送しようと、 \1.accdb;"とすると、データベースの形式を認識できません。となってしまいます。 どうしたらいいでしょうか? だれか教えて頂けませんか?

  • ADO.NETのDataSetのコピー

    ADO.NETでsdfファイルからmdbファイルへテーブル(TBL1)を移行させたいと思っています。 以下のようなコードでDataSetをコピーできないか試しましたが、移行できません。 sdf、mdbともテーブルのカラムの構造は同一です。 mdbの方にはレコードが空のテーブルが用意してあります。 何が間違っているのでしょうか?お教えいただけると助かります。 SDF Dim con As SqlCeConnection = DBUtility.GetConnection() con.Open() Dim strSQL As String strSQL = "select * from TBL1" Dim adapter As SqlCeDataAdapter = _ New SqlCeDataAdapter(New SqlCeCommand(strSQL, con)) con.Close() Dim ds1 As DataSet = New DataSet() adapter.Fill(ds1, "TBL1") Dim con2 As OleDbConnection = DBUtility.GetOLEConnection() con2.Open() 'MDB Dim strSQL2 As String strSQL2 = "select * from TBL1" Dim adapter2 As OleDbDataAdapter = _ New OleDbDataAdapter(New OleDbCommand(strSQL2, con2)) Dim ds2 As DataSet = New DataSet() ds2 = ds1.Copy Dim cb As OleDbCommandBuilder = New OleDbCommandBuilder(adapter2) adapter2.Update(ds2, "TBL1")

  • Insertできません

    どうしてもInsertできませんどこが間違っているのか教えてください。 Dim cn As New SqlConnection("workstation id=""ユーザー名?"";packet size=4096;user id=test;data source=server名;per" & _ "sist security info=True;initial catalog=テーブル名;Password=パスワード") Dim cmd As New SqlCommand("カラム1", cn) cmd.CommandType = CommandType.StoredProcedure 'cnst.CommandText = "INSERT INTO テーブル名(カラム1, カラム2, カラム3,カラム4) " & _ '"VALUES (@カラム1, @カラム2, @カラム3,@カラム4())" Dim p1 As SqlParameter = cmd.Parameters.Add("@カラム1", SqlDbType.VarChar, 20) p1.Value = TextBox1.Text Dim p2 As SqlParameter = cmd.Parameters.Add("@カラム2", SqlDbType.VarChar, 20) p2.Value = TextBox2.Text Dim p3 As SqlParameter = cmd.Parameters.Add("@カラム3", SqlDbType.VarChar, 20) p3.Value = Dropdownlist1.DataTextField Dim p4 As SqlParameter = cmd.Parameters.Add("@カラム4", SqlDbType.VarChar, 20) p4.Value = TextBox3.Text cn.Open() cmd.ExecuteNonQuery() cn.Close() SqlDataAdapter2.Fill(DataSet21) DataGrid1.DataBind() End Sub __________________________________________ __________________________________________

  • VBAからaccessへの接続で、RecordsetのCursorTypeが勝手に変更される

    エクセルVBAからaccessへの接続で、RecordsetのCursorTypeが勝手に変更されてしまいます。 Dim rst As New ADODB.Recordset rst.CursorType = adOpenStatic と「adOpenStatic」に設定したいのですが、 Set rst = con.Execute(sql_str, , adCmdText) のようにクエリを実行した直後にCursorTypeを調べると、「adOpenForwardOnly」に変わってしまっています。 (設定直後に調べると、ちゃんとadOpenStaticになっています) 「CursorType」を何に設定しても、Execute直後に「adOpenForwardOnly」になってしまっていまうようです。 CursorTypeをadOpenStaticにして、RecordCountを使いたいのですが、、、 CursorTypeが変わってしまう原因をお知りの方は、教えていただけるとありがたいです。 Dim rst As New ADODB.Recordset Dim con As New ADODB.Connection con.Open "Provider=Microsoft.jet.OLEDB.4.0;" & "Data Source=" & ThisWorkbook.Path & "\" & mdb_file & ";" rst.CursorType = adOpenStatic rst.LockType = adLockReadOnly MsgBox "前 = " & rst.CursorType Set rst = con.Execute(sql_str, , adCmdText) MsgBox "後 = " & rst.CursorType

  • MDBテーブルへの追加変更を教えてください

    いつもお世話になってます。VB2005の初心者の質問です。 データの変更頻度が少ないのでMDBテーブルをDataGridViewの表示させて行の状態から追加変更したいのですが肝心な部分がわかりません。 DB名=NO.MDB テーブル名=番号 (IDNO、addres、TELNO の3項目です) Private Sub 更新_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 更新.Click Dim dSet As DataSet = New DataSet("番号") Dim cn As OleDb.OleDbConnection =   NewOleDb.OleDbConnection( _ "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=NO.mdb;") Dim dRow As DataRow Dim dTbl As DataTable Dim i As Integer dTbl = DataGridView1.DataSource For i = 0 To dTbl.Rows.Count - 1 If dTbl.Rows(i).RowState = DataRowState.Added Then MessageBox.Show(i, "件目") →デバック表示です ??????? Addedならレコードの追加をしたいです End If Next End Sub ご回答よろしくお願いいたします。

  • レコードの削除

    VB6.0 ACCESSで開発しています。 t_nyukoテーブルのデータを全て削除するのは下記のように 出来たのですが dataGridに表示されているものを1つ選択し 選択されたものだけ削除したいのですがどうすればいいのでしょうか? よろしくお願いします。 Private Sub Command1_Click() Dim cn As New ADODB.Connection Dim cmd As ADODB.Command Dim cat As New ADODB.Command Dim strSQL As String   Set cn = New ADODB.Connection cn.ConnectionString = _ "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\temp\db2.mdb" cn.Open cat.ActiveConnection = cn strSQL = "DELETE FROM t_nyuko " Set cmd = New ADODB.Command cmd.ActiveConnection = cn cmd.CommandText = strSQL cmd.Execute cn.Close Set cmd = Nothing Set cn = Nothing Set cat = Nothing End Sub

専門家に質問してみよう