Avatar billede jytte Nybegynder
19. august 2003 - 12:06 Der er 34 kommentarer og
2 løsninger

Ønskes: database-dump med insertsætninger

Jeg har en MS-SQL-database med en masse tabeller med indhold.

Jeg skal nu lave en exe.fil der opretter en kopi af denne database på en anden maskine.

Jeg har de programmer jeg skal bruge for at lave denne fil,men mangler et værktøj der kan lave de create og insert-sætninger der skal til for at oprette databasen forfra fra scratch.

Jeg kan godt få MS-sql til at oprette createsætningerne, men insertsætningerne kniber det med ..

Har jeg en konkret tabel kan jeg godt lave et script der laver insertsætningerne til denne tabel, men jeg vil have et værktøj (eller hjælp til selv at lave værktøjet i fx. ASP) der givet en vilkårlig tabel kan generere de insertsætninger der skal til at oprette alle posterne i tabellen.

Jeg har en idé om at jeg skal bruger systemtabellerne...

Jeg vil også gerne have forslag til hvad jeg gør ved autoincrement-felterne samt hvad jeg gør hvis der er fremmednøgler involveret.
Avatar billede arne_v Ekspert
19. august 2003 - 12:24 #1
Med hensyn til dump af data så har de fleste DB API'er inklusive
ODBC mulighed for at hente tabel info med felt navne og felt typer.

Med hensyn til autoincrement felter, så har MS SQLServer en kommando:
  SET IDENTITY_INSERT ON
  SET IDENTITY_INSERT OFF
til dette formål.
Avatar billede ldanielsen Nybegynder
19. august 2003 - 12:35 #2
Har du overvejet at lave en DTS task?
Avatar billede jytte Nybegynder
19. august 2003 - 12:38 #3
Når du skriver

"at hente tabel info med felt navne og felt typer."

kan du så give mig en SQL-sætning der henter feltnavne og felttyper ud for en given tabel?

og betyder "SET IDENTITY_INSERT OFF" at jeg efterfølgende kan lave insertsætninger i alle tabeller med værdier i autoincrement-felterne ?
Avatar billede jytte Nybegynder
19. august 2003 - 12:39 #4
>Idanielsen
Hvad er en DTS task ?
Avatar billede arne_v Ekspert
19. august 2003 - 12:42 #5
SET IDENTITY_INSERT ON gør at du kan indsætte værdier i et autoincrement felt.
Avatar billede arne_v Ekspert
19. august 2003 - 12:44 #6
Og nej ODBC bruger ikke SQL sætninger men specielle API kald til
at hente den info.
Avatar billede arne_v Ekspert
19. august 2003 - 12:46 #7
Men hvis jeg husker rigtigt så ligger tabeller i sysobjects tabellen
og felter i syscolumns tabellen.
Avatar billede jytte Nybegynder
19. august 2003 - 12:50 #8
>arne v

jeg har lige slået IDENTITY_INSERT op -- det ser ud til at man skal angive hvilken tabel de drejer sig om og at der kun kan være en tabel i en session med IDENTITY_INSERT ON af gangen.

Normalt arbejder jeg med ASP hvor jeg har en connection-string jeg bruger til at connecte til databasen - jeg mener at det er en DSN-forbindelse jeg plejer at bruge. Så jeg er ikke helt med på hvordan jeg får felt navne og felt-typer hentet via min connection ?
Avatar billede ldanielsen Nybegynder
19. august 2003 - 12:56 #9
I Enterprise manager finder du "Data Transformation Services > Local Packages"

Højreklik og lav en "New Package"

En genvej til at komme igang er:
Højreklik på "Tables" under den database som du vil kopiere fra, Vælg "All Tasks > Export data".
Vælg hvad du vil kopiere, og hvordan, og til sidst vælger du "Save DTS PAckage" i stedet for "Run Immediately", vælg "SQL Server", og du har en fix og færdig DTS pakke, eller prøv evt at vælge "Visual Basic File", det har jeg ikke selv leget med.

Pakken kan efterfølgende finde i "Local Packages"
Avatar billede arne_v Ekspert
19. august 2003 - 12:56 #10
Ja.

Og det er lidt irriterende.

Man slår det til for en tabel.

Skovler data ind i den.

Slår det til for næste tabel.

Skovler data ind i den.

Men sådan er det.
Avatar billede jytte Nybegynder
19. august 2003 - 13:13 #11
>Idanielsen

Det er ikke lige det jeg er interesseret i da jeg faktisk SKAL have genereret
de konkrete insertsætninger.
Avatar billede jytte Nybegynder
19. august 2003 - 13:23 #12
>arne v

jeg fandt mine tabeller i sysobject og de tilhørende felter i syscolumns.
Men det er jo ikke helt nok.
Jeg har vel også brug for felternes datatyper samt angivelse af defaultværdier og om feltet er primær nøgle eller fremmednøgle samt om det må være null ...

Egentlig har jeg vel brug for en reference til et sted jeg kan finde en liste over indholdet af systemtabellerne (evt et E-R-diagram)
Avatar billede jytte Nybegynder
19. august 2003 - 14:09 #13
OK jeg prøver om jeg kan lave nogle ASP-scripts og få det til at virke.
Jeg vender tilbage senere.
Avatar billede arne_v Ekspert
19. august 2003 - 15:49 #14
Jeg har lige læst lidt på noget gammelt kode.

SP_TABLES

viser tabeller og views

kolonne 3 = navn
kolonne 4 = type (TABLE eller VIEW)

SB_COLUMNS tabelnavn

viser kollonner i en tabel

kolonne 4 = navn
kolonne 5 = type (der er symbolske konstanter i sqlfront.h eller sqldb.h)
kolonne 8 = længde
kolonne 9 = antal decimaler
Avatar billede jytte Nybegynder
20. august 2003 - 08:44 #15
>arne v
Jeg kan ikke finde noget der hedder SP_TABLES eller SB_COLUMNS ?
Er det navne der findes i MS SQL ?
Avatar billede arne_v Ekspert
20. august 2003 - 10:45 #16
Det er 2 stored procedures !
Avatar billede jytte Nybegynder
20. august 2003 - 11:32 #17
OK jeg har aldrig lavet stored procedures før, så jeg vil helst lave det uden disse (i hvert fald i første omgang).

Men det ser nu også lovende ud at slå op i systemtabellerne jeg tror jeg også vil bruge dem til at lave create-sætningerne. Men uden et E-R-diagram over systemtabellerne tager det lidt lang tid at finde de sammenhænge jeg har brug for.
Avatar billede arne_v Ekspert
20. august 2003 - 11:36 #18
Du behøver ikke lave dem.

Kun køre dem.
Avatar billede jytte Nybegynder
20. august 2003 - 11:50 #19
Jeg kan kun se nogle stored procedures som begynder med dt_  og jeg er ikke helt klar over hvordan man kører en stored procedure
Avatar billede arne_v Ekspert
20. august 2003 - 11:57 #20
De ligger i master databasen.

De kan køres i Query Analyser bare ved at skrive navnet og eventuelle argumenter.

Eller køres fra ASP.
Avatar billede jytte Nybegynder
20. august 2003 - 12:47 #21
Kan du ikke give mig syntaksen for at køre f.eks. SP_TABLES i query analyzer samt fortælle mig om det er master-databasen der skal være valgt eller den database hvori man har en tabel som SP_TABLES skal køres på.
Avatar billede arne_v Ekspert
20. august 2003 - 12:53 #22
Du går ind i QA, vælger den relevante database og skriver:

SP_TABLES

(den søger selv efter SP i master)

Det er formentlig kun denm hvor kolonne 4 er "TABLE" du er interesseret i,
men det er da til at teste på i noget ASP kode.
Avatar billede jytte Nybegynder
20. august 2003 - 13:10 #23
Nåh .. SP står for stored procedures (SB_COLUMNS var en trykfejl :-))

Jeg kan se at SP_COLUMNS 'tabelnavn' giver mig "int identity" hvor mit eget SQL-udtræk fra systemtabellerne ikke fik identity med.

Men jeg skal lige noget principielt om stored procedures:

Kan du forklare mig hvad der adskiller views fra stored procedure udover at de frembringes på forskellig måde ?
Avatar billede arne_v Ekspert
20. august 2003 - 13:15 #24
SP_ prefix bruges til de fleste af stored prorcedures der kommer fra MS.

Stored procedures er meget anderledes and views.

Et view er resulatet af en query.

En stored procedure kan returnere resulatet af en query, men den
kan også udføre en UPDATE eller INSERT eller returnere flere
resulater af queries.

Der er både performance mæssige og sikkerhedsmæssige fordele ved
at bruge stored procedures.
Avatar billede jytte Nybegynder
20. august 2003 - 13:18 #25
Men hvis nu en konkret 'stored procedure' er resultatet af en query kan den så bruges på samme måde som views. F.eks i en subselect ?

hvad er de sikkerhedmæssige fordele ved at bruge stored procedures ?
Avatar billede jytte Nybegynder
20. august 2003 - 13:21 #26
Hov kan det passe at SP_COLUMNS 'tabelnavn' ikke har et felt der fortæller mig om feltet er eller er del af PRIMARY KEY ?
Avatar billede arne_v Ekspert
20. august 2003 - 13:22 #27
Nej stored procedures kaldes - de kan ikke uden videre
bruges i SQL.

[men man kan kigge i sourcen til den stored procedure og "låne"]
Avatar billede arne_v Ekspert
20. august 2003 - 13:24 #28
En stored procedure har adgang til data som ejeren af den stored
procedure d.v.s. at hvsi man giver folk ingen adgang til en tabel men
adgang til at køre nogle stored procedures (som så har adgang til tabellen),
så kan man styre folks adgang til data meget bedre.
Avatar billede arne_v Ekspert
20. august 2003 - 13:28 #29
Det er rigtigt, men:

SP_PKEY tabelnavn

afslører primary key.
Avatar billede arne_v Ekspert
20. august 2003 - 13:29 #30
SP_PKEYS tabelnavn

med S til sidst.
Avatar billede jytte Nybegynder
20. august 2003 - 13:37 #31
SUPER ! så tror jeg jeg har de nødvendige informationer.

Jeg vender tilbage med point når jeg (forhåbentlig) har fået mit database dump til at virke.

Foreløbig mange tak for hjælpen
Avatar billede jytte Nybegynder
21. august 2003 - 10:16 #32
Nu har jeg fået genereret et databasedump

Tusind tak for hjælpen arne v  og smid lige et svar så du kan få point

(ved du evt hvad tabellen dt_properties er for en ? den har TABLE_TYPE TABLE men det er ikke en tabel jeg har lavet)
Avatar billede arne_v Ekspert
21. august 2003 - 10:21 #33
svar
Avatar billede arne_v Ekspert
21. august 2003 - 10:22 #34
Den siger mig ikke lige noget.
Avatar billede arne_v Ekspert
21. august 2003 - 10:44 #35
Du skal ihvertfald ikke slette den.
Avatar billede jytte Nybegynder
22. august 2003 - 13:13 #36
Bare for en ordens skyld:

jeg tror dt_properties er en tabel der opstod da jeg lavede et "E-R-diagram" over mine tabeller.
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