이 페이지는 기계 번역되었습니다. 영어 원본을 읽어보세요. English

IBSurgeon 라이브러리

Firebird 3을 임베디드 연결 문자열로 2.5처럼 연결하는 방법

아시다시피, 연결 문자열에 데이터베이스 경로만 지정하면(로컬호스트나 서버 이름 또는 xnet 없이) Firebird 3는 임베디드 서버로 데이터베이스에 연결합니다:

Code
C:\HQbird\Firebird30>isql -user SYSDBA d:\30test.fdb
Database: d:\30test.fdb, User: SYSDBA
SQL> set list on;
SQL> select MON$remote_protocol, mon$remote_process, mon$user from mon$attachments where mon$attachment_id=current_connection;

MON$REMOTE_PROTOCOL             <null>
MON$REMOTE_PROCESS              <null>
MON$USER                        SYSDBA

보시다시피, Firebird는 임베디드 연결의 경우 인증을 수행하지 않습니다 - 비밀번호가 없으며 MON$REMOTE_PROTOCOL은 null입니다.

인증을 포함하여 로컬 데이터베이스에 XNET 사용자로 연결하려면 표준 방법은 프로토콜로 XNET을 지정하는 것입니다.

Code
C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey xnet://d:\30test.fdb
Database: xnet://d:\30test.fdb, User: SYSDBA
SQL> set list on;
SQL> select MON$remote_protocol, mon$remote_process, mon$user from mon$attachments where mon$attachment_id=current_connection;

MON$REMOTE_PROTOCOL             XNET
MON$REMOTE_PROCESS              C:\HQbird\Firebird30.sql.EXE
MON$USER                        SYSDBA        

그러나 firebird.conf에서 프로바이더 순서를 다음과 같이 변경하면 임베디드 연결을 “금지"할 수 있습니다:

Code
Providers = Loopback, Engine12,  Remote

이 경우 비밀번호 없이 임베디드로 연결할 수 없게 됩니다. Firebird가 XNET을 사용하기 때문입니다:

Code
C:\HQbird\Firebird30>isql -user SYSDBA  d:\30test.fdb
Statement failed, SQLSTATE = 28000
Your user name and password are not defined. Ask your database administrator to set up a Firebird login.
Use CONNECT or CREATE DATABASE to specify a database
SQL>

사용자 이름과 비밀번호로 연결하는 경우에는 Firebird 2.5에서처럼 XNET으로 연결이 설정됩니다:

Code
C:\HQbird\Firebird30>isql -user SYSDBA -pass masterkey d:\30test.fdb
Database: d:\30test.fdb, User: SYSDBA
SQL> set list on;
SQL> select MON$remote_protocol, mon$remote_process, mon$user from mon$attachments where mon$attachment_id=current_connection;

MON$REMOTE_PROTOCOL             XNET
MON$REMOTE_PROCESS              C:\HQbird\Firebird30.sql.EXE
MON$USER                        SYSDBA