I try to load a schema dump for a big ERP, but it fails in some of the bigger views and tables. Unfortunately the error message doesn’t help in finding out how I could clean up the schema before importing.
Example:
CREATE VIEW [Kunde].[v360GradSicht]
AS
SELECT tkunde.kKunde,
tKunde.cKundenNr,
tAdresse.cAnrede,
tAdresse.cTitel,
tKundenGruppe.cName AS KundenGruppe,
tKundenKategorie.cName AS KundenKategorie,
tAdresse.cVorname,
tAdresse.cName,
tAdresse.cFirma,
tAdresse.cStrasse,
tAdresse.cPLZ,
tAdresse.cOrt,
tAdresse.cLand,
tAdresse.cTel,
tAdresse.cMobil,
tAdresse.cFax,
tAdresse.cMail,
tkunde.cGeburtstag,
tZahlungsart.cName AS StandartZahlungsart,
CAST(CASE WHEN tKunde.cSperre = 'Y' THEN 1 ELSE 0 END AS BIT) AS Gesperrt,
CAST(CASE WHEN tkunde.cNewsletter = 'Y' THEN 1 ELSE 0 END AS BIT) AS Newsletter,
CAST(dbo.tkunde.nMahnstopp AS BIT) AS Mahnstopp,
CAST(CASE WHEN tkunde.cHerkunft = 'Amazon' THEN 1 ELSE 0 END AS BIT) AS HerkunftAmazon,
CAST(CASE WHEN tKunde.cHerkunft = 'Ebay' THEN 1 ELSE 0 END AS BIT) AS HerkunftEbay,
CAST(CASE WHEN tKunde.cKassenKunde = 'Y' THEN 1 ELSE 0 END AS BIT) AS KasseKunde,
CAST(CASE WHEN tkunde.kInetKunde > 0 THEN 1 ELSE 0 END AS BIT) AS ShopKunde,
CAST(CASE WHEN Preis.kKunde IS NOT NULL THEN 1 ELSE 0 END AS BIT) AS KundenvindividuellePreise,
tkunde.dErstellt AS KundeSeit,
Bestellungen.LastOrder AS LetzteBestellung,
Bestellungen.Umsatz - ISNULL(Gutschrift.GutschriftWertBrutto, 0) AS Umsatz,
ISNULL(Bestellungen.AvgWarenkorb, 0) AS AvgWarenkorb,
ISNULL(Bestellungen.AnzahlBestellungen, 0) AS AnzahlBestellungen,
ISNULL(Bestellungen.AnzahlStorno, 0) AS AnzahlStorno,
ISNULL(Bestellungen.AnzahlOffen, 0) AS AnzahlOffen,
ISNULL(Mahnungen.AnzahlMahnungen, 0) AS AnzahlMahnungen,
ISNULL(Rechnungen.OffeneRechnungen, 0) AS OffeneRechnungen,
ISNULL(dbo.tkunde.fRabatt, 0) AS RabattKunde,
ISNULL(Retouren.Anzahl, 0) AS AnzahlRetouren,
ISNULL(Gutschein.Menge, 0) AS Kundenguthaben,
ISNULL(Positionssummen.MitCoupon, 0) AS MitCoupon,
ISNULL(Positionssummen.Gewinn, 0) - ISNULL(Gutschrift.GutschriftWertNetto, 0) AS Gewinn,
ISNULL(Bestellungen.SummeBestellungOffen, 0.0) AS SummeBestellungOffen,
ISNULL(CAST(ISNULL(Rechnungen.SummeRechnungOffen, 0.0) AS DECIMAL(25,13)), 0.0) AS SummeRechnungOffen
FROM dbo.tkunde
JOIN dbo.tAdresse ON tAdresse.kKunde = tkunde.kKunde
AND tAdresse.nStandard = 1
AND tAdresse.nTyp = 1
LEFT JOIN dbo.tKundenGruppe ON dbo.tKundenGruppe.kKundenGruppe = dbo.tkunde.kKundenGruppe
LEFT JOIN dbo.tKundenKategorie ON dbo.tKundenKategorie.kKundenKategorie = dbo.tkunde.kKundenKategorie
LEFT JOIN dbo.tZahlungsart ON dbo.tZahlungsart.kZahlungsart = dbo.tkunde.kZahlungsart
LEFT JOIN (SELECT DISTINCT kKunde
FROM dbo.tPreis
) AS Preis ON Preis.kKunde = dbo.tkunde.kKunde
LEFT JOIN (SELECT vAuftrag.kKunde AS kKunde,
MAX(vAuftrag.dErstellt) AS LastOrder,
SUM(vAuftragEckdaten.fWertBrutto) AS Umsatz,
AVG(vAuftragEckdaten.fWertBrutto) AS AvgWarenkorb,
COUNT(vAuftrag.kAuftrag) AS AnzahlBestellungen,
SUM(CASE WHEN vAuftrag.nStorno = 1 THEN 1 ELSE 0 END) AS AnzahlStorno,
SUM(CASE WHEN vAuftrag.nKomplettAusgeliefert = 0 THEN 1 ELSE 0 END) AS AnzahlOffen,
SUM(CASE WHEN vAuftrag.nKomplettAusgeliefert = 0 THEN vAuftragEckdaten.fWertBrutto - vAuftragEckdaten.fGutschrift ELSE 0.0 END) AS SummeBestellungOffen
FROM Verkauf.vAuftrag
JOIN Verkauf.vAuftragEckdaten ON vAuftragEckdaten.kAuftrag = vAuftrag.kAuftrag
WHERE vAuftrag.nType = 1
GROUP BY vAuftrag.kKunde
) AS Bestellungen ON Bestellungen.kKunde = dbo.tkunde.kKunde
LEFT JOIN (SELECT
MAX(Rechnung.tRechnung.kKunde) AS kKunde,
SUM(CASE WHEN tRechnung.kRechnung IS NULL THEN 0 ELSE 1 END) AS OffeneRechnungen,
SUM(tRechnungEckdaten.fVkBruttoGesamt - tRechnungEckdaten.fGutschrift) AS SummeRechnungOffen
FROM Rechnung.tRechnung
JOIN Rechnung.tRechnungEckdaten ON tRechnungEckdaten.kRechnung = tRechnung.kRechnung AND tRechnungEckdaten.nZahlungStatus <> 2
GROUP BY tRechnung.kKunde
) AS Rechnungen ON Rechnungen.kKunde = dbo.tkunde.kKunde
LEFT JOIN (SELECT vAuftrag.kKunde AS kKunde,
SUM(((
(CAST(vAuftragPosition.fVkNetto AS DECIMAL(25,13)) - (CAST(vAuftragPosition.fVkNetto AS DECIMAL(25,13)) * vAuftragPosition.fRabatt) / 100)
/
CASE
WHEN vAuftrag.fFaktor = 0
THEN 1
ELSE vAuftrag.fFaktor
END
) - (vAuftragPosition.fEkNetto / (
CASE
WHEN vAuftrag.fFaktor = 0
THEN 1
ELSE vAuftrag.fFaktor
END))) * vAuftragPosition.fAnzahl) AS Gewinn,
SUM(CASE WHEN vAuftragPosition.nType = 3 THEN 1 ELSE 0 END) AS MitCoupon
FROM Verkauf.vAuftrag
JOIN Verkauf.vAuftragEckdaten ON vAuftragEckdaten.kAuftrag = vAuftrag.kAuftrag
JOIN Verkauf.vAuftragPosition ON vAuftragPosition.kAuftrag = vAuftrag.kAuftrag
WHERE vAuftrag.nType = 1 AND vAuftrag.nStorno = 0
GROUP BY vAuftrag.kKunde
) AS Positionssummen ON Positionssummen.kKunde = tkunde.kKunde
LEFT JOIN (SELECT tRechnung.tKunde_kKunde AS kKunde, COUNT(DISTINCT tZahlungsErinnerung.kRechnung) AS AnzahlMahnungen
FROM dbo.tZahlungsErinnerung
LEFT JOIN DEPRECATED.vRechnung AS tRechnung ON tRechnung.kRechnung = tZahlungsErinnerung.kRechnung
GROUP BY tRechnung.tKunde_kKunde
) AS Mahnungen ON Mahnungen.kKunde = dbo.tkunde.kKunde
LEFT JOIN (SELECT kKunde,
COUNT(kBestellung) AS Anzahl
FROM (SELECT DISTINCT kBestellung, kKunde
FROM dbo.tRMRetoure
GROUP BY kKunde, kBestellung
) AS RetourenBestellung
GROUP BY kKunde
) AS Retouren ON Retouren.kKunde = dbo.tkunde.kKunde
LEFT JOIN (SELECT SUM(fWert) AS Menge,
kKunde
FROM dbo.tGutschein
GROUP BY kKunde
) AS Gutschein ON Gutschein.kKunde = dbo.tkunde.kKunde
LEFT JOIN
(
SELECT tgutschrift.kKunde,
SUM(((
(CAST(tGutschriftPos.fVkNetto AS DECIMAL(25,13)) - (CAST(tGutschriftPos.fVkNetto AS DECIMAL(25,13)) * tGutschriftPos.fRabatt) / 100)
/
CASE
WHEN tgutschrift.fFaktor = 0
THEN 1
ELSE tgutschrift.fFaktor
END
) - (Verkauf.vAuftragPosition.fEkNetto / (
CASE
WHEN tgutschrift.fFaktor = 0
THEN 1
ELSE tgutschrift.fFaktor
END
))) * tGutschriftPos.nAnzahl) AS GutschriftWertNetto,
SUM(((
(CAST(tGutschriftPos.fVKPreis AS DECIMAL(25,13)) - (CAST(tGutschriftPos.fVKPreis AS DECIMAL(25,13)) * tGutschriftPos.fRabatt) / 100)
/
CASE
WHEN tgutschrift.fFaktor = 0
THEN 1
ELSE tgutschrift.fFaktor
END
)) * tGutschriftPos.nAnzahl) AS GutschriftWertBrutto
FROM tgutschrift
JOIN tGutschriftPos ON tGutschriftPos.tGutschrift_kGutschrift = tgutschrift.kGutschrift
JOIN Verkauf.vAuftragPosition ON vAuftragPosition.kAuftragPosition = dbo.tGutschriftPos.kBestellPos
WHERE tGutschrift.nStorno = 0 AND tGutschrift.nStornoTyp = 0
GROUP BY tgutschrift.kKunde
) AS Gutschrift ON Gutschrift.kKunde = dbo.tkunde.kKunde
GO