-
Gesamte Inhalte
172 -
Registriert seit
-
Letzter Besuch
Alle erstellten Inhalte von MDD
-
Hallo Auf dem ersten Bild schaut die erste Auswahl so aus als würde auch im Erfolgsfall eine Meldung ausgeführt werden. Kann es sein dass der Vorgang in Wirklichkeit fehl schlägt? Bei mir ist das Thema Clustering (auch mit anderer SQL Version) schon ne Weile her, dennoch würde ich nicht wundern wenn du auf Fehler läufst wenn du Transaktionslogs abschneiden willst solange du Clustermäßig unterwegs bist. Normalerweise müsstest du ja sehen ob im SQL-Log bzw. bei deiner Nachricht auch wirklich ne Fehlermeldung dran hängt. Dann tutet es ja richtig. Rein technisch gesehen würde ich immer alle Ergebnisse in eine Datenbank protokollieren und diese regelmäßig abfragen. Das Ergebnis kann dann in einem Monitoring dargestellt werden, ausgewertet und kontrolliert werden. Oftmals funktioniert im Fehlerfall die Infokette auch nicht mehr. Es reicht wenn die Empfängeradresse sich ändert oder was mit dem Agent nicht passt. Gruß MDD
-
Ominöse Fehlermeldung beim Zurückspielen einer Datensicherung
MDD antwortete auf ein Thema von gerd33 in: MS SQL Server Forum
Kannst du prüfen ob der SQL Service User entsprechend berechtigt ist in diesem Verzeichnis? Meine Vermutung geht auch in die Richtung, dass dies alles auf dem Installationsbenutzer berechtigt ist. -
MS SQL 2019 via ini Datei ansteuern
MDD antwortete auf ein Thema von marcimarc in: MS SQL Server Forum
Normalerweise arbeitet der SQL auf Port 1433. Wenn du Instanzen verwendest kann das unter Umständen auch ein anderer Port sein und dein Client erreicht möglicherweise niemanden unter dieser "Durchwahl" Im Konfiguration Manager siehst du unter welcher Portnummer die Instanz erreichbar ist. Auch die Firewall muss auf diesem Port die Kommunikation durchlassen. Daher Stichwort - SQL Server Konfiguration Manager https://docs.microsoft.com/en-us/sql/relational-databases/sql-server-configuration-manager?view=sql-server-ver15 SQL Browser - https://docs.microsoft.com/en-us/sql/tools/configuration-manager/sql-server-browser-service?view=sql-server-ver15 und Firewall Du kannst mal versuchen ob du den SQL lokal über Port 1433 erreichst. Gruß MDD -
Unterschiedliche Ergebnismengen zwischen SSMS und PHP Abfrage
MDD antwortete auf ein Thema von tomquenten in: MS SQL Server Forum
Kann dir beim PHP leider nicht weiterhelfen. Logischerweise muss aber entweder die Daten verdichten (z.B. weil durch die Joins 1 Datensatz verdoppelt wird) oder er filtert unter umständen Daten weg. Wie gesagt, ich würde die Ergebnisse genau anschauen. Das hilft in vielen Fällen. Aja und im Profiler kann man den rowcount auch mit ausgeben - Einstellungssache. -
Unterschiedliche Ergebnismengen zwischen SSMS und PHP Abfrage
MDD antwortete auf ein Thema von tomquenten in: MS SQL Server Forum
Moin, meine allererste Reaktion wäre zu prüfen ob ich wirklich beides mal die selben Datenbanken und Tabellen (Schemas) abfragen. Dann würde ich prüfen ob via PHP wirklich die selbe Abfrage auf dem SQL landet oder ob der Interpreter was vermurkst. Da hilft der Profiler, die DMV's oder XEvents. Du könntest auch die Daten prüfen und vergleiche ob es Auffälligkeiten gibt die auf einen Cross oder Outer join schließen lassen. Das würde für ich auch die unterschiedlichen Ergebnisse erklären. Gruß MDD -
Transaktionsprotokoll (*.log) verkleinern
MDD antwortete auf ein Thema von Peterzz in: MS SQL Server Forum
Mir ist nicht aufgefallen in den angeführten Artikeln irgendwas über meine erwähnten Effekte stand, was das Allokieren von Speicherplatz anlagt. -
Im Prinzip ist es die selbe Lösung wie deine Abfrage update test set wert = 100 from test join ( select max(stand) as maxDat, persnummer as persnr from test group by persnummer ) as x on x.persnr = test.PersNummer and test.stand = maxDat
-
Transaktionsprotokoll (*.log) verkleinern
MDD antwortete auf ein Thema von Peterzz in: MS SQL Server Forum
Korrigiert mich wenn ich falsch dran bin. Wenn man das Full-Model fährt und recht große Log-Dateien hat kann ein Verkleinern der Dateien schon Effekt haben. Ist das automatische Vergrößern der Datei auf einen sehr kleinen Fixwert eingestellt, z.B. 1 MB, führt das unter Umständen dazu das man eine fragmentierte Datei hat. Ist ein Prozentwert eingestellt und das File ist groß kann das Anfordern von Platz Zeit kosten, was sich auf die Verarbeitungszeit auswirken kann. Und ja - das ganze hängt mit dem darunter liegenden HD-System zusammen. Regelmäßiges Abschneiden mag diese Effekte haben. Daher sollte die File-Einstellung mit ins Kalkül gezogen werden. Gruß MDD -
temporäres Speichern von Datensätzen zum Vergleichen
MDD antwortete auf ein Thema von KitKat in: MS SQL Server Forum
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 stellst du sicher, dass dann nicht 100erte Alarm ausgelöst werden? -
temporäres Speichern von Datensätzen zum Vergleichen
MDD antwortete auf ein Thema von KitKat in: MS SQL Server Forum
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. -
Wäre mir ehrlich gesagt neu wenn das mit einem Backup / Restore sich verbessern sollte. Aber kann ich auch nicht 100 %ausschließen.
-
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 oder dbcc dbreindex https://docs.microsoft.com/de-de/sql/t-sql/database-console-commands/dbcc-dbreindex-transact-sql?view=sql-server-ver15
-
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?
-
Daten aus Excel in 2 SQL Server Tabellen importieren
MDD antwortete auf ein Thema von Tschuckerich in: MS SQL Server Forum
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 -
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
-
Variable für not in definieren mit Komma separiert
MDD antwortete auf ein Thema von mbaumeister in: MS SQL Server Forum
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_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.artikelgruppe between ' + char(39) + '10000' + char(39) + ' and '+ char(39) + '99999' + char(39) + ' group by lb.artikel, art.NAME, [dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, ' + char(39) + @values + char(39) + ') order by sum(lbe.TOTALELEMVALUE) desc, lb.artikel' exec (@sql) -
Variable für not in definieren mit Komma separiert
MDD antwortete auf ein Thema von mbaumeister in: MS SQL Server Forum
Ups habe ein Values übersehen - habe es oben korrigiert - versuchs nochmal -
Variable für not in definieren mit Komma separiert
MDD antwortete auf ein Thema von mbaumeister in: MS SQL Server Forum
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.artikelgruppe between ' + char(39) + '10000' + char(39) + ' and '+ char(39) + '99999' + char(39) + ' group by lb.artikel, art.NAME, [dbo].[udf_anp_Projekte_LBW_WE](lb.artikel, @values) order by sum(lbe.TOTALELEMVALUE) desc, lb.artikel' exce (@sql) versuch das mal, -
Variable für not in definieren mit Komma separiert
MDD antwortete auf ein Thema von mbaumeister in: MS SQL Server Forum
Strings stehen unter Hochkomma. also 'G01','AL' Dein Statement überliefert aber ein 'G01,AL' womit du wahrscheinlich keine Treffer findest. -
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 "Drops" ins Abfrage-Fenster und gleich dahinter das die Create Abfrage aus der Spalte "Neues_create" und führst es Miteinander aus. Womöglich braucht es zwischen den Drops und den Creates ein "GO" damit zuerst die Alten Views weg sind und dann die neuen erstellt werden können. Würde dann in etwa so ausschauen DROP VIEW IF EXISTS view1 DROP VIEW IF EXISTS view2 DROP VIEW IF EXISTS ... go Create view view1 as Select ... from Peter_traurig.dbo.tabelle1 .... Create view view2 as Select ... from Peter_traurig.dbo.tabelle4711 .... Create view ....
-
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" die View so richtig definiert wäre. Gruß MDD
-
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
-
Nochmal die Frage: Funktionieren die inkrementellen Backups direkt ohne DPM? Also einfach wenn du sie über das Studio machst?
-
Guten Morgen, funktionieren die inkrementellen Backups direkt ohne DPM? Wie sagen die Logs?
-
Guten Morgen dafür gibt es extra eine Funktion: SELECT DATEADD(MM, [intervallMonaten], [datumLetztePruefung]) FROM ... Gruß MDD PS: Unter der Fehler liegt daran, dass die Datenbank ein Datum im Hintergrund als eine laufende Zahl abbildet. Und wenn man da einfach eine Zahl dazuzählt ändert es sich der Gesamtwert aber nicht die richtige stelle im Datum. Zum Beispiel hat der heutige Tag die Nummer 44319