Hallo,
ich lade Dateien (z.B. PDF) in ein Blob Feld.
Wenn die Dateien 400kB (409600 Bytes) überschreiten, kommt die Fehlermeldung:
[FireDAC][Phys][ODBC][Microsoft][ODBC SQL Server Driver]Warnung: Partielles Einfügen/Update. Das Einfügen/Update von Text- oder Bildspalte(n) war nicht erfolgreich.
Im Internet habe ich schon gefunden, dass es sich wohl um einen Bug im
ODBC handelt. Da die Meldungen aber schon alt sind, vermute ich entweder eine falsche Einstellung oder eine ungünstige Installationsumgebung meinerseits.
Vielleicht hat jemand das Problem schonmal gelöst...
Vielen Dank.
Karsten, der Kelte
Über die Management Console kann ich problemlos 1MB Dateien in den Blob speichern:
[
SQL]
INSERT INTO dePa..Dateien(Dateiname,Datei)
SELECT 'Test.pdf' AS Dateiname,
* FROM OPENROWSET(BULK N'd:\Temp\0000000005.pdf', SINGLE_BLOB) AS Datei
[/
SQL]
In Delphi funktioniert der folgende Code (zusammenkopiert) bis 400kB:
Delphi-Quellcode:
// DB Verbindung herstellen
FDConnection.DriverName :='
MSSQL';
FDConnection.LoginPrompt:=False;
FDConnection.Params.Clear;
FDConnection.Params.Add('
DriverID=MSSQL' );
FDConnection.Params.Add('
Server=' +Server );
FDConnection.Params.Add('
Database='+Datenbank);
FDConnection.Params.Add('
User_Name='+Benutzer);
FDConnection.Params.Add('
Password='+Passwort);
FDConnection.Params.Add('
LoginTimeOut=10');
FDConnection.Params.Add('
OSAuthent=No');
FDConnection.Params.Add('
Workstation='+Standard.ComputerName);
// Client PC
FDConnection.Params.Add('
ApplicationName=TestApp');
FDConnection.Params.Add('
MetaDefSchema=dbo');
FDConnection.Params.Add('
MetaDefCatalog='+Datenbank);
FDConnection.Connected:=True;
...
procedure Datei_in_DB_speichern(Dateiname,Tabelle,ID:
string;
var FDC:TFDConnection);
var
FQ_Insert:TFDQuery;
begin
if FileExists(Dateiname)
then
begin
FQ_Insert:=TFDQuery.Create(FDC.Owner);
FQ_Insert.Connection:=FDC;
FDC.StartTransaction;
try
FQ_Insert.SQL.Text := '
update '+Tabelle+'
set Datei=:blobdata where ID=:IDval';
FQ_Insert.ParamByName('
IDval').AsString:=ID;
FQ_Insert.ParamByName('
blobdata').LoadFromFile(Dateiname,ftBlob);
FQ_Insert.ExecSQL;
FQ_Insert.Disconnect;
FDC.Commit;
except
FDC.Rollback;
raise;
end;
FQ_Insert.Destroy;
end;
end;
Installierte Software:
Microsoft
ODBC Driver 11 for
SQL Server 12.1.4100.1
Microsoft
SQL Server 2012 Native Client 11.1.3000.0
Microsoft
SQL Server 2014 12.1.4100.1
Microsoft
SQL Server Management Studio 12.0.4100.1
Microsoft Analysis Services-Clienttools 12.0.4100.1
Office 2013 x64 (mit
Access) 15.0.4569.15.06
Access Engine 2010 x32 14.0.6029.1000 (Deinstallation ohne Erfolg)
Microsoft Data
Access Components (
MDAC) 6.3.9600.17415
Microsoft
MSXML 3.0 4.0 5.0 6.0
Microsoft Internet Explorer 9.11.9600.17842
Microsoft .NET Framework 4.0.30319.34209
Betriebssystem 6.3.9600
Ich programmiere mit Delphi XE8, Firemonkey, FireDAC.