[SQL] Hoe kan ik een db opnieuw aanmaken

Pagina: 1
Acties:

  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Hi. Ik heb hier een aardige database die in een ontwikkel omgeving actief is. Nu is de database zover gereed dat deze in live kan gaan. Ik snap alleen niet hoe ik dat kan doen. (de ontwikkel heet db_ontw, de live db_live).

Ik heb in sql2000 met generate script een sql scriptje gemaakt. Daarna heb ik een nieuwe (lege) database aangemaak en wilde het scriptje hier tegen executen alleen ik heb geen idee hoe dat moet en waar dat moet. Ben geen sql2000 guru.

Het script is ingesteld dat alle user tabellen en views + indexen mee genomen moeten worden.

Edit: ik wil dus een lege database krijgen die qua tabellen, indexen en relaties exact het zelfde is als de ontwikkel database

https://k1600gt.nl


  • DRvDijk
  • Registratie: Juni 2001
  • Laatst online: 12-02 15:52
Ik gebruik dan MySQL, maar doe het ongeveer zo:

Dumpen
mysqldump devellopment > to_production.sql -h host -u user -p

Editten
Hier haal ik alle data uit de to_production.sql, maar laat de tabeldefinities staan

Restoren
Lege DB maken, production
mysql production < to_production.sql -h host -u user -p

Klaar :) Zal vast ook wel zoiets werkbaars zijn bij jou db..

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Je kan in SQL2000 volgens mij prima alleen de structuur exporteren naar een sql-file of een andere database.

Verwijderd

Gebruik om de scripts te draaien de Query Analyser.
Als je van alle tabellen/stored procedures/indexes e.d. de sql scripts hebt kan deze mbv van de query analyser over een geselecteerde database draaien.

  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op woensdag 10 juli 2002 12:31 schreef r-e-m het volgende:
Gebruik om de scripts te draaien de Query Analyser.
Als je van alle tabellen/stored procedures/indexes e.d. de sql scripts hebt kan deze mbv van de query analyser over een geselecteerde database draaien.
Okay,
Ga ik proberen.
Die query analyzer heb ik ergens in de menuutjes gezien

Donders het werkt..
Moest alleen wel de goede database aanvinken want ze kwamen ineens in de master terecht |:( (Gevalletje 'niet gehinderd door enige kennis'). Ik kreeg alleen wel deze fout tijdens het executen op de (dit keer goede) database:

----------------
Warning: The table 'tbl_Meldingen' has been created but its maximum row size (24419) exceeds the maximum number of bytes per row (8060). INSERT or UPDATE of a row in this table will fail if the resulting row length exceeds 8060 bytes.
----------------

Van de andere tabellen kreeg ik soortgelijke errors maar is niet relevant. Waarom krijg ik die ? Ik heb de database wel geprobeerd via de applicatie en alles werkt goed..

https://k1600gt.nl


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 23:25

Delphi32

Heading for the gates of Eden

Op woensdag 10 juli 2002 13:13 schreef shades het volgende:
...Ik kreeg alleen wel deze fout tijdens het executen op de (dit keer goede) database:

----------------
Warning: The table 'tbl_Meldingen' has been created but its maximum row size (24419) exceeds the maximum number of bytes per row (8060). INSERT or UPDATE of a row in this table will fail if the resulting row length exceeds 8060 bytes.
----------------

Van de andere tabellen kreeg ik soortgelijke errors maar is niet relevant. Waarom krijg ik die ? Ik heb de database wel geprobeerd via de applicatie en alles werkt goed..
Toeval, dat het met je applicatie werkt. Of simpel gezegd: mazzel. Vul al je velden in je applicatie maar eens met zoveel mogelijk gegevens, kijken of het dan wel wil crashen :)

Ik zou trouwens eens gaan kijken naar het datamodel, een kleine 25000 bytes om 1 record te beschrijven, da's aan de ruime kant. Heb je alles in varchar fields met een max length van 1000 of zo? De tekst van die Meldingen stop je toch wel in Memofields he?

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
mmmm ik hoop overigens niet dat dit een bedrijfskritische applicatie is, als ik dit zo hoor zal me niets verbazen als deze database user ook gewoon SA is en het zal me zelfs niet verbazen als de bende sa/blanc is

  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op woensdag 10 juli 2002 14:17 schreef raptorix het volgende:
mmmm ik hoop overigens niet dat dit een bedrijfskritische applicatie is, als ik dit zo hoor zal me niets verbazen als deze database user ook gewoon SA is en het zal me zelfs niet verbazen als de bende sa/blanc is
Jammer voor je maar dat is niet het geval,
Je ben bevooroordeelt. Ik weet niet goed hoe sql2000 werkt maar ben geen leek qua sysbeheer :Z

https://k1600gt.nl


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op woensdag 10 juli 2002 14:12 schreef Delphi32 het volgende:

[..]

Toeval, dat het met je applicatie werkt. Of simpel gezegd: mazzel. Vul al je velden in je applicatie maar eens met zoveel mogelijk gegevens, kijken of het dan wel wil crashen :)
Ja dat zal ik doen,
maar ik zou graag willen weten wat het nou inhoud. Kritiek vind ik geen probleem maar wil wel weten wat ik er aan kan doen om het op te lossen..
Ik zou trouwens eens gaan kijken naar het datamodel, een kleine 25000 bytes om 1 record te beschrijven, da's aan de ruime kant. Heb je alles in varchar fields met een max length van 1000 of zo? De tekst van die Meldingen stop je toch wel in Memofields he?
4 nvarchar velden op 4000 (max dus). Ik moet deze nog terugdraaien. Euh memofields ? die heb je toch alleen in access. Ik kan geen memoveld vinden in sql2000.

EDIT: Ik heb het idee dat ik varchar moet gebruiken voor de 3-tal velden (de in te kloppen text moet ruim 1000 karakters kunnen bevatten (1k denk ik ?)

https://k1600gt.nl


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Ik heb van de nvarchar (4000) varchar velden gemaakt en even getracht in te schatten hoeveel data ze er in kwijt willen.. Rond de 1k dus (1000 karakters, dus varchar(1000)
Scriptje van gemaakt en tegen een frisse database geexecute en donders:

-----
De command(s) completed succesfully
-----

https://k1600gt.nl


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 23:25

Delphi32

Heading for the gates of Eden

Op woensdag 10 juli 2002 21:19 schreef shades het volgende:
Ik heb van de nvarchar (4000) varchar velden gemaakt en even getracht in te schatten hoeveel data ze er in kwijt willen.. Rond de 1k dus (1000 karakters, dus varchar(1000)
Scriptje van gemaakt en tegen een frisse database geexecute en donders:

-----
De command(s) completed succesfully
-----
Ja dat is al een stuk beter, nu heb je nog maar 4x1000 bytes nodig om de boel kwijt te kunnen. En dat is ruim onder je marge van 8060.

Een memoveld in SQL 2000 heet een text veld, sorry dat ik verwarring stichtte.

Mijn kritiek richtte zich dus vooral op je stelling 'ik krijg die fout van te grote records, maar alles schijnt te werken'. Als je database meldt dat je een te grote record-definitie aanmaakt en alles werkt nog, dan komt dat hoogstwaarschijnlijk alleen omdat je nog niet geprobeerd had om extreem veel data in 1 record te stoppen, maw je test-acties zochten niet de grens op.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

/edit: *zucht* * Annie moet ietsjes sneller typen de volgende keer :'( ;)

De warning die je krijgt is heel simpel uit te leggen (gewoon vertalen van de melding), nl:
De maximale rowsize mag niet boven de 8060 bytes uitkomen. Op zich geen probleem voor SQL Server (vandaar de lagere severity van de error), behalve als je ook daadwerkelijk zoveel data probeert in te voeren, maar echt net is het natuurlijk niet.

Met rowsize wordt bedoeld alle datalengtes van je table definitie bij elkaar opgeteld. En met 4 * nvarchar(4000) zit je daar dus al ver boven.

Om even terug te komen op het datatype memo, de SQL Server variant daarvan is de (n)text.

Today's subliminal thought is:


  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Op woensdag 10 juli 2002 17:53 schreef shades het volgende:

[..]

Jammer voor je maar dat is niet het geval,
Je ben bevooroordeelt. Ik weet niet goed hoe sql2000 werkt maar ben geen leek qua sysbeheer :Z
Je bent geen leek qua systeembeheer maar mijnheer weet niet hoe ie een db opnieuw aanmaakt, sorry maar je snapt denk ik niet waar ik op doel.

  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op donderdag 11 juli 2002 00:23 schreef Delphi32 het volgende:

[..]

Ja dat is al een stuk beter, nu heb je nog maar 4x1000 bytes nodig om de boel kwijt te kunnen. En dat is ruim onder je marge van 8060.

Een memoveld in SQL 2000 heet een text veld, sorry dat ik verwarring stichtte.

Mijn kritiek richtte zich dus vooral op je stelling 'ik krijg die fout van te grote records, maar alles schijnt te werken'. Als je database meldt dat je een te grote record-definitie aanmaakt en alles werkt nog, dan komt dat hoogstwaarschijnlijk alleen omdat je nog niet geprobeerd had om extreem veel data in 1 record te stoppen, maw je test-acties zochten niet de grens op.
Bedankt voor de uitleg al begrijp ik 1 dingetje niet. Het is toch mogelijk om hele Word- of excel-document in te voeren. Deze gaan vaak boven die 8K (waarschijnlijk komen dit soort zaken allemaal in een cursus naar boven maar omdat de markt een beetje slap is mogen we die niet meer volgen :( )
Op donderdag 11 juli 2002 00:30 schreef Annie het volgende:
/edit: *zucht* * Annie moet ietsjes sneller typen de volgende keer :'( ;)

Met rowsize wordt bedoeld alle datalengtes van je table definitie bij elkaar opgeteld. En met 4 * nvarchar(4000) zit je daar dus al ver boven.

Om even terug te komen op het datatype memo, de SQL Server variant daarvan is de (n)text.
Ik heb varchar(1000) gebruikt. Is dat nou correct. Volgens MS is dat "Data can vary in number of chars but the lenght cannot exceed 8KB". Dat is toch goed dan. (Als ik nou 2 velden heb en stel die in op 8K dan is dat ook hoger als de max rowsize.. Kan sql2000 dat niet ? zie reply hierboven)
Op donderdag 11 juli 2002 02:21 schreef raptorix het volgende:

[..]

Je bent geen leek qua systeembeheer maar mijnheer weet niet hoe ie een db opnieuw aanmaakt, sorry maar je snapt denk ik niet waar ik op doel.
Nee, is begrijp je niet.. dat ik niet weet hoe ik een db aan moet maken heeft te maken met het feit dat ik geen dba'er ben. Wel staat overal vermeld dat je het sa moet voorzien van een password en dat je een andere db moet benaderen met een ander account. Maar laat maar zitten

https://k1600gt.nl


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op donderdag 11 juli 2002 12:03 schreef shades het volgende:

[..]

Bedankt voor de uitleg al begrijp ik 1 dingetje niet. Het is toch mogelijk om hele Word- of excel-document in te voeren. Deze gaan vaak boven die 8K (waarschijnlijk komen dit soort zaken allemaal in een cursus naar boven maar omdat de markt een beetje slap is mogen we die niet meer volgen :( )
Voor grote teksten kan je dus het (n)text datatype gebruiken of voor binary data de varbinary (of image).

Bij een deze "grotere" datatypen wordt een (16byte?) pointer naar de data opgeslagen in de row ipv de data zelf (alhoewel dat ook weer gedeeltelijk is gewijzigd van 7 naar 2000, maar dat kan je wel een keer nazoeken in de Books als je zin en/of tijd hebt).
Op donderdag 11 juli 2002 12:03 schreef shades het volgende:

[..]

Ik heb varchar(1000) gebruikt. Is dat nou correct. Volgens MS is dat "Data can vary in number of chars but the lenght cannot exceed 8KB". Dat is toch goed dan. (Als ik nou 2 velden heb en stel die in op 8K dan is dat ook hoger als de max rowsize.. Kan sql2000 dat niet ? zie reply hierboven)
sql2000 kan dat wel aan zolang de ingevoerde data maar niet boven de 8060 bytes komt (maar echt netjes vind ik het niet). Dus beter is om de rowsize nooit boven die 8060 te laten komen.
En met 4 velden van varchar(1000) zit je dus veilig.

Today's subliminal thought is:


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op donderdag 11 juli 2002 12:42 schreef Annie het volgende:

[..]

Voor grote teksten kan je dus het (n)text datatype gebruiken of voor binary data de varbinary (of image).

Bij een deze "grotere" datatypen wordt een (16byte?) pointer naar de data opgeslagen in de row ipv de data zelf (alhoewel dat ook weer gedeeltelijk is gewijzigd van 7 naar 2000, maar dat kan je wel een keer nazoeken in de Books als je zin en/of tijd hebt).
[..]

sql2000 kan dat wel aan zolang de ingevoerde data maar niet boven de 8060 bytes komt (maar echt netjes vind ik het niet). Dus beter is om de rowsize nooit boven die 8060 te laten komen.
En met 4 velden van varchar(1000) zit je dus veilig.
Die pointer wijst dan naar c:\documents\bla.doc ofzo ?

Ik ben zeker van plan om sql7/2000 te gaan leren alleen kan ik zelf de cursus gewoon niet betalen (baas wil het ook niet doen voorlopig). Zal veel met zelfstudie, vallen/opstaan moeten leren.

https://k1600gt.nl


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Op donderdag 11 juli 2002 13:49 schreef shades het volgende:

[..]

Die pointer wijst dan naar c:\documents\bla.doc ofzo ?
nee, naar een textimage. Eigenlijk hetzelfde als de normale data, gewoon een aantal pages binnen de database. Maar deze kunnen bijvoorbeeld wel op een losse schijf worden opgeslagen.
Ik ben zeker van plan om sql7/2000 te gaan leren alleen kan ik zelf de cursus gewoon niet betalen (baas wil het ook niet doen voorlopig). Zal veel met zelfstudie, vallen/opstaan moeten leren.
Misschien is het handig om alvast een goed boek te kopen (door baas?). Deze zijn lang niet zo duur als cursussen en dan kan je je alvast 'inleren'. Een testomgeving thuis op het werk doet overigens ook wonderen. Niets zo lekker als aanklooien in een database en je geen zorgen te hoeven maken over productie data of backups :D

Today's subliminal thought is:


  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01
Op donderdag 11 juli 2002 14:58 schreef Annie het volgende:
nee, naar een textimage. Eigenlijk hetzelfde als de normale data, gewoon een aantal pages binnen de database. Maar deze kunnen bijvoorbeeld wel op een losse schijf worden opgeslagen.
Ok..
Misschien is het handig om alvast een goed boek te kopen (door baas?). Deze zijn lang niet zo duur als cursussen en dan kan je je alvast 'inleren'. Een testomgeving thuis op het werk doet overigens ook wonderen. Niets zo lekker als aanklooien in een database en je geen zorgen te hoeven maken over productie data of backups :D
Goed idee.. heb gelijk even gebeld. Vonden ze geen probleem. Krijg volgende week het 70-229 boek (design en impl.) Ik had hier op werk al een test omgeving in de vorm van een aparte database (wel op dezelfde sql doos). Die 2 filetjes neem ik steeds mee naar huis waar ik ze weer attach.. Thx (all) so far....

https://k1600gt.nl

Pagina: 1