none
WINDOWS 2000 Profetional でVB.NET 2005 のプログラムの接続(SQL SERVER 2005)が失敗する。 RRS feed

  • 質問

  • Windows-XP PRO 上で VB.NET 2005 + SQL SERVER 2005 DEVELOPER EDITION を用いたプログラムを開発しました。
    これを WINDOWS 2000 PROFETIONAL の クライアントPCで動かそうとすると 接続が失敗します。
    WINDOWS ドメインではないので SQL SERVER 2005 の認証でログインさせるように作成しました。
    どうしても うまくゆかないので クライアント側の環境に問題があるのかご存知のかたいらっしゃいましたら
    お願いします。

     

    WINDOWS 2000 PROFETIONAL  には 最初、ADO.net 2.0 関連のモジュールは何もしないで実行
    しましたが失敗。 ACCESS 2000 で接続すると 正常に SQL SERVER 2005 と接続でき クエリーなど
    がうまく動作できました。
    その後、MSから ADO.net 2.0 関連のモジュールをダウンロードしてインストール VB.net 2005 Express、
    SQL SERVER 2005 Express をインストールしましたが やはり失敗してしまいます。

     以下のモジュールに関数を作成し、これをWindows フォーム側から呼び出して使用しています

    Imports SQLclass = System.Data.SqlClient

    Imports VBClass = Microsoft.VisualBasic

    Imports System.Windows.Forms

    Module 共通モジュール

        Public SQL_Cnn As New SQLclass.SqlConnection(My.MySettings.Default.SSIS_TESTConnectionString)

        'Public SQL_TRAN As SQLclass.SqlTransaction = SQL_Cnn.BeginTransaction

        Public SQL_Cmd As SQLclass.SqlCommand = SQL_Cnn.CreateCommand()

        Public Dr As SQLclass.SqlDataReader

     

     

        Class UsrERR

            'エラーハンドリング system.Exception をフックして加工した結果を上位へを返す

            Inherits Exception

            Public Sub New(ByVal msg As String, ByVal InnerException As Exception)

                MyBase.New(msg, InnerException)

            End Sub

        End Class

     

        Function GetSqlQuery(ByVal QueryStr As String) As DataTable

            '指定されたSQLクエリーを実行し、結果をDatatableへ返す

     

            Dim ErMsg As String = ""

            Dim I As Integer

            Dim dt As New DataTable

     

            GetSqlQuery = New DataTable

     

            Try

                SQL_Cnn.Open()

                SQL_Cmd.CommandText = QueryStr

                Dr = SQL_Cmd.ExecuteReader

                'dt = Dr.GetSchemaTable

     

                For I = 0 To Dr.VisibleFieldCount - 1

                    dt.Columns.Add(Dr.GetName(I))  '項目名を作成する。

                Next I

     

                Dim WROW As DataRow

     

                Do While Dr.Read

                    WROW = dt.NewRow

                    For I = 0 To Dr.VisibleFieldCount - 1

                        WROW.Item(Dr.GetName(I)) = Dr.Item(I)  '1行分のデータを取得する

                    Next I

                    WROW.EndEdit()

                    dt.Rows.Add(WROW)  'Datatableへ行を追加する。

     

                Loop

     

                GetSqlQuery = dt

     

            Catch except As System.Exception

     

                ErMsg = "GetSqlQuery関数にてSQL(" & QueryStr & ")の実行に失敗しました。"

     

                Throw New UsrERR(ErMsg, except)

            Finally

                If Not (Dr Is Nothing) Then

                    Dr.Close()

                End If

                SQL_Cnn.Close()

     

            End Try

     

        End Function

    End Module

     

      

     

    2006年9月10日 7:24

すべての返信

  •  Nobnnn さんからの引用

    その後、MSから ADO.net 2.0 関連のモジュールをダウンロードしてインストール VB.net 2005 Express、
    SQL SERVER 2005 Express をインストールしましたが やはり失敗してしまいます。

    MDAC2.8を入れられたのでしょうか?
    2006年9月10日 8:27
    モデレータ
  •  trapemiya さま お世話になります。

    インストールは 以下のものを行いました。

       ①Microsoft .NET Framework 2.0 日本語 (x86) 本体
       ②Microsoft .NET Framework 2.0 SDK 日本語版 (x86)
       ③Microsoft .NET Framework 2.0 日本語 Language Pack (x86)

     ④VB.NET 2005 Express Edtion

    これらには mdac 2.8 は含まれておりませんでしょうか?
    このあたりのことはあまり理解しておりませんのでよろしくお願いします。

    2006年9月10日 8:40
  • 接続文字列を教えてください。

    あとクライアントにSQL Server Native Clientは入っていますか?

    2006年9月10日 8:45
  • 中博俊 さま お世話になります。

    接続文字列は以下の通りです。

     

    connectionString="Data Source=Mxxxx-XP;Initial Catalog=SSIS_TEST;Persist Security Info=True;User ID=sa;Password=xxxx"



      SQL SEVER NATIVE CLient はインストールしました。

      やはり、接続時にエラーがでます。 内容は下記のとおりです。

    セキュリティポリシーで許可されていない操作をアプリケーションが実行しようととしました。必要なアクセス許可をこのアプリケーションに与えるには システム管理者に連絡するか、Microsoft .NET Framework 構成ツールを使用してください。

    [続行]をクリックすると、アプリケーションはこのエラーを無視し、

     続行します。

    [終了]をクリックすると、アプリケーションは直ちに終了します。

     

    型 system.Data.SqlclientPermission, system.data

        Version=2.0.0.0 Culture=natural, Publickey Token = b77a5cxxxxxxxx

        のアクセス要求に失敗しました。 

    2006年9月10日 9:40
  • EXEファイルをローカルにコピーして実行してください。

    ちなみにSQLのエラーではありません。

    2006年9月10日 9:52
  • 中博俊さま ご返答ありがとうございます。

      EXEファイルをローカルにコピーして実行しましたところ正常に動作しました。

      エラーの内容がいまだに不明なのですが・・・・

        どうしてローカルだとうまく行くのでしょうか? セキュリティの設定を行う箇所がわかりません。
      勉強不足ですみません. また、「続行」とするとフォーム画面が表示されます。
      接続のコーディング箇所がエラーなのかと思い込んでいました。

       よろしくお願いします。

    2006年9月10日 10:56
  • いろいろとややこしいので、CASとかをキーワードに勉強してください。

    要はローカルマシンにインストールされたプログラムとネットワーク越し(ローカルエリア)ではできることが変わるのです。

    2006年9月10日 12:12
  • 中博俊 さま ご指南いただきありがとうございます。

    中博俊 さまの記事などでCASについて掲載されておりましたので一読させていただきました。
    少し、難しいですね、現状ではローカールドライブにコピーすれば解決するのでしばらくこのまま
    で使います。 Web の開発では 必須のような気がします。 理解ができましたら設定したいと
    思います。

      どうもありがとうございました。

     

    2006年9月11日 3:54