Tôi muốn kết nối với Oracle (11g) bằng cách sử dụng unixODBC
. Tôi muốn chuỗi kết nối CHỈ để chỉ định tất cả thông tin cơ sở dữ liệu/nguồn dữ liệu và các tệp ODBC INI (/etc/odbc.ini
và /etc/odbcinst.ini
) để chỉ chứa thông tin trình điều khiển chung giống như nơi tìm '.so' v.v. nghĩa là tôi muốn chúng tĩnh. Tôi muốn làm điều này để tôi có thể lấy chuỗi kết nối từ người dùng bên ngoài và kết nối với nguồn dữ liệu mà không phải sửa đổi bất kỳ tệp INI nào hoặc bất kỳ cấu hình nào khác trên đĩa.unixODBC/Oracle: Làm cách nào để chỉ định tất cả thông tin nguồn dữ liệu trong chuỗi kết nối CHỈ và không có trong tệp odbc * .ini
Tất cả các ví dụ tôi thấy làm cho tôi xác định các thông tin máy chủ trong /etc/odbc.ini
như thế này:
[myDSNname]
Driver = OracleODBC-11g
DSN = OracleODBC-11g
ServerName = //xxx.xxx.xxx.xxx:1521/SID_NAME
UserID = my_user
Password = my_pass
Bây giờ, tôi đã tìm ra cách để có được UserID và mật khẩu ra vào chuỗi kết nối bằng cách thêm "UID=my_user;PWD=my_pass"
để kết nối và tôi đã xóa chúng khỏi odbc.ini
. Niềm vui của tôi nhanh chóng trôi qua khi tôi không thể tìm cách để có được ServerName
trong số odbc.ini
và vào chuỗi kết nối. Vì vậy, làm thế nào để tôi làm điều này? Và có cách nào để loại bỏ DSN trong odbc.ini
hoàn toàn không và chỉ có Driver
từ odbcinst.ini
trong chuỗi kết nối, như chúng ta đang làm cho MySQL?
Edit: Cố gắng bất kỳ chuỗi kết nối từ www.connectionstrings.com rằng dường như không đòi hỏi TNS hoặc một DSN, incliuding EZCONNECT
biến, tất cả cho tôi:
[HY000] [unixODBC][Oracle][ODBC][Ora]ORA-12162: TNS:net service name is incorrectly specified
(12162) (SQLDriverConnectW)
http://www.connectionstrings.com/oracle#p17 –
@Brian - nope, tôi không thể nhận được bất kỳ của những người làm việc. Tôi luôn nhận được: '[HY000] [unixODBC] [Oracle] [ODBC] [Ora] ORA-12162: TNS: tên dịch vụ mạng được chỉ định không đúng' –
Không sử dụng biến thể tên tns và/hoặc đảm bảo bạn có nhập vào tệp tên tns của bạn. –