10. februar 2004 - 11:30Der er
11 kommentarer og 1 løsning
Syntaks fejl i scriptet der genererer min database
Jeg er ved at konventere en Postgre DB til en MSSQL DB. Der er lavt et script der kan gendanne databasen til Postgre serveren. Dette script har jeg så hentet ind i min SQL Query Analyzer, men den bruger jo TSQL syntaks.
Jeg har rettet en del fejl, men jeg har 2 tilbage som jeg ikke forstår.
Server: Msg 170, Level 15, State 1, Line 7 Line 7: Incorrect syntax near 'databaseid'.
Server: Msg 156, Level 15, State 1, Line 2235 Incorrect syntax near the keyword 'ADD'.
I linie 7, er 'databaseid' en parameter! 'AAD' fejlen er gentaget adskellige gange igennem alle COPY kaldene!
Jeg viser lige et udsnit af scriptet:
USE MASTER GO
CREATE DATABASE GHEM2 GO
USE GHEM2 GO
CREATE TABLE logdatabasetable ( databaseid character varying(50) NOT NULL, updateinterval integer, maxunits integer, datetimeformat character varying(50) )
Server: Msg 156, Level 15, State 1, Line 2235 Incorrect syntax near the keyword 'ADD'.
Men Jeg har stadig den fejl med Line 7: Incorrect syntax near 'databaseid'.
Kender du et sted hvor man kan lære sig tsql syntaks?? F.eks en pdf fil, som man kan downloade??
Jeg har også fået en fejl i syntaksen på understående kode:
CREATE CONSTRAINT TRIGGER "<unnamed>" AFTER INSERT OR UPDATE ON sqlserverconnectiontable FROM logdatabasetable NOT DEFERRABLE INITIALLY IMMEDIATE FOR EACH ROW EXECUTE PROCEDURE "RI_FKey_check_ins" ('<unnamed>', 'sqlserverconnectiontable', 'logdatabasetable', 'UNSPECIFIED', 'databaseid', 'databaseid');
Kan du også løse dette, fordobles pointene, så du altså får 40 point!
Jeg får forresten disse fejl nu. Som du kan se, blev fejlen med linie 7 ikke løst ved dit første løsningsforslag :o)
Server: Msg 170, Level 15, State 1, Line 7 Line 7: Incorrect syntax near 'databaseid'. Server: Msg 156, Level 15, State 1, Line 2801 Incorrect syntax near the keyword 'CONSTRAINT'.
får jeg en helt anden fejl end parameter syntaks fejlen, nemlig:
Server: Msg 102, Level 15, State 5, Line 19 Incorrect syntax near 'COPY'.
Jeg er overhovedet ikke inde i tsql syntaksen på dette stadie, da jeg startede i sidste uge, med at sætte mig ind i det.
Jeg er slet ikke klar over hvad det er for en syntaks den brokker sig over, da jeg finder det underligt, at den ændre syntaks fejlen, hvis jeg sætter compileren til at eksekvere den foregående sql kode først, end hvis jeg venter med at eksekvere koden til sidst
COPY er ikke SQL92 syntaks - det er data import, så det skal ske separat med BCP kommandoen eller en DTS pakke.
Din constraint trigger er heller ikke understøttet. Du skal enten skrive om et til statement-trigger (AFTER STATEMENT i stedet for FOR EACH ROW) eller til en rigtig constraint. Det afhænger lidt af hvad din procedure gør.
Hvis den blot sikrer at fremmednøgle er overholdt, så bør du angive den som en korrekt fremmednøgle:
alter table fktabel add foreign key fk_something on (fk_kolonne) references pktabel(pk_kolonne)
Sørg i øvrigt for at have indeks på fremmednøgler - det hjælper performance.
check også lige for querytype character(1) => querytype char(1)
I øvrigt, du benytter TEXT feltet. Det er et BLOB felt i SQL Server som understøtter 2GB tekst. Feltet kan ikke sorteres og visse operationer kan man ikke lave på det.
Altså det jeg arbejder med er et projekt, med at få en Postgre sql server byttet ud med en MSSQLserver. Den fil jeg bruger er genereret ud fra Postgre. Deres syntaks passer ikke sammen desværre. Jeg har fjernet den del af scriptet der indlæser dataerne, som er lagt med ud i scriptet, men jeg kan ikke få primær nøglerne og relationerne med. Hvis du vil, kan jeg maile dig scriptet, hvis du synes jeg giver et for vagt overblik.
Som sådan har jeg ikke fået løst mit problem, men det du svarer er helt sikkert rigtigt. Jeg tror bare vi misforstår hinanden.
Som sådan vil jeg acceptere dine svar, da de er relavante nok, men dit sidste svar er jeg for meget en nybegynder til at kunne rode med selv.
En tanke; Du kan lade SQL Server oprette tabeller og trække data over ved at oprette en ODBC forbindelse fra SQL Server værtsmaskinen til din PostGre SQL Server.
Derefter åbner du Enterprise Manager og vælger en Import Wizard. Du har nu mulighed for at importere data og tabeller i en ny database - og vupti, SQL Server sikrer håndterer den del for dig.
Nu har du kun tilbage at få flyttet procedurer, funktioner, triggere og relationer + indeks. Det er væsentligt nemmere.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.