从 .bak 文件恢复时,可以将 table 重命名为新数据库吗?
Can you rename a table to the new database when restoring from a .bak file?
所以我几乎写完了我必须从 sql 2008 年到 2016 年的备份文件中恢复的所有 SQL 代码。问题是,table 之一名为 Students 在旧数据库和新数据库中具有相同的 table 结构(我也在恢复到新数据库),但在旧数据库中,Students 名为 Stdnents。有什么方法可以正确恢复吗?
RESTORE FILELISTONLY FROM DISK='f:\newBDbackup.bak'
declare @DefaultData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @DefaultData output
declare @DefaultLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', @DefaultLog output
declare @DefaultBackup nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', @DefaultBackup output
declare @MasterData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters', N'SqlArg0', @MasterData output
select @MasterData=substring(@MasterData, 3, 255)
select @MasterData=substring(@MasterData, 1, len(@MasterData) - charindex('\', reverse(@MasterData)))
declare @MasterLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters', N'SqlArg2', @MasterLog output
select @MasterLog=substring(@MasterLog, 3, 255)
select @MasterLog=substring(@MasterLog, 1, len(@MasterLog) - charindex('\', reverse(@MasterLog)))
select
isnull(@DefaultData, @MasterData) DefaultData,
isnull(@DefaultLog, @MasterLog) DefaultLog,
isnull(@DefaultBackup, @MasterLog) DefaultBackup
declare @NewDefaultData nvarchar(512)
select isnull(@NewDefaultData, CONVERT(nvarchar(512), @DefaultData))
declare @NewDefaultLog nvarchar(512)
select isnull(@NewDefaultLog, CONVERT(nvarchar(512), @DefaultLog))
RESTORE DATABASE NewSqlDatabase FROM DISK='f:\newBDbackup.bak'
WITH
MOVE 'newDatabase' TO @NewDefaultData,
MOVE 'newDatabase_log' TO @NewDefaultLog
不确定我是否理解这个问题,但你能不能在恢复后立即将 table "Stdnents" 重命名为 "Students" (sp_rename)
所以我几乎写完了我必须从 sql 2008 年到 2016 年的备份文件中恢复的所有 SQL 代码。问题是,table 之一名为 Students 在旧数据库和新数据库中具有相同的 table 结构(我也在恢复到新数据库),但在旧数据库中,Students 名为 Stdnents。有什么方法可以正确恢复吗?
RESTORE FILELISTONLY FROM DISK='f:\newBDbackup.bak'
declare @DefaultData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @DefaultData output
declare @DefaultLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', @DefaultLog output
declare @DefaultBackup nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', @DefaultBackup output
declare @MasterData nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters', N'SqlArg0', @MasterData output
select @MasterData=substring(@MasterData, 3, 255)
select @MasterData=substring(@MasterData, 1, len(@MasterData) - charindex('\', reverse(@MasterData)))
declare @MasterLog nvarchar(512)
exec master.dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer\Parameters', N'SqlArg2', @MasterLog output
select @MasterLog=substring(@MasterLog, 3, 255)
select @MasterLog=substring(@MasterLog, 1, len(@MasterLog) - charindex('\', reverse(@MasterLog)))
select
isnull(@DefaultData, @MasterData) DefaultData,
isnull(@DefaultLog, @MasterLog) DefaultLog,
isnull(@DefaultBackup, @MasterLog) DefaultBackup
declare @NewDefaultData nvarchar(512)
select isnull(@NewDefaultData, CONVERT(nvarchar(512), @DefaultData))
declare @NewDefaultLog nvarchar(512)
select isnull(@NewDefaultLog, CONVERT(nvarchar(512), @DefaultLog))
RESTORE DATABASE NewSqlDatabase FROM DISK='f:\newBDbackup.bak'
WITH
MOVE 'newDatabase' TO @NewDefaultData,
MOVE 'newDatabase_log' TO @NewDefaultLog
不确定我是否理解这个问题,但你能不能在恢复后立即将 table "Stdnents" 重命名为 "Students" (sp_rename)