Avatar billede strange_poulsen Nybegynder
10. februar 2004 - 11:30 Der 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)
)

GO
--
-- TOC entry 3 (OID 16979)
-- Name: pga_queries; Type: TABLE; Schema: public; Owner:
-- Administrator
--

CREATE TABLE pga_queries (
    queryname character varying(64),
    querytype character(1),
    querycommand text,
    querytables text,
    querylinks text,
    queryresults text,
    querycomments text
)

GO

*
*
*
*

--
-- Data for TOC entry 99 (OID 16977)
-- Name: logdatabasetable; Type: TABLE DATA; Schema: public;
-- Owner: Administrator
--

COPY logdatabasetable (databaseid, updateinterval, maxunits, datetimeformat) FROM stdin;
LOGDATA    0    50    10:10
\.

--
-- TOC entry 57 (OID 24573)
-- Name: logdatabasetable_pkey; Type: CONSTRAINT; Schema:
-- public; Owner: Administrator
--

ALTER TABLE ONLY logdatabasetable
    ADD CONSTRAINT logdatabasetable_pkey PRIMARY KEY (databaseid);

ADD CONSTRAINT vil den altså ikke acceptere.

Starten af den fil jeg loader ind har jeg ændret til
USE MASTER
GO
CREATE DATABASE GHEM2
GO
osv, men den oprindelige var:




--
-- PostgreSQL database dump
--

\connect - "Administrator"

SET search_path = public, pg_catalog;

--
-- TOC entry 2 (OID 16977)
-- Name: logdatabasetable; Type: TABLE; Schema: public; Owner: Administrator
--

CREATE TABLE logdatabasetable (
    databaseid character varying(50) NOT NULL,
    updateinterval integer,
    maxunits integer,
    datetimeformat character varying(50)
);
*
*
*
*
*
osv

Hvad er det jeg gør forkert???
Avatar billede trer Nybegynder
10. februar 2004 - 12:18 #1
character varying skal du rette til varchar

fx databaseid varchar(50) NOT NULL
og
integer til "int"

fjern ONLY fra din alter table
Avatar billede trer Nybegynder
10. februar 2004 - 12:18 #2
ovenstående var et svar :-)
Avatar billede strange_poulsen Nybegynder
10. februar 2004 - 13:10 #3
Svaret hjalp på alle de fejl jeg fik med

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!

På forhånd tak.
Strange
Avatar billede strange_poulsen Nybegynder
10. februar 2004 - 13:10 #4
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'.
Avatar billede strange_poulsen Nybegynder
10. februar 2004 - 13:37 #5
Hvis jeg fjerner GO'et lige før

COPY logdatabasetable (databaseid, updateinterval, maxunits, datetimeformat) FROM stdin;
LOGDATA    0    50    10:10

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
Avatar billede trer Nybegynder
10. februar 2004 - 13:52 #6
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.
Avatar billede trer Nybegynder
10. februar 2004 - 13:53 #7
Mht TSQL syntaks. Du kan downloade BOOKS ONLINE fra http://www.microsoft.com/sqlserver

Men den burde være installeret sammen med Enterprise Manager og Query Analyzer.
Avatar billede strange_poulsen Nybegynder
10. februar 2004 - 15:40 #8
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.
Avatar billede trer Nybegynder
10. februar 2004 - 18:25 #9
Du må godt prøve at maile postgre-scriptet til mig - jeg får sikkert en chance for at kigge på det enten i aften eller i morgen.

Mail-addr er trer.fjernmig@mail.dk
Avatar billede trer Nybegynder
10. februar 2004 - 23:14 #10
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.
Avatar billede strange_poulsen Nybegynder
11. februar 2004 - 11:15 #11
Jeg kan ikke maile til den mail adresse. Mailbotten siger at den mailadd ikke findes
Avatar billede trer Nybegynder
11. februar 2004 - 11:43 #12
eh... har du fjernet .fjernmig fra mailadressen?
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester