web-dev-qa-db-ja.com

クラシックの接続文字列構文ADO / ODBC / Oracle 10g EZConnect

ADO(2.8)を使用し、TNSを使用しないで、さまざまなVBAプロジェクトをOracle 10gバックエンドに接続しようとしています。さまざまな試行の結果、クリーンなインストールに含まれるもの:

  1. Oracle Instant Clientをセットアップする
  2. 付随するODBCドライバをインストールします
  3. (SQL Plus経由でEZCONNECTを使用して接続をテストします)
  4. (Windows DSNを作成して接続をテストします)

ここまではすべて正常に動作します。問題は、ADO(Instant ClientODBCドライバー、my ODBCドライバーリストに "Oracle in MyTest"(引用符なし)として表示されます。MSFTODBC EZConnectを使用したドライバー この投稿 は、インスタントクライアントを設定する前よりもうまく機能しないことを示唆しています(つまり、まったくそうではありません) この投稿 は、正確にどのように記述せずに可能、そして connectionstrings.com は、文字列のデータソース部分がどのように見えるか、つまりSomeUser/SomePassword @ AServer:PortNumber/InstanceNameのみを伝えます

短いバージョン:クラシッククライアントの正確な構文は何ですかADOインスタントクライアントを参照する接続文字列ODBCドライバ?

よろしくお願いします。 SOを始めるのに愚かな長い時間を私にとりました...

10
downwitch

'user1206604の答えに似ています-ODBCデータソースアドミニストレーターを使用してODBC接続をセットアップします(たとえば、「DEMO」という名前を付けるため))、接続しますこのような:

Dim conn As New adodb.Connection
Set conn = New adodb.Connection

connStr = "Provider=OraOLEDB.Oracle;Data Source=DEMO;User Id=yourUserID;Password=yourPassword;"
conn.Open connStr

Dim api As New adodb.Recordset
Set api = New adodb.Recordset

yourQueryString = "SELECT foo FROM bar"
api.Open yourQueryString, conn, adOpenDynamic, adLockReadOnly 
'adjust above setting as needed

while not api.EOF
  'do interesting stuff here
wend

'clean up resources
api.Close
Set api = Nothing

conn.Close
Set conn = Nothing

ODBCデータソース管理者は、スタートメニュー>プログラム> Oracle-oraClient10g>構成と移行ツール> Microsoft ODBC管理者にあり、外観このような:

ODBC Data Source Administrator

4
Richard

これを試して、必要に応じて値を置き換えます。

Set Connection = CreateObject("ADODB.Connection")

blnTest = Connection.Open("Driver={Oracle in instantclient};Dbq=127.0.0.1:1521/SERVICENAMEHERE", "USERNAME", "PASSWORD")

InstantclientのOracleが機能しない場合は、HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Driversレジストリキーをチェックして、Oracle Instant Clientの値を確認してください(バージョン番号が追加されている場合があります)。

これでも問題が解決しない場合。何が起こったかの詳細をコメントに残してください。私はあなたのために答えを調整しようとします。

3
JamieSee
' Create a connection object.'
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection

' Create a recordset object.'
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

' Provide the connection string.'
Dim strConn As String
Dim str As String

'Use the SQL Server OLE DB Provider.'
strConn = "Driver=(Oracle in OraHome92);" & "Data Source=;Uid=;Pwd=;"

'Now open the connection.'
cn.Open strConn
With rs

    ' Assign the Connection object.'
    ActiveConnection = cn

    ' Extract the required records.'
    .Open "SELECT ", cn


End With
0
user1206604