Entwickler-Ecke

Datenbanken - Connection zur Laufz. funktioniert nicht nach Migration XE


delphianer - So 13.03.11 14:51
Titel: Connection zur Laufz. funktioniert nicht nach Migration XE
Hallo miteinander,

ich befinde mich wahrscheinlich auf einem Holzpfad.

Ich bin vor kurzem mit dem Projekt von Delphi 2007 nach Delphi XE umgezogen. Vor dem Umzug hatte ich keine Probleme eine flexible Verbindung zum SQL-Server aufzubauen. Seit der Umstellung funktioniert es jedoch nicht mehr. Befinde ich mich in der IDE kann ich ohne Probleme Connected auf True setzen und bin auch dann mit der Datenbank verbunden.
Zur Laufzeit jedoch klappt es nicht, sondern es kommt die Meldung, dass die Library nicht geladen werden konnte.

Ziel:
Ich versuche mich mit einer Datenbank zu verbinden, die der Nutzer definieren kann durch den Dialog "DBConnect".

Event BeforeConnect:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
PROCEDURE TDMPCCDB.SQLCBeforeConnect(Sender: TObject);
  BEGIN
    IF DBConnect.Execute THEN BEGIN
      SQLC.Params.Clear;
      SQLC.Params.Append('SchemaOverride=%.dbo');
      SQLC.Params.Append('DriverUnit=DBXMSSQL');
      SQLC.Params.Append('DriverPackageLoader=TDBXDynalinkDriverLoader,DBXCommonDriver150.bpl');
      SQLC.Params.Append('DriverAssemblyLoader=Borland.Data.TDBXDynalinkDriverLoader,Borland.Data.DbxCommonDriver,Version=15.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
      SQLC.Params.Append('MetaDataPackageLoader=TDBXMsSqlMetaDataCommandFactory,DbxMSSQLDriver150.bpl');
      SQLC.Params.Append('MetaDataAssemblyLoader=Borland.Data.TDBXMsSqlMetaDataCommandFactory,Borland.Data.DbxMSSQLDriver,Version=15.0.0.0,Culture=neutral,PublicKeyToken=91d62ebb5b0d1b1b');
      SQLC.Params.Append('GetDriverFunc=getSQLDriverMSSQL');
      SQLC.Params.Append('LibraryName=dbxmss.dll');
      SQLC.Params.Append('VendorLib=sqlncli10.dll');
      SQLC.Params.Append('MaxBlobSize=-1');
      SQLC.Params.Append('LocaleCode=0000');
      SQLC.Params.Append('IsolationLevel=ReadCommitted');
      SQLC.Params.Append('PrepareSQL=True');
      SQLC.Params.Append('Prepare SQL=False');
      SQLC.Params.Append('BlobSize=-1');
      SQLC.Params.Append('ErrorResourceFile=');
      SQLC.Params.Append('DelegateConnection=DBXPool');
      SQLC.Params.Append('DBXPool.MaxConnections=20');
      SQLC.Params.Append('DBXPool.MinConnections=1');
      SQLC.Params.Append('DBXPool.ConnectTimeout=1000');
      SQLC.Params.Append('DBXPool.DriverUnit=DBXPool');
      SQLC.Params.Append('DBXPool.DelegateDriver=True');
      SQLC.Params.Append('DBXPool.DriverName=DBXPool');
      IF DBConnect.cxRBWindows.Checked
       THEN SQLC.Params.Append('OS Authentication=True')
        ELSE SQLC.Params.Append('OS Authentication=False');
      SQLC.Params.Append('HostName=' + DBConnect.cxTEServer.Text);
      SQLC.Params.Append('Database=' + DBConnect.cxTEDatabase.Text);
      SQLC.Params.Append('User_Name=' + DBConnect.cxTEUser.Text);
      SQLC.Params.Append('Password=' + DBConnect.cxTEPassword.Text);
    END;
  END;


Bereits getane Schritte:
- neue DBX-Dlls aus BIN in den Projektordner kopiert
- neue DBX-Dlls aus BIN nach SYSTEM32 kopiert
- native Client von MS SQL installiert

Hat jemand eine Idee?

Moderiert von user profile iconMartok: Quote- durch Delphi-Tags ersetzt


jaenicke - So 13.03.11 15:17

Nimm einfach einmal den Process Monitor und schau nach wo die Bibliothek gesucht wird. ;-)

Ich sehe gerade das cx-Prefix bei cxTEServer usw.: Das sind ja vermutlich keine Standardkomponenten, kann es sein, dass es dort ein Problem mit Unicode gibt?