Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Feldmengen-Begrenzung bei der Datenübergabe nach SQL

Frage Entwicklung Java

Mitglied: ProTec-Lejo

ProTec-Lejo (Level 1) - Jetzt verbinden

24.01.2007, aktualisiert 05.02.2007, 4001 Aufrufe, 6 Kommentare

Hallo,

wir arbeiten bei uns schon seit längerer Zeit mit einem eigens entwickelten Java-Programm (Sun).

Das Programm hat folgende Funktion:
- Wir lesen damit Dateien von unseren Prüfgeräten aus.
- Während dem Einlesen vergleichen wir diese mit den Datenbeständen (MS-SQL Datenbank).
- Nach Abgleich mit der SQL-DB werden die Datensätze in einer Tabelle am Bildschirm angezeigt.
- Die angezeigten Datensätze können bedingt manipuliert werden
um danach in die SQL-DB übertragen zu werden.
- Nach der Übertragung werden die Daten von einem in C geschriebenen Programm weiterverarbeitet.

Java-Bildschirmmaske:
Die angezeigten Datenfelder überschreiten zwischenzeitlich mehr als 220 Felder.
Anm.: Die Bildschirmmaske bzw. Tabelle ist dyn. aufgebaut.

Problem:
Sowie mehr als 220 Felder vorhanden sind funktioniert die Übertragung nicht mehr.

Problemlösung:
Wie können wir sicher stellen, dass zukünftig auch mehr als die begrenzte Feldanzahl
übertragen wird?
Es geht nicht um ein paar mehr - es können in der Zukunft schon so annähernd 1.000 Felder werden!
Und es geht auch nicht darum die Daten gesplittet einzulesen (also Blocks mit weniger als 220).
Es geht uns vielmehr darum, dass ohne erneutes zutun, alle Felder von 10 bis 1.000 in einem rutsch
übertragen werden. Die Betonung liegt auf ohne weiteres zutun des Anwenders!!

Über Tipps und Anregungen würden wir uns freuen

mit freundlichen Grüssen
Achim und Niko
(die verzweifelten Programmierer)
Mitglied: AndreasHoster
29.01.2007 um 09:51 Uhr
Endlich mal eine lange Beschreibung und auch in fehlerfreiem Deutsch. Sieht man ja ansonsten eher selten

Aber die genaue Fehlerbeschreibung ist trotzdem etwas kurz.
<... funktioniert die Übertragung nicht mehr> bedeutet was?
Werden nur die ersten Felder übertragen, der Rest nicht, gibts Fehlermeldungen (und wenn ja, welche) etc?
Welche SQL Server Version, welche JDBC Version?
Kommt man über die Begrenzungen des SQL Servers? (Bei SQL 2000: 1024 Spalten und was wichtiger ist: Maximale Zeilenlänge: 8060 Bytes).
Dabei ist es nämlich möglich mit varchar 1000 Spalten mit jeweils max. 200 Zeichen zu erstellen, nur beim Einfügen der Werte gibts Fehler, falls es mehr als 8060 Bytes werden.
Bitte warten ..
Mitglied: ProTec-Lejo
29.01.2007 um 14:06 Uhr
Hallo Andreas,

ja, ja, das mit dem fehlerfreiem Deutsch ... und es wird immer wieder gern die Ausrede "... neue deutsche Rechtschreibung" genommen.

Fehlerbeschreibungsergänzung:
Sowie die Feldanzahl von 220 überschritten wird funktioniert die Übertragung generell nicht.
Übertragungsablauf:
Die Übertragung, wenn sie funktioniert, erkennt man daran, dass sich im unteren Bereich mit Fortschreitung der Datenübergabe ein blauer Balken aufbaut.
Die Übertragung, wenn sie nicht funktioniert, erkennt man daran, dass sich kein blauer Balken aufbaut und unmittelbar sich das Übertragungsfenster wieder schliesst.

Fehlermeldung:
Keine

SQL-Server:
MS SQL 2000 inkl. aller aktuellen Update´s

JDBC:
Java 2 SDK, SE v1.4.2_04

Sofern Du mit den Infos nicht klar kommst müsste ich tiefergehende Informationen vorab mit meinem Kollegen abklären da er sich wesentlich tiefer in die Materie eingearbeitet hat.

Gruss Achim
Bitte warten ..
Mitglied: ProTec-Lejo
29.01.2007 um 14:50 Uhr
Antwortergänzung:

Aufgrund der zu verarbeitenden Datenmenge ist meines erachtens das Problemdie nicht im SQL- sondern eher im HTML-Bereich angesiedelt.

Gruss Achim
Bitte warten ..
Mitglied: AndreasHoster
29.01.2007 um 15:07 Uhr
Ich bräuchte es etwas spezifischer mit dem Fehler. Der blaue Balken ist ja nicht sehr aussagekräftig. Und das mit dem Deutsch war ein Lob und keine Kritik. Viele verzichten ja komplett auf Groß und Kleinschreibung und Satzzeichen und hier war es sogar schön aufgebaut mit unterstrichenen Überschriften etc.

Habt Ihr das programmiert?
Wenn ja, könnte man den Fehler mit try / catch abfangen und einen Stack Trace ausgeben?
Oder gibts irgendein Log, wo mehr drinsteht?
Oder wie groß sind denn die einzelnen Spalten? Kommen wir eventuell bei mehr als 220 Spalten in den Bereich der 8060 Bytes maximal pro Zeile?

Ohne richtige Fehlermeldung bleibt das halt ein Gestochere im Nebel.
Bitte warten ..
Mitglied: ProTec-Lejo
31.01.2007 um 10:35 Uhr
Hallo,

ja das mit dem Deutsch und dem Lob hatte ich schon so verstanden.


Habt Ihr das programmiert? JA

Wenn ja, könnte man den Fehler mit try / catch abfangen und einen Stack Trace ausgeben?
Oder gibts irgendein Log, wo mehr drinsteht? ES WIRD KEINE FEHLERMELDUNG AUSGEGEBEN

Oder wie groß sind denn die einzelnen Spalten? ZWISCHEN 5 und 200 ZEICHEN

Kommen wir eventuell bei mehr als 220 Spalten in den Bereich der 8060 Bytes maximal pro Zeile? SPALTENGRÖSSENMÄSSIG NEIN; FELDINHALTSMÄSSIG NEIN; Anm.: Bei allen Spalten und Zeilen, sofern 220 Felder insgesamt überschritten werden kann auch die Byte-Grenze überschritten werden.

Problemlösungsansatz?
Sofern es denn an der Bytegrenze liegen sollte, wie kann ich dieses Problem so angehen, dass die Datenübergabe für den Anwender in einem Rutsch funktioniert?

Zurück zur Frage bei mehr als 220 Spalten...:
Pro Zeile werden 10 und es sollen in Zukunft 18 Spalten werden.
Die Tabelle ist so programmiert, dass mit jedem vorhandenen Datensatz eine Zeile erzeugt wird, eben dyn..

Gruss Achim
Bitte warten ..
Mitglied: Alfredus
05.02.2007 um 15:28 Uhr
Oder gibts irgendein Log, wo mehr drinsteht? ES WIRD KEINE FEHLERMELDUNG AUSGEGEBEN

Hmmm...Das glaube ich erstmal so nicht. ;) Nimm das Problem-Statement und gib es mal direkt auf der SQL-Konsole ein. Vielleicht ist der MS-SQL-Server geschwätziger als der Treiber.

Bei den meisten JDBC-Treibern kann man im Verbindungstring noch ein extra Logging einschalten. Bei MS-SQL habe ich es nicht im Kopf, aber prinzipiell sollte da etwas in der Richtung möglich sein.

Wenn ihr einen OR-Mapper/Persistenzlayer dazwischen habt, ggf. mal da nachhaken/debugen. Habe da schon einige böse Fouls erlebt.

Es geht nicht um ein paar mehr - es können in der Zukunft schon so annähernd 1.000 Felder werden!

Oha...1000+ Spalten breite Tabelle sind aber hart am Wind gesegelt. Bei 1024 ist nämlich Schicht im Schacht(IMO).

Gruss
Alfredus
Bitte warten ..
Ähnliche Inhalte
Datenbanken
gelöst SQL-Dateien sortieren, kombinieren und filtern (6)

Frage von derapfelsaft zum Thema Datenbanken ...

Datenbanken
SQL restore bringt Fehler (2)

Frage von franksig zum Thema Datenbanken ...

Windows Server
gelöst Frage zu Microsoft Lizenzierung - Microsoft SQL Server 2016 (10)

Frage von Juckie zum Thema Windows Server ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(38)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Festplatten, SSD, Raid
POS Hardware und alternativen zu Raid 1? (21)

Frage von Brotkasten zum Thema Festplatten, SSD, Raid ...

Viren und Trojaner
Verschlüsselungstrojaner simulieren (15)

Frage von AlbertMinrich zum Thema Viren und Trojaner ...

Rechtliche Fragen
Hotspot rechtssicher betreiben? (14)

Frage von xSiggix zum Thema Rechtliche Fragen ...

ISDN & Analoganschlüsse
gelöst Splitter - RJ45 zu RJ11? (14)

Frage von Waishon zum Thema ISDN & Analoganschlüsse ...