11. August 2011 12:32
Guten Morgen,
ich hab hier immer wieder das Problem das beim löschen einer Spalte folgende Fehlermeldung geworfen wird:
Die folgenden SQL Server-Fehler sind beim Zugriff auf die Tabelle 'G/L Entry' aufgetreten:
5074,"42000",[Microsoft][ODBC SQL Server Driver][SQL Server]Das Statistik-Objekt 'myColumn' ist vom Spalte-Object 'myColumn' abhängig.
4922,"42000",[Microsoft][ODBC SQL Server Driver][SQL Server]Fehler bei ALTER TABLE DROP COLUMN myColumn, da mindestens ein Objekt auf diese Spalte zugreift.
SQL:
ALTER TABLE "myDB"."dbo"."Cronus AG$G_L_Entry" DROP COLUMN "Open"
Woran liegt das?
(SQL2008 R2 x64, Windows 2008 R2 x64 und NAV 2009 SP1)
Danke,
Coyote
21. Oktober 2011 07:35
Hallo Coyote,
das Problem ist nicht Versionsabhänig es tritt auch mit w03s und sql05 auf. Das Problem kann ich in einer Tabelle beobachten, in der ich versuche ein Autoincrement Property zurück auf FALSE zu setzen. Hast Du eine Lösung gefunden?
Sven
21. Oktober 2011 07:51
Hallo,
hast du evtl. irgendwo ein Flowfield, das auf das Feld zugreift?
Gruß, Fiddi
21. Oktober 2011 07:53
Nein gibt es nicht. Es ist eine Archivtabelle in die Daten nur per Transferfields kommen. Und das angenörgelte Feld ist die Entry No. In der Archivtabelle will ich nun das Autoincrement Property deaktivieren.
21. Oktober 2011 11:10
GELÖST! Der SQL Server erstellt sich Statistiken und das war der Fall für diese Spalte. Bebor man sie ändert muss man die Statistik (für Ausführungspläne) löschen. Das ist kein Problem, da er sie sich bei Bedarf neu erstellt.
21. Oktober 2011 13:25
Genau so ist es. Info für alle: Die Statistiken befinden sich im SQL Server Management Studio unter Datenbanken -> "Datenbank" -> Tabellen -> "Tabelle" -> Statistik. Die in der Fehlermeldung genannte Statistik kann ohne Bedenken gelöscht werden. Bitte auch beachten, dass bei mehreren Mandanten auch bei jeder Tabelle das durchgeführt werden muss!
14. Januar 2016 17:17
Erstmal danke für den Tipp.
Für jemanden, der mit vielen Mandanten arbeitet, ist das händische Löschen über das SQL Server Management Studio mit viel Arbeit verbunden.
Mit einem SQL-Skript lässt sich das doch recht schnell bewerkstelligen:
- Code:
USE <datenbankname>;
DECLARE @tabellenname varchar(50)
DECLARE @statistikname varchar(50)
SET @tabellenname = '%G_L Entry%' --wird durch den Tabellenname ersetzt
SET @statistikname = 'myColumn' --Name der Statistik (in der Regel auch Name der Spalte)
SELECT DISTINCT('DROP STATISTICS [dbo].[' + tb.TABLE_NAME + '].[' + @statistikname + ']')
FROM INFORMATION_SCHEMA.TABLES AS tb
WHERE TABLE_NAME LIKE @tabellenname
Als Ergebnis wird eine SQL-Abfrage für alle Mandanten zusammen gestellt, welche nach Ausführung die Statistik löscht.
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.