AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird RDB$SET_CONTEXT im Embedded-Modus
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird RDB$SET_CONTEXT im Embedded-Modus

Ein Thema von Morphie · begonnen am 26. Feb 2013 · letzter Beitrag vom 27. Feb 2013
Antwort Antwort
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#1

Firebird RDB$SET_CONTEXT im Embedded-Modus

  Alt 26. Feb 2013, 14:50
Datenbank: Firebird • Version: 2.5 • Zugriff über: Embedded
Hi,

kann es sein, dass die Funktion RDB$SET_CONTEXT im Embedded-Modus nicht funktioniert?
Ich habe mir folgende Procedure angelegt:
Code:
RECREATE PROCEDURE SYS$SET_CURRENT_USER (
 USERNAME VARCHAR(30))
AS
BEGIN
  RDB$SET_CONTEXT('USER_SESSION', 'SYS$CURRENT_USER', :USERNAME);
END
Wenn ich mittels TCP/IP auf die Datenbank zugreife, kann ich damit wunderbar einen Usernamen unabhängig vom Firebird-User definieren und später auslesen.

In der Embedded-Variante bekomme ich folgende Fehlermeldung:
Zitat:
Engine Error (code = 335544382):
ib_util init failed - UDF usage disabled.
At procedure 'SYS$SET_CURRENT_USER' line: 5, col: 3.

SQL Error (code = -901):
Unsuccessful execution caused by system error that does not preclude successful execution of subsequent statements.
RDB$SET_CONTEXT ist ja als UDF definiert. UDFs sind dann ja lt. Fehlermeldung im Embedded-Modus deaktiviert.

Gibt es eine Möglichkeit, auch im Embedded-Modus mit Context-Variablen zu arbeiten?
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#2

AW: Firebird RDB$SET_CONTEXT im Embedded-Modus

  Alt 26. Feb 2013, 14:59
Hört sich ein bißchen danach an, dass in deiner Embedded Distribution nicht alle benötigten Dateien inkludiert sind. Wie sieht denn deine Verzeichnisstruktur genau aus?
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#3

AW: Firebird RDB$SET_CONTEXT im Embedded-Modus

  Alt 26. Feb 2013, 15:25
Au ha, jau das war es...
Da habe ich ehrlich gesagt gar nicht dran gedacht.

Ich bekam das Problem mit Firebird Maestro, also einem Administrationstool für Firebird, welches nicht von mir ist.

Die liefern wohl einen ziemlich altes und unvollständiges FB-Embedded-Paket aus. Habe mir die aktuelle Embedded-Version heruntergeladen und die alten Dateien entsprechend ersetzt, nu geht's. Danke
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#4

AW: Firebird RDB$SET_CONTEXT im Embedded-Modus

  Alt 26. Feb 2013, 17:06
Hallo,

ich stelle jetzt einfach mal in den Raum, dass ich Embedded nicht in der Entwicklung verwende würde, sondern eine normale Serverinstallation, damit unterschiedliche Connections durch einen Server gebündelt werden. Embedded sollte eigentlich nur eine Rolle in Richtung Deployment zum Kunden spielen.

Aber das Ganze ist vermutlich Geschmackssache und da Embedded 2.5 mehrere Connections von unterschiedlichen Prozessen zur selben Datenbankdatei ermöglicht/erlaubt, wird man diesbzgl. auch etwas faul.
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#5

AW: Firebird RDB$SET_CONTEXT im Embedded-Modus

  Alt 26. Feb 2013, 17:24
Naja, eigentlich mache ich es so:
Single-User-Betrieb / Demos / USB-Stick-Version: Embedded
Multi-User-Betrieb: Server

Natürlich verwende ich für die Entwicklung auch die Server Version, allerdings muss ich das ja auch in der Embedded-Version testen, wenn ich es dem Kunden anbieten möchte. Und da hat es mich halt gerade gewundert, dass die UDFs nicht funktionieren. Das Problem trat aber wie gesagt überhaupt nicht in meinem Programm auf, sondern schon beim Datenbank-Designen.
  Mit Zitat antworten Zitat
Benutzerbild von user0815
user0815

Registriert seit: 5. Okt 2007
331 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Firebird RDB$SET_CONTEXT im Embedded-Modus

  Alt 27. Feb 2013, 07:19
Zitat:
Aber das Ganze ist vermutlich Geschmackssache und da Embedded 2.5 mehrere Connections von unterschiedlichen Prozessen zur selben Datenbankdatei ermöglicht/erlaubt, wird man diesbzgl. auch etwas faul.

Hmmm, wenn ich mich mit der Embedded arbeite (Version 2.5.1), diese mit "Database Workbench v4.3.2 Pro" öffne & dann versuche mit der Anwendung (UniDAC) auf die selbe Database zugreifen will erhalte ich nachfolgende Exception:

Code:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt TEST.exe ist eine Exception der Klasse EIBCError mit der Meldung '
I/O error during "CreateFile (open)" operation for file "C:\PROGRAMDATA\TEST\DATABASE\test.FDB"
Error while trying to open file
Der Prozess kann nicht auf die Datei zugreifen, da sie von einem anderen Prozess verwendet wird. ' aufgetreten.
---------------------------
Anhalten  Fortsetzen  Hilfe  
---------------------------
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#7

AW: Firebird RDB$SET_CONTEXT im Embedded-Modus

  Alt 27. Feb 2013, 07:30
Ja, vermutlich ein Mix aus 32-bit Embedded und 64-bit Server. Obwohl in 2.5 Verbindungen von mehreren Embedded/Server-Prozessen aus möglich ist, eine Mischung 32-bit vs. 64-bit geht nicht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz