Avatar billede pingo Nybegynder
20. juni 2000 - 11:44 Der er 13 kommentarer og
1 løsning

Stored procedure til at kopiere en database?

Hejsa...

Jeg har brug for en stored procedure der kan kopiere en database - dvs. gøre nøjagtigt det samme som når man siger "import data" og vælger "transfer objects and data between SQL Server 7 databases" - og så bare med de default values den vælger - hvilket er alt..

Kan det lade sig gøre?

Jeg vil gerne kunne kalde proceduren med FraDatabasenavn, TilDatabasenavn - og hvis den så kan oprette databasen oven i købet - så er det endnu bedre...

Jeg sætter 1000 point!
Avatar billede baunsgaard Nybegynder
20. juni 2000 - 12:22 #1
Skal det være et en stored procedure? Med andre ord: Må det ikke være script?

Hvis det må være script er det nemt...
Avatar billede pingo Nybegynder
20. juni 2000 - 13:26 #2
Det må godt være et script...

Jeg skal bare kunne kalde det fra ASP - og det må IKKE kun være et der kopier tabellerne..

Det skal være hele databasen med indhold og det hele - alle auto ID numre skal være de samme - osv. osv - som hvis jeg havde kopieret databasen...
Avatar billede baunsgaard Nybegynder
20. juni 2000 - 15:50 #3
Nedenfor er en lille procedure, der laver en totalkopi af en database. Den opretter ikke selv databasen - gør det med 'CREATE DATABASE dbName' som et almindeligt SQL-kald, det er det nemmeste.

Jeg har kun testet det på en W2K Server med SQL2K beta 2, men det burde virke med SQL7. Det tager laaaaang tid for en stor database, men det er du vel klar over!


Sub TransferObjs(strServer, strLogin, strPassword, strSource, strDestination)
    Set sqlServer = Server.CreateObject("SQLDMO.SQLServer")
   
    sqlServer.Connect strServer, strLogin, strPassword
    Set db = sqlServer.Databases(strSource)
   
    Set trn = Server.CreateObject("SQLDMO.Transfer")
    trn.CopyData = 1 ' SQLDMOCopyData_Replace
    trn.CopySchema = True
    trn.CopyAllObjects = True
   
    trn.DestDatabase = strDestination
    trn.DestServer = strServer
    trn.DestLogin = strLogin
    trn.DestPassword = strPassword
    trn.IncludeDependencies = True
       
    db.transfer trn
   
    Set sqlServer = Nothing
End Sub

Avatar billede pingo Nybegynder
20. juni 2000 - 15:56 #4
Fedt..

Kan du lave et hurtigt lille eksempel på hvordan man kalder det fra ASP?
Avatar billede baunsgaard Nybegynder
20. juni 2000 - 16:02 #5
Meget enkelt:

<%
TransferObjs "myServer", "sa", "hemmeligt", "SourceDB", "DestDB"
%>

Avatar billede pingo Nybegynder
20. juni 2000 - 16:06 #6
Ok - fedt.

Jeg prøver den lige af...

Én sidste ting..hvis jeg skal lave en default database - en ren tom med Create Database - hvordan ser sætningen så ud...

Kiggede lige - det så ret wierd ud..
Avatar billede baunsgaard Nybegynder
20. juni 2000 - 16:10 #7
function CreateDB(strConn, strDatabase)
    ' strConn er din connection string, fx. "DSN=SQLServer;UID=sa;PWD=hemmeligt;"
    ' strDatabase er det nye database navn
    set conn = Server.CreateObject("ADODB.Connection")
    conn.Open strConn
    conn.Execute "CREATE DATABASE " & strDatabase
    set conn = nothing
end sub

BTW, ikke testet !!!
Avatar billede pingo Nybegynder
20. juni 2000 - 16:12 #8
Fedt - det virker!
Avatar billede baunsgaard Nybegynder
20. juni 2000 - 16:20 #9
Hvad havde du regnet med :-)
Avatar billede pingo Nybegynder
20. juni 2000 - 16:23 #10
Men hvorfor virker dette ikke:

CREATE Database 'Brian Demo 1 Database'

eller dette:

CREATE Database Brian Demo 1 Database
Avatar billede pingo Nybegynder
20. juni 2000 - 16:25 #11
Man kan jo aldrig vide... ;-)

Men det er da fedt...
Avatar billede baunsgaard Nybegynder
20. juni 2000 - 16:29 #12
Fordi den første er en streng og den den er samling ukendte ord.

Hvis man skal overbevise en SQL server om at disse tegn er ok i en sammenhæng skal der benyttes kantede paranteser.

Dvs. CREATE DATABASE [Brian Demo 1 Database] virker !!!
Avatar billede pingo Nybegynder
20. juni 2000 - 16:47 #13
Jeg får pludselig en fejl:

Microsoft SQL-DMO error '800a0005'

[SQL-DMO]CreateFile error on 'CLUSQL.Demo - ShopCenter Danmark Database.LOG'. Access is denied.

/ny/create.asp, line 23

Linie 23:

db.transfer trn


Umiddelbart skulle der være adgang i SQL mappen?
Avatar billede baunsgaard Nybegynder
20. juni 2000 - 23:32 #14
Muligvis har du allerede åbnet databasen?
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