/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MSSQL: Restore database
Fra : Jesper Stocholm


Dato : 19-07-05 08:08

Jeg har lavet en stored procedure, der kan lave en restore af en
database. Koden i den er


CREATE PROCEDURE dbo.RestoreDatabase
(
)
AS

restore database Northwind from disk = 'c:\test.bkf'
GO


Den virker sådan set som den skal - men jeg kunne godt tænke mig at
kunne specificere filen som en parameter til min SP.

Derfor prøvede jeg med


CREATE PROCEDURE dbo.RestoreDatabase
(
   @fileName NVARCHAR
)
AS

restore database Northwind from disk = @fileName
GO

Men nu virker det ikke. Fejlen jeg får ved afvikling af

exec dbo.restoredatabase 'c:\\test.bkf'

eller

exec dbo.restoredatabase 'c:\test.bkf'

er

Cannot open backup device 'C:\Programmer\Microsoft SQL Server\MSSQL
\BACKUP\c'. Device error or device off-line. See the SQL Server error
log for more details.

Hvordan skal jeg så få filnavnet med ned som parameter til min SP?




--
Jesper Stocholm
http://stocholm.dk

Japo stole sælges - http://japoarmstole.stocholm.dk

 
 
Peter Lykkegaard (19-07-2005)
Kommentar
Fra : Peter Lykkegaard


Dato : 19-07-05 11:28

"Jesper Stocholm" wrote
>
> CREATE PROCEDURE dbo.RestoreDatabase
> (
> @fileName NVARCHAR
> )
> AS
>
> restore database Northwind from disk = @fileName
> GO
>
> Men nu virker det ikke. Fejlen jeg får ved afvikling af
> exec dbo.restoredatabase 'c:\test.bkf'
>
> Cannot open backup device 'C:\Programmer\Microsoft SQL Server\MSSQL
> \BACKUP\c'. Device error or device off-line.

> Hvordan skal jeg så få filnavnet med ned som parameter til min SP?
>
Hehe, prøv at læse lidt op på brug af VarChar og NVarchar

Din fremgangsmåde er korrekt
Hvis du ikke angiver størrelsen på din variabel så antager den en størrelse
på 1 karakter

- Peter



Jesper Stocholm (19-07-2005)
Kommentar
Fra : Jesper Stocholm


Dato : 19-07-05 11:37

"Peter Lykkegaard" <peter.aghl@gmail.com> wrote in
news:42dcd59b$0$26092$edfadb0f@dread16.news.tele.dk:

> "Jesper Stocholm" wrote
>>
>> CREATE PROCEDURE dbo.RestoreDatabase
>> (
>> @fileName NVARCHAR
>> )
>> AS
>>
>> restore database Northwind from disk = @fileName
>> GO
>>
>> Men nu virker det ikke. Fejlen jeg får ved afvikling af
>> exec dbo.restoredatabase 'c:\test.bkf'
>>
>> Cannot open backup device 'C:\Programmer\Microsoft SQL Server\MSSQL
>> \BACKUP\c'. Device error or device off-line.
>
>> Hvordan skal jeg så få filnavnet med ned som parameter til min SP?
>>
> Hehe, prøv at læse lidt op på brug af VarChar og NVarchar

Crap ... ...

> Din fremgangsmåde er korrekt
> Hvis du ikke angiver størrelsen på din variabel så antager den en
> størrelse på 1 karakter

Jeg ved ikke hvorfor jeg ikke tænkte på det, da jeg så at den kun brugte
én af tegnene i min parameter, men da jeg nu har givet min NVARCHAR en
størrelse på 200, så virker det som det skal.

Tak for hjælpen ...



--
Jesper Stocholm
http://stocholm.dk

Japo stole sælges - http://japoarmstole.stocholm.dk

Jesper Stocholm (01-09-2005)
Kommentar
Fra : Jesper Stocholm


Dato : 01-09-05 15:48

"Peter Lykkegaard" <peter.aghl@gmail.com> wrote in
news:42dcd59b$0$26092$edfadb0f@dread16.news.tele.dk:

> "Jesper Stocholm" wrote
>>
>> CREATE PROCEDURE dbo.RestoreDatabase
>> (
>> @fileName NVARCHAR
>> )
>> AS
>>
>> restore database Northwind from disk = @fileName
>> GO
>>
>> Men nu virker det ikke. Fejlen jeg får ved afvikling af
>> exec dbo.restoredatabase 'c:\test.bkf'
>>
>> Cannot open backup device 'C:\Programmer\Microsoft SQL Server\MSSQL
>> \BACKUP\c'. Device error or device off-line.
>
>> Hvordan skal jeg så få filnavnet med ned som parameter til min SP?
>>
> Hehe, prøv at læse lidt op på brug af VarChar og NVarchar

Jeg har fået lidt yderligere udfordringer i forhold til dette. Mit setup
er:

Jeg modtager en backup af en database fx GImport. Denne backup kommer til
mig som en fil, der evt kunne ligge på c:\ftp\gdb.backup. Denne database
skal jeg lave en restore af på min eksisterende databaseserver. Derudover
skal jeg have lavet et par ting mere. I alt skal der gøres

1. Restore database fra filen på lokationen c:\ftp\gdb.backup.
Den skal gendannes med navnet "GImport".
2. Flyt de gendannede filer (db + log) til en anden lokation,
fx e:\gdatabase.x og e:\gdatabase.log
3. Giv en bruger på serveren fuld rettigheder til den nu
gendannede database.

Jeg har naturligvis kiget i BOL og det ser ud til, at jeg skal bruge
RESTORE FILELISTONLY.

Jeg har bikset følgende sammen

RESTORE FILELISTONLY
   FROM DISK = 'c:\ftp\mp-back.dat'
RESTORE database GImport
   FROM DISK = 'c:\ftp\mp-back.dat'
   WITH NORECOVERY,
   MOVE 'MP' TO 'D:\Data\mpgi.mdf',
   MOVE 'MP_log' TO 'D:\Data\mpgi_log.ldf'
GO

Det virker sådan set fint ... næsten. Databasen bliver oprettet og
filerne flyttes til det korrekte sted. Men når jeg via Ent.Mgr ser på
oversigten over databaser, så er den nye database grå og i parentes står
der "loading".

I QA får jeg beskeden

Processed 132032 pages for database 'GImport', file 'MP' on file 1.
Processed 1 pages for database 'GeusImport', file 'MP_log' on file 1.
RESTORE DATABASE successfully processed 132033 pages in 46.329 seconds
(23.346 MB/sec).

.... men den forbliver ved med at være grå.

Mangler jeg noget i ovenstående kode ... eller er fejlen en helt anden?



--
Jesper Stocholm
http://stocholm.dk

Japo stole sælges - http://japoarmstole.stocholm.dk

Jesper Stocholm (02-09-2005)
Kommentar
Fra : Jesper Stocholm


Dato : 02-09-05 08:32

Jesper Stocholm <j@stocholm.invalid> wrote in
news:Xns96C4AAFADA86Fstocholmdk@130.225.247.90:

> Jeg har bikset følgende sammen
>
> RESTORE FILELISTONLY
> FROM DISK = 'c:\ftp\mp-back.dat'
> RESTORE database GImport
> FROM DISK = 'c:\ftp\mp-back.dat'
> WITH NORECOVERY,

Hmm ... hvis jeg laver denne linie om til

WITH RECOVERY

Så virker det :)

Nu mangler jeg reelt blot at give et sql-login (usrGImport) på min
databaseserver læseadgang til alle tabeller i min nye database. Hvis jeg
kigger i BOL, så ser det dog ud til, at det kun er muligt at lave en
GRANT på et enkelt objekt som fx en tabel - er det korrekt?

--
Jesper Stocholm
http://stocholm.dk

Japo stole sælges - http://japoarmstole.stocholm.dk

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste