が、これは私がに落ち着いものです:
BACKUP DATABASE [OldDBName] TO DISK = 'path' WITH COPY_ONLY;
if (objectProperty(object_id('tmp_restore'), 'IsProcedure') is not null)
drop procedure dbo.tmp_restore
GO
CREATE PROCEDURE dbo.tmp_restore
@backup_path NVARCHAR(MAX)
AS
BEGIN
SET NOCOUNT ON;
RESTORE FILELISTONLY FROM DISK = @backup_path;
END
GO
CREATE TABLE #TEMP(
LogicalName VARCHAR(64), PhysicalName VARCHAR(130),
[Type] VARCHAR(1), FileGroupName VARCHAR(64),
Size DECIMAL(20, 0), MaxSize DECIMAL(25,0),
FileID bigint, CreateLSN DECIMAL(25,0),
DropLSN DECIMAL(25,0), UniqueID UNIQUEIDENTIFIER,
ReadOnlyLSN DECIMAL(25,0), ReadWriteLSN DECIMAL(25,0),
BackupSizeInBytes DECIMAL(25,0), SourceBlockSize INT,
filegroupid INT, loggroupguid UNIQUEIDENTIFIER,
differentialbaseLSN DECIMAL(25,0), differentialbaseGUID UNIQUEIDENTIFIER,
isreadonly BIT, ispresent BIT, TDEThumbpr DECIMAL)
Insert into #TEMP exec dbo.resware_tmp_restore @backup_path = 'path';
GO
DECLARE @NameData VARCHAR(64)
DECLARE @NameLog VARCHAR(64)
Set @NameData = (Select LogicalName from #TEMP t where t.Type like 'D')
Set @NameLog = (Select LogicalName from #TEMP t where t.Type like 'L')
RESTORE DATABASE [newDBName] FROM DISK = 'path'
WITH RECOVERY,
MOVE @NameData TO 'path_Data.mdf',
MOVE @NameLog TO 'path_Log.ldf'
GO
DROP TABLE #TEMP
明らかに古い/ NewDBNameとパスが適切な値で充填する必要があり、しかし、これはうまくいくはずです。
読むの共同設立者だ(https://msdn.microsoft [関連MSDNのページでは、この例で。] .com/en-us/library/ms186858.aspx#copying_db_using_bnr)また、[このリンクも参照してください。](https://msdn.microsoft.com/en-us/library/ms189109.aspx#TsqlProcedure ) –
@ZoharPeledええ、それ以前に見つかったのですが、 '_Data'と' _log'セクションの名前を必ずしも持っているとは限りません。これらをbakファイルから取得する方法はありますか? – Hovestar
私が知っているわけではありません。 –