Jump to content

MDD

Members
  • Gesamte Inhalte

    168
  • Registriert seit

  • Letzter Besuch

Letzte Besucher des Profils

1.179 Profilaufrufe

Fortschritt von MDD

Community Regular

Community Regular (8/14)

  • Rätsel gelöst Rare
  • Erste Antwort
  • Engagiert
  • Erster eigener Beitrag
  • Eine Woche dabei

Neueste Abzeichen

12

Reputation in der Community

10

Beste Lösungen

  1. Und was hindert dich daran dich an dieser Tabelle zu orientieren um deinen Datenabgleich vorzunehmen? Wenn du da einen laufende Nummer oder einen Zeitstempel mitschreibst hast du doch was du brauchst?
  2. Datenabgleich heißt für mich auch Änderungen zu übernehmen, also auch Löschungen und Korrekturen. Da wirst dir mit einer fortlaufenden Nummer schwer tun, außer die du legst für jeden Änderung einen neuen Datensatz an. Hast vielleicht ein Änderungsdatum im Datensatz oder eine Tabelle die Änderungen mitloggt?
  3. Hallo. Ganz verstehe ich das Anliegen nicht. Für mich fehlen die Rahmbedingungen. Kannst du von einer Datenbank direkt auf die andere zugreifen? Was ist der Zweck des Datenabgleichs? Von wo nach wo gehen Daten? Transportierst du 1 Record von A nach B oder checkst du ob sich einzelne Werte in einem Record geändert haben und übergibst nur diese? Eindeutige Indexe und Primary Key sind generell ja nicht das selbe. Eindeutige Indexe kannst du ja viele haben, unabhängig wie sie aufgebaut sind. Gruß MDD
  4. Moin. Ich bin mir nicht sicher ob das zu abwegig ist im lokalen Netzwerk, aber ist die MTU-Size bei allen Clients gleich eingestellt?
  5. Das hab ich nicht mal bei Version 18 mehr gefunden. EDIT: Muss mich korrigieren. Die XML Datei habe ich gefunden nur die BIN Datei nicht mehr.
  6. Morgen. Mit der Maus drüber fahren [ENTF]-Taste drücken Dann sollten sie eigentlich weg sein. Bei mir funktioniert es zumindest bis SSMS 18 so. Gruß MDD
  7. Morgen! Sicherung oder Snapshot? SQL Express unterstützt die Snapshot Funktionen nicht. Da ist die Enterprise oder Developer-Edition nötig. Gruß MDD
  8. Trotz Crossposting .... der vollständigkeitshalber trag ich es hier auch noch ein. Überprüf mal was bei dir der erste Tag der Woche ist select @@datefirst Wenn das 1 sein sollte dann passt es nicht mit dem Kalender zusammen und du müsstest fürs Wochenende 6 und 7 ausnehmen statt 1 und 7. Werde hier aber nicht mehr zu diesem Thema weiter schreiben.
  9. Ich habs trotzdem nochmal versucht /* create table #abwesend (mitarbeiter varchar(10), unterbrechungsgrund varchar(10), datum date) insert into #abwesend values ('Huber','Urlaub','20230317'), ('Huber','Urlaub','20230318'), ('Huber','Urlaub','20230403'), ('Huber','Urlaub','20230404'), ('Maier','krank','20230317'), ('Maier','Urlaub','20230318'), ('Müller','krank','20230317'), ('Müller','Urlaub','20230525'), ('Müller','Urlaub','20230526') */ DECLARE @StartDate DATE = '20230317'; DECLARE @CutoffDate DATE = DATEADD(DAY, - 1, DATEADD(YEAR, 1, @StartDate));; WITH seq (n) AS ( SELECT 0 UNION ALL SELECT n + 1 FROM seq WHERE n < DATEDIFF(DAY, @StartDate, @CutoffDate) ) ,d (d) -- Kalender ohne Wochenende AS ( SELECT DATEADD(DAY, n, @StartDate) FROM seq ) ,kalender ( d ,mitarbeiter ) AS ( SELECT d ,mitarbeiter FROM d CROSS JOIN ( SELECT DISTINCT mitarbeiter FROM #abwesend ) AS x where DATEPART(WEEKDAY,d) not in (1,7) -- für Wochenende keinen Tag in der Tabelle erzeugen ) ,letzttag ( mitarbeiter ,d)--Tabelle mit Erster Arbeitstag AS ( SELECT KALENDER.mitarbeiter ,MIN(d) FROM KALENDER LEFT JOIN #abwesend a ON a.datum = d AND kalender.mitarbeiter = a.mitarbeiter WHERE datum IS NULL GROUP BY KALENDER.mitarbeiter ) SELECT * FROM #abwesend WHERE EXISTS ( SELECT MAX(datum) maxdat ,ab.mitarbeiter FROM #abwesend ab JOIN letzttag ON letzttag.mitarbeiter = #abwesend.mitarbeiter WHERE datum < d GROUP BY ab.mitarbeiter HAVING ab.mitarbeiter = #abwesend.mitarbeiter AND MAX(datum) = #abwesend.datum ) OPTION (MAXRECURSION 0) Der erste Teil erzeugt einen Kalender (für 1 Jahr) ohne Wochenende, Da könnte man auch auf das höchste Datum +1 Tag der Abwesenheitstabelle gehen. Was klar nicht abgedeckt ist sind die Feiertage. Dann hol ich mir das erste Datum wenn die Leute wieder da sind und dann aufgrund dessen wieder das letzte an dem sie gefehlt haben mitsamt dem Grund. Verknüpft habe ich über die Mitarbeiternamen, da gibts sicher auch was eindeutiges. aber als Idee sollte es reichen.
  10. Also aufgrund der Daten alleine fällt mir auf die Schnelle kein Weg ein. Wenn du aber eine zweite Tabelle hast wo alle Arbeitstage drinnen sind, und ich bin fast überzeugt dass du die brauchst wegen der Feiertage und Wochenenden, dann könntest die geplanten Abwesenheiten von der Tabelle abziehen und den nächsten Arbeitstag ausgeben.
  11. Nur noch so als Hinweis: Du kannst im SSMS im Fenster Registered Servers eine Server Gruppe mit allen 12 Servern mit den Verbindungsdaten einmalig hinterlegen. Wenn du nachher auf die Servergruppe gehst und über das Kontextmenü eine Neue Abfrage öffnest, wird ein neues Abfragefenster mit Verbindung zu allen Servern geöffnet. Dann kannst per Script auf allen Servern gleichzeitig mit einer Aktion den User anlegen und überall gleich berechtigen. Vereinfacht oft manche Kontrollen und Aufgaben.
  12. Wenn du als Admin ein Programm erstellst hast du auf dem SQL-Server die Berechtigungen die du als Admin dort eben hast. Wenn ein Otto-Normal-Benutzer das Programm startet und die Windows Authentifizierung verwendet wird er dort auch als Benutzer "Otto-Normal" verbunden und hat dann auch die entsprechenden Rechte. Vielleicht sehe ich das Problem noch nicht. Solange du nicht deine Verbindungsdaten im Programm mitspeicherst wird der aktuelle Windowsbenutzer durchgereicht. Unabhängig in welchem Kontext das Programm erstellt wurde. Schwieriger erscheint es öfter als Admin das zu sehen was der Benutzer sieht.
  13. Sorry Habs überlesen Um dich mit einem andren Useraccount anzumelden müsstest ja ein Impersonating machen. Sonst kannst nicht einfach einen den Sicherheitskontext eines anderen Benutzers übernehmen. Allerdings wäre es möglich mit einem SQL User zu arbeiten. Warum willst du das so machen?
  14. Hallo, wie meinst du das? ... extra angelegten Windows User oder extra angelegten SQL User? Gruß MDD
  15. MDD

    Neue Spalte bei Case

    Hallo Mit deiner Abfrage bekommst du für jeden Eintrag in deiner Tabelle die Spalte Monat zurück. Wenn da mehrfach der gleiche Monat drinnen ist und die willst das es gesammelt ausgegeben wird musst du eine Gruppierung verwenden. Mit dem Stichwort "Group by" solltest du bei der Recherche fündig werden. Gruß MDD Korrektur: Ich hab das nicht aufmerksam genug gelesen, sorry. Deine SQL-Abfrage passt nicht zu deiner Frage. Du hast das nur eine halbe Abfrage und eigentlich ist nicht klar was du genau erreichen willst. Dein Case bezieht sich nicht auf den Monat sondern auf die Spalte "Task". Daher ist unklar was du genau zu erreichen suchst.
×
×
  • Neu erstellen...