Ik wil graag het volgende:
uit de master database informatie halen over de locatie van een database:
select filename from sysdatabases where name in ("databasenaam")
die locatie wil ik dan weer gebruiken om de ldf te verwijderen.
mijn script tot nu:
------------------------------------------------------------------------------------------------------------------------
@ECHO OFF
@ECHO Logfile opnieuw opbouwen.
@SET /P USR_INPUT=[Database:]
OSQL -E -Q "sp_configure 'allow', 1"
OSQL -E -Q "update sysdatabases set status = 32768 where dbid = (select dbid from sysdatabases where name='%USR_INPUT%')"
set name=OSQL -E -d master -Q "select filename from sysdatabases where name in ("%USR_INPUT%")"
net stop sqlserveragent
net stop mssqlserver
copy LOCATIE\%USR_INPUT%*.ldf" LOCATIE\%USR_INPUT%*.oudldf"
net start mssqlserver
net start sqlserveragent
OSQL -E -S -Q "dbcc rebuild_log ('%USR_INPUT%', LOCATIE\%USR_INPUT%.ldf')"
OSQL -E -S -Q "update sysdatabases set status = 16 where dbid= (select dbid from sysdatabases where name='%USR_INPUT%')"
OSQL -E -S -Q "sp_configure 'allow', 0"
------------------------------------------------------------------------------------------------------------------
Het script werkt prima, alleen ik moet nu dus nog een tweede user input ingeven waar de locatie van de database staat. Echter ik wil dus bovenstaande query, herhaal:
select filename from sysdatabases where name in ("databasenaam")
in osql gebruiken om ook nog de locatie van de mdf (en dus de ldf) voor het afsluiten van de service te "kopiëren" en weer te gebruiken bij de delete regel (locatie dikgedrukt)
Dus een SET LOCATION = en dan de uitkomst van de query minus de databasenaam.mdf.
iemand enig idee?
uit de master database informatie halen over de locatie van een database:
select filename from sysdatabases where name in ("databasenaam")
die locatie wil ik dan weer gebruiken om de ldf te verwijderen.
mijn script tot nu:
------------------------------------------------------------------------------------------------------------------------
@ECHO OFF
@ECHO Logfile opnieuw opbouwen.
@SET /P USR_INPUT=[Database:]
OSQL -E -Q "sp_configure 'allow', 1"
OSQL -E -Q "update sysdatabases set status = 32768 where dbid = (select dbid from sysdatabases where name='%USR_INPUT%')"
set name=OSQL -E -d master -Q "select filename from sysdatabases where name in ("%USR_INPUT%")"
net stop sqlserveragent
net stop mssqlserver
copy LOCATIE\%USR_INPUT%*.ldf" LOCATIE\%USR_INPUT%*.oudldf"
net start mssqlserver
net start sqlserveragent
OSQL -E -S -Q "dbcc rebuild_log ('%USR_INPUT%', LOCATIE\%USR_INPUT%.ldf')"
OSQL -E -S -Q "update sysdatabases set status = 16 where dbid= (select dbid from sysdatabases where name='%USR_INPUT%')"
OSQL -E -S -Q "sp_configure 'allow', 0"
------------------------------------------------------------------------------------------------------------------
Het script werkt prima, alleen ik moet nu dus nog een tweede user input ingeven waar de locatie van de database staat. Echter ik wil dus bovenstaande query, herhaal:
select filename from sysdatabases where name in ("databasenaam")
in osql gebruiken om ook nog de locatie van de mdf (en dus de ldf) voor het afsluiten van de service te "kopiëren" en weer te gebruiken bij de delete regel (locatie dikgedrukt)
Dus een SET LOCATION = en dan de uitkomst van de query minus de databasenaam.mdf.
iemand enig idee?
[ Voor 8% gewijzigd door Palthe op 16-06-2006 16:11 ]