Firebird 3을 임베디드 연결 문자열로 2.5처럼 연결하는 방법
아시다시피, 연결 문자열에 데이터베이스 경로만 지정하면(로컬호스트나 서버 이름 또는 xnet 없이) Firebird 3는 임베디드 서버로 데이터베이스에 연결합니다:
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을 지정하는 것입니다.
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에서 프로바이더 순서를 다음과 같이 변경하면 임베디드 연결을 “금지"할 수 있습니다:
Providers = Loopback, Engine12, Remote
이 경우 비밀번호 없이 임베디드로 연결할 수 없게 됩니다. Firebird가 XNET을 사용하기 때문입니다:
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으로 연결이 설정됩니다:
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