Jump to content

MDD

Members
  • Content Count

    139
  • Joined

  • Last visited

Community Reputation

9 Neutral

About MDD

  • Rank
    Junior Member

Recent Profile Visitors

792 profile views
  1. Für mich fehlt bei deiner Abfrage das Zeitkriterium. Wenn du nicht willst das zu oft Alarm ausgelöst wird müsstest du die Zeit des letzten Eintrags in der Zieltabelle für diesen Alarm mit dem für den neuen Eintrag vergleichen und nur dann schreiben wenn die Zeitdifferenz x Minuten übertrifft. btw: Im not exists Zweig kannst auf die ganzen Spalten in der Abfrage verzichten. Macht die Sache nur unübersichtlicher. SG MDD Ausserdem würde ich daran denken dass es vorkommen wird / kann, dass die Übertragung aus irgendeinem Grund unterbrochen wird. Wie stell
  2. Hallo Was muss schlussendlich in deiner Zieltabelle drinnen stehen? Brauchst du da eine lückenlose Historie? Eine Idee wäre es vielleicht eine zusätzliche Spalte mit einem Triggerflag anzulegen und das nur dann zu setzen wenn es deinen Wünschen (Parametern) entspricht. Dann kannst du aufgrund dessen deinen Trigger auslösen uns sonst eben nicht.
  3. Wäre mir ehrlich gesagt neu wenn das mit einem Backup / Restore sich verbessern sollte. Aber kann ich auch nicht 100 %ausschließen.
  4. Okay wer lesen kann ist klar im Vorteil. Du schreibst vom Activity Monitor- also hast du das Studio. Du kannst im Studio über den Objekt Explorer die Fragmentierung eines Index in seinen Eigenschaften / Fragmentierung nachsehen. Und du kannst schauen ob die Statistiken veraltet sind. Das Reorganisieren bzw. Neuerstellen kannst du entweder über das Objektexplorer vornehmen oder per Script Abhängig von der Eingesetzten SQL Version entweder mit Alter Index https://docs.microsoft.com/de-de/sql/t-sql/statements/alter-index-transact-sql?view=sql-server-ver15 od
  5. Hallo möglicherweise sind die Indexe defragmentiert oder die dazugehörigen Statistiken veraltet. Es gilt zu prüfen ob ein Index auch verwendet wird bzw. werden kann. Hilfreich ist dabei das SQL Server Management Studio. Hast du das zur Verfügung?
  6. Hallo Oliver also für den Zugriff würde ich mit dem Stichwort: "openrowset" auf den Weg gehen Für das Prüfen hilft dir womöglich "MERGE" weiter. Gruß MDD
  7. Moin, with leitet in diesem Kontext eine CTE (Common Table Expression) ein. Das ist quasi eine Unterabfrage die vor dem eigentlichen Select aufgerufen wird und auf dessen Ergebnis im Select zugegriffen wird. Das Ergebnis der CTE wird kurz im Speicher gehalten und als Tabelle "existing_docs" zur Verfügung gestellt (Siehe dein left outer join). In diesem Falle wird existing_docs mit dem Alias ed weiter gekürzt, Gruß MDD
  8. Du kannst unten satt exec @sql das exec durch ein Print ersetzen und das Statement mal selbst anschauen. Falls es beim Fehler eine andere Zeile angezeigt hat liegt es wahrscheinlich am Group by, dort steht das nochmal ein @values das ich übersehen habe und du scheinbar auch. declare @values varchar(1000) declare @sql varchar(max) set @values =replace('G01,AL', ',', CHAR(39) + ',' + CHAR(39)) set @sql = ' select lb.artikel, art.NAME, sum(lb.menge) as menge, sum(lbe.TOTALELEMVALUE) as Wert,' + char(39) + 'mögliche Projekte =' + char(39) + '[dbo].[udf_anp_Projekte_L
  9. Ups habe ein Values übersehen - habe es oben korrigiert - versuchs nochmal
  10. declare @values varchar(1000) declare @sql varchar(max) set @values =replace('G01,AL', ',', CHAR(39) + ',' + CHAR(39)) set @sql = ' select lb.artikel, art.NAME, sum(lb.menge) as menge, sum(lbe.TOTALELEMVALUE) as Wert,' + char(39) + 'mögliche Projekte' + char(39) + '[dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, ' + char(39) + @values + char(39) + ') from lagerbelegung lb left outer join artikel art on art.artikel = lb.artikel left outer join LAGERBELEGUNGELEMENT lbe on lb.PREISGRUPPIERUNGID = lbe.PREISGRUPPIERUNGID where lb.lager in (' + char(39) + @values + char(39) + ') and art.artik
  11. Strings stehen unter Hochkomma. also 'G01','AL' Dein Statement überliefert aber ein 'G01,AL' womit du wahrscheinlich keine Treffer findest.
  12. Dann steht bei der zweiten View das peter_lustig nicht drinnen. Ein Update würde dir vermutlich auch nicht viel bringen, selbst wenn es ginge. Immerhin ist das nur die Definition und nicht die View selbst. Was du machen kannst ist vor noch eine Spalte zusammenstellen und dort vor jede View ein Drop dazuschreiben. select TABLE_name, REPLACE(view_definition, 'peter_lustig', 'peter_traurig') AS Neues_Create, 'DROP VIEW IF EXISTS ' + TABLE_NAME as Drops, * from INFORMATION_SCHEMA.VIEWS where view_definition like '%peter_lustig%' Dann kopierst den Inhalt der Spalten "
  13. Mir ist gerade aufgefallen dass ich am Schluss das % vergessen habe. Mit "Aber leider funktioniert das nicht" ist es ein wenig schwierig weiter zu kommen. Was funktioniert nicht? Funktioniert das Statement nicht oder weißt du nicht wie du es umsetzen musst? Versuch noch mal das mal das Statement und pass die Datenbanknamen entsprechend an. select *, REPLACE(view_definition, 'peter_lustig', 'peter_traurig') AS Neues_Create from INFORMATION_SCHEMA.VIEWS where view_definition like '%peter_lustig%' Schau ob in der letzten Spalte "Neues_Create
  14. Hallo In einem Schritt die Definitionen zu ändern wird schwierig. Aber du kannst sie mittels Cursor auslesen, die View droppen und neu erstellen select *, REPLACE(view_definition, 'peter_lustig', 'peter_traurig') from INFORMATION_SCHEMA.VIEWS where view_definition like '%peter_lustig%' Mittels des Namens kannst du die alte View löschen und dann neu anlegen. Die Definition kannst du dann wieder mit sp_sqlexec ausführen und damit die View neu anlegen. Ich denke das sollte gehen. Gruß MDD
  15. Nochmal die Frage: Funktionieren die inkrementellen Backups direkt ohne DPM? Also einfach wenn du sie über das Studio machst?
×
×
  • Create New...