Manchmal unter gewissen Umständen kann es vorkommen
SQL Server 2005 SQL Server 2008
daß man eine Datenbank kopieren möchte, aber dies nicht über das Management Studio oder ein DTS machen möchte bzw. kann.
Kategorie daß man eine Datenbank kopieren möchte, aber dies nicht über das Management Studio oder ein DTS machen möchte bzw. kann.
Hierzu folgende StoredProc:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER PROCEDURE [dbo].[SP_COPY_DATABASE] (@DbName varchar(100), @NewDbName varchar(100))
AS
declare @DataName as varchar ( 100 )
declare @LogName as varchar ( 100 )
declare @DataPath as varchar ( 100 )
declare @LogPath as varchar ( 100 )
set @DataName = ( select top 1 name from sysfiles where filename like '%.mdf%' )
set @LogName = ( select top 1 name from sysfiles where filename like '%.ldf%' )
set @DataPath = ( select top 1 filename from sysfiles where filename like '%.mdf%' )
set @LogPath = ( select top 1 filename from sysfiles where filename like '%.ldf%' )
set @DataPath = replace ( @DataPath , @DBName , @NewDBName)
set @LogPath = replace ( @LogPath , @DbName , @NewDBName)
if exists ( select * from master . dbo . sysdevices where name = 'CopyBackup' )
exec master . dbo . sp_dropdevice CopyBackup
EXEC sp_addumpdevice 'disk' , 'CopyBackup' , 'CopyBackup.bak'
BACKUP DATABASE @DbName TO CopyBackup WITH NOFORMAT, INIT, NAME = N'KOPIE', SKIP, NOREWIND, NOUNLOAD, STATS = 10
RESTORE DATABASE @NewDbName FROM CopyBackup
WITH FILE = 1 ,
MOVE @DataName TO @DataPath ,
MOVE @LogName TO @LogPath ,
NOUNLOAD ,
STATS = 10
if exists ( select * from master . dbo . sysdevices where name = 'CopyBackup' )
exec master . dbo . sp_dropdevice CopyBackup
Gruß und Viel Spaß!
JJR