Jump to content

Tossi65

Members
  • Gesamte Inhalte

    53
  • Registriert seit

  • Letzter Besuch

Über Tossi65

  • Geburtstag 29.11.1965

Letzte Besucher des Profils

Der "Letzte Profil-Besucher"-Block ist deaktiviert und wird anderen Benutzern nicht angezeit.

Fortschritt von Tossi65

Enthusiast

Enthusiast (6/14)

  • Erste Antwort
  • Engagiert
  • Erster eigener Beitrag
  • Eine Woche dabei
  • Einen Monat dabei

Neueste Abzeichen

0

Reputation in der Community

  1. @NilsK Ich gebe dir recht ohne Datenmodell ist schlecht. Aber ich werde es jetzt mit dem Trigger versuchen. Danke für Eure Unterstützung. Gruß Torsten
  2. @MDD Das habe ich mir mit einem Trigger geholfen. Bei Insert , Update und Delete schreibt der Trigger mir die verwendeten Felder des Schlüssels mit Werten und die Aktion in eine Tabelle. Eine Datumsspalte gibt es nicht. Es sind einfach Verknüpfungstabellen mit einer "n zu m Beziehung". Vielleicht ist der Trigger die einzige Lösung. Gefällt mir aber nicht. Danke Torsten
  3. Hallo an alle, ich gebe euch allen Recht. Aber mir hat man beim Designen einer Tabelle bei gebracht, das eine Tabelle eine eineindeutige Spalte haben sollte(ID, Lfdnr,...). Meist sogar als AutoGenerate für die fortlaufende Nummer. Diese hat nicht unbedingt etwas mit dem prim Key zu tun. Über diese eindeutige ID kann ich den Datensatz direkt ansprechen oder als Offset für Abfragen benutzen. Wenn ich diese Spalte nicht habe wie soll ich folgendes realisieren: "Select Top 1000 * from tabelle where lfdNr > x". Das geht nicht,leider. Der Primary Key besteht aus mehreren Fremdschlüsseln, einer eindeutigen Länderkennung und wird so eindeutig eindeutig. Die Tabellen sind auf mehreren Datenbank-Servern global verteilt. Der zusammengesetzte Prim. Key soll ein zusammenführen der Daten in eine Tabelle ermöglichen (Zentral). Das heisst die Fremdschlüssen werden in der Zentraltabelle mehrfach vorkommen bis auf die Länderkennung! Also Replikation nachgebildet. Die Entwickler sind in Rente oder nicht mehr da. Das ganze ist natürlich historisch entstanden. Das ich jetzt an den Datenbanken kaum etwas machen kann ist mir klar. Aber ich soll das Verteilen und Zusammenbringen der Daten ermöglichen. Mir ist klar, das diese Tabellen eigentlich nur mit einem kompletten Scan von 0 bis n über den prim. Key von der Quelle zum Ziel abzugleichen sind. Wie gesagt mehrere Mio. Datensätze pro Datenbank. Bei den restlichen Tabellen schaue ich einfach auf die max Lfdnr einer Tabelle im Ziel und dann in der Quelle. Daraus ergibt sich der Gap und wird übertragen. Ich hoffe es ist jetzt etwas deutlicher.Noch einmal die Frage: Gibt es von der DBEngine interne Datensaplten die man benutzen könnte? Vielen Dank Torsten
  4. Guten Morgen, ich warte mehrere alte Datenbanken und soll eine Datenabgleich erstellen. Ich kenne die Urheber nicht persönlich, aber dafür deren Fehler. In den Datenbanken gibt es Tabellen, welche einen zusammengesetzten Primary Key besitzen, aber keine eigene eindeutige Identspalte. Wenn ich also einen Datensatz suche finde ich diesen mit dem prim Key. Aber wenn ich die Daten abgleichen soll wird es schwierig. Ich könnte natürlich eine Tabellenscan durch führen, aber nach welcher Spalte soll ich die Daten sortieren. Die Tabellen haben teilweise mehrere Mio. Datensätze. Deshalb lese ich immer 1000 Datensätze ein , vergleiche und wieder 10 Datensätze. Wenn ich das nicht mache, dauert es nicht lang und der Arbeitsspeicher ist am Ende. Nun meine Frage: Ich komme aus der FireBird Welt und da haben die Tabellen von der DBEngine interne Tabellenspalten, z. B. "rdb$Key". Darin ist eine eindeutiger Index den man auch nutzen kann. Gibt es so etwas auch im SQL Server. Gruß Torsten
  5. Danke für Eure Unterstützung. Ich mache hier mal zu. Wir erstellen auf den SQL Servern einen SQL User. Für ein Gruppe in der Domäne ist die Fluktuation der User zu groß. Danke Torsten
  6. ok, verstehe. Ich erstelle das Programm unter dem Admin Account und benutze die Windows Anmeldung für den SQL Server. Somit nimmt er auch die Anmeldung vom Admin. Jetzt starte ich das Programm unter User Schmidt. Dann versucht das Programm auch mit diesem User sich an dem SQL Server, bei Windows Anmeldung, anzumelden. Das schlägt natürlich fehl. Also müsste ich jetzt einen SQL User für die Anmeldung nehmen. Dafür müsste der Admin auch als SQL User angelegt werden. Gruß Torsten
  7. Ich erstelle das Programm mit meinem Account und habe Zugriff als Admin auf den SQL Server. Der User des des Programmes soll diese Berechtigung natürlich nicht haben. Ich weiß ja auch nicht wer das Programm alles benutzt. Ich bin aber nicht berechtigt in der Domäne User, Gruppen und Berechtigungen zu vergeben. Also muss ich nehmen was mir gegeben wird. Da der oben genannte neue User auf ca. 12 SQL Servern über dieses Programm zugreifen soll, muss dieser auf allen SQL Servern als SQL User / lokaler User angelegt werden? Na dann viel Spaß. Gruß Torsten
  8. Damit meine ich einen Windows User in der Domäne. Gruß Torsten
  9. Guten Morgen, ich erstelle ein kleines Programm mit Datenbankzugriff. Bisher habe ich immer Windows-Anmeldung genommen. Für das Programm will ich aber nicht den vom Client PC angemeldeten Benutzer benutzen, sondern einen anderen extra angelegten User. Dieser soll auch per Windows-Anmeldung am Server angemeldet werden. Geht das??? Ich dachte bisher, wenn ich einen User bei "Integrated Security=True" mitgeben wird der angemeldet. Gruß Torsten
  10. Hallo NilsK, Hintergrund ist, das wir mehrere gleiche Datenbanken haben, die aus einer Zentraldatenbank mit Daten versorgt wird. Früher mit der Replikation(Transaktional) und jetzt wird das alles über SSIS Services gemacht. Die alte Replikation ging nicht mehr, weil Fehler in der Datenbankstruktur gemacht wurden. Die Urheber der Replikation sind auch nicht mehr verfügbar. Vielleicht liest das hier ja auch jemand aus dem Developer Team. Danke. Gruß Torsten
  11. Hallo NilsK, ich benutze KeepIdentity, um die Werte zu erhalten, da wir die Daten replizieren wollen. So wie ich das verstehe wird dabei die Befehlszeile "SET IDENTITY_INSERT Tabelle ON". Wenn jetzt ein Fehler bei WriteServer() auftritt, wird dann der Befehl wieder mit "SET IDENTITY_INSERT Tabelle OFF" aufgehoben??? Das ist meine Frage. Gruß Torsten
  12. Guten Tag Kollegen, ich habe da eine wichtige Frage: wenn ich SqlBulkCopy wie folgt verwende: using (var bulkCopy = new SqlBulkCopy(ACon, SqlBulkCopyOptions.KeepIdentity, ATransaction)) Wird dann die KeepIdentity Option für die Tabelle bei Fehler automatisch wieder entfernt? Scheint mir nicht so. Wie kann ich diese Option wieder rückgängig machen? Und einen Guten Rutsch ins neue Jahr ;) Gruß Torsten
  13. Hallo NilsK, nein nicht ganz. Die Version könnte ich auch per Eigenschaften -> Optionen hoch setzen. Soviel ich weiß, müssen wohl auch Änderungen an der Datenbankstruktur gemacht Werden. Z. B. Funktionalitäten müssen geprüft werden, da nicht mehr unterstützt oder überarbeitet. Ich habe mal den Migration Assistenten drüber laufen lassen, der meckert alle Joins, Trigger usw an. Aber bietet leider keine Beispiele an. Wie gesagt da liegen Generationen zwischen den Versionen. Der neue Server bietet nicht mehr den Kompatibilitätsmodus 80 an. Er setzt diesen gleich auf 100 ohne Prüfung ob die DB dann noch richtig arbeitet. Gruß Torsten
  14. Guten Morgen Kollegen, wir müssen unsere MS Sql Server auf den neuesten Stand bringen. Das ist ja kein Problem. Das wurde seit MS 2005 auch brav gemacht. Neue Server-Version installiert und Datenbank reinkopiert. Das war es. So die Datenbank haben die Struktur-Version 80, Server 2005 und wir brauchen die neueste Version 150. Ich komme aus der FireBird Fraktion, da geht das ganz einfach. Backup auf dem alten und Restore auf dem neuen Server. Das war es. Aber Microsoft kann nicht einfach. Hat jemand eine Anleitung oder Tipps wie man es am einfachsten macht? Gruß Torsten
  15. Hallo Kollegen, ich habe eine neue Frage zu dem Thema. Ich benutze ein ForEach Loop über ein Dataset und will die Daten mit einem LookUp in das Ziel schreiben, wenn diese dort nicht vorhanden sind. Das habe ich auch schon hinbekommen. Aber jetzt soll das Feld ID mit einem Offset addiert werden. Das Offset kommt aus der Datenbank und steht in der Variable lOffset. Beim Mappen der Spalten werden nur Spalten zugelassen. 1. Wie berechne ich die neue ID bei jedem Durchlauf vom Loop? Der Loop hat ja leider keine eigenen Variablen und Ereignisse. 2. Wie mache ich die Zuweisung zur Zielspalte. Danke Torsten
×
×
  • Neu erstellen...