2017-01-26 5 views
0

私には4台のPCがあります。 2は完全セットアップSQ Server 2012セットアップ、1はデータベースセットアップ以外はすべて1、SQLセットアップはまったくありません。 3つのSQL設定は、データベース設定があるサブサーバーと呼ばれるものに接続します。 SQLがインストールされていないものは接続されず、例外がスローされます。 ここに私の接続文字列があります。 ID = sa;パスワード= Xxxx1234; OLE DBサービス= -2;初期カタログ= score_data;データソース= 192.168.9.25,1433;初期ファイル名= "";パケットサイズ= 4096;自動変換= True;サーバーSPN = "";ここで クライアントにインストールされているSQLの一部をSQL Server 2012に接続する

は私のDelphiのコードは、この文字列を作成し、

function TFrmTb2.ConnectToSqlDB(Var DataBase : TADOConnection; Catalog : String; Var Msg : ShortString) : Boolean; 
    var 
    cntStr  : String; 
    begin 
    msg := ''; 
    CntStr := DataBase.Name; 
    if not DataBase.Connected then 
     begin 
     if Not DataBase.Connected then 
      begin 
      with FrmTb2 do 
       begin //Edit ConfigHdwe2016Nw.Ini in tne Score2016NW Directory section SQL 
       CntStr := 'Provider='+ReadIniStr(IniHdwe,'SQL','Provider')+';';//SQLNCLI11.1';//SQLNCLI10.1;'; 
       CntStr := CntStr + 'Integrated Security='+ReadIniStr(IniHdwe,'SQL','Integrated Security')+';';//"";'; 
       CntStr := CntStr + 'Persist Security Info='+ReadIniStr(IniHdwe,'SQL','Persist Security Info')+';';//False;'; 
       CntStr := CntStr + 'User ID='+ReadIniStr(IniHdwe,'SQL','User ID')+';';//shithead;'; 
       CntStr := CntStr + 'password='+ReadIniStr(IniHdwe,'SQL','password')+';';//shithead;'; 
       CntStr := CntStr + 'OLE DB Services='+ReadIniStr(IniHdwe,'SQL','OLE DB Services')+';';// -2;'; 
       CntStr := CntStr + 'Initial Catalog='+Catalog+';'; 
       CntStr := CntStr + 'Data Source='+ReadIniStr(IniHdwe,'SQL','Data Source')+';';//\SQLEXPRESS;'; 
       CntStr := CntStr + 'Initial File Name='+ReadIniStr(IniHdwe,'SQL','Initial File Name')+';';//"";'; 
       CntStr := CntStr + 'Packet Size='+ReadIniStr(IniHdwe,'SQL','Packet Size')+';';//4096;'; 
       CntStr := CntStr + 'Auto Translate='+ReadIniStr(IniHdwe,'SQL','Auto Translate')+';';//True;'; 
       CntStr := CntStr + 'Server SPN='+ReadIniStr(IniHdwe,'SQL','Server SPN')+';';//""'; 
       end; 
//   ShowMessage(CntStr); 
      DataBase.ConnectionString := CntStr; 
      try 
       DataBase.Connected := True; 
       if DataBase.Connected then 
       begin 
//     ShowMessage('After Conection'); 
        result := True; 
       end 
       else 
       begin 
        result := False; 
        ShowMessage('Unable to Connect to Score2016Nw Database Bad Ip or Connection Missing1'); 
       end; 
      except 
       result := False; 
       ShowMessage('Unable to Connect to Score2016Nw Database Bad Ip or Connection Missing2'); 
      end; 
      end 
     else 
     result := True; 
     end 
    else 
     result := True; // we are still conected to the sql database 
    end; 

マイネットワーク者が火災秋のポート1433が開いていることを私に指示を接続するために使用されている(これは、ハードウェアのwirewallであると私はアクセスできません) 。サブサーバーでip2がActive = Yesであることを確認して再確認しました。 Enabled =はい。 IPアドレス= 255.255.255.0(サブネットマスク)。 TCPポート= 1433とIPALL動的ポート= ''(空白)とTCPポート= 1433.私は見つけることができるすべてのポストについて読んだだけで、クライアントにSQL Server Express 2012をインストールするだけでは、サブサーバーを開き、データベースに接続します。問題を見つけるために使用できるツールはありますか?または、すべてのクライアントにSQL Serverをインストールする必要がありますか?(痛み)

+2

「例外をスローする」と言うとき、実際にその例外が何であるか教えてください。私はそれがプロバイダを見つけることができなかったことを伝えていると推測しています。 –

+0

ShowMessage( 'Score2016Nwデータベースに接続できません。データベースに不正なIPまたは接続がありません2');私のコードでは です。 –

+1

これはあなた自身のコードによって生成されたカスタムエラーメッセージです。これは私たちには役に立たないものです。あなたは例外をキャッチしていますが、例外のメッセージを読んで、それが私たちに言うことを報告してみませんか?いずれにしても、私の答えに記述されているように、インストールされていないプロバイダ以外のあなたの質問にあなたが提供したもので正確なエラーを再現することは不可能です。 –

答えて

3

接続文字列にはSQLNCLI11が含まれています。つまり、このマシンにSQL Native Client 11をインストールする必要があります。これは、それが探しているプロバイダだからです。 SQL Serverをインストールすると、既定でSQL Native Clientもインストールされます。しかし、SQLがインストールされていないマシンでは、自分でインストールする必要があります。

代わりに、プロバイダにSQLOLEDB.1を使用して、WindowsにプリインストールされているOLE DBドライバを使用することもできます。

+0

それはダウンロードされ、SQLNCLI11ドライバとすべての作品をインストールしました。 SQLOLEDB1の問題は、DateTimeに問題があり、SQLからそれらを変換することです –

+0

@Sbossen興味深いことに、当社ではSQL OLE DBドライバを10年以上使用しており、DateTimeフィールドで**多くの**作業を行っています。あなたはどんな問題を抱えていますか? –

+0

私はADNCLI11に問題なく戻ったときに私はADTのための無効な形式を取得するADT接続を使用してSQLからdatetimeを読むとき。あなたが見つけることができる場合は、ドライバの日付が更新されていて問題がdatetimeにあったとMSからの文書がわかっていれば(上記のリンクを参照してSql Native Client 11をインストールしてください。私はDelphi XE6を使用しています –

関連する問題