我有一个部署脚本,它使用sqlpackage.exe将增量更改部署到数据库。 (该项目在Visual Studio 2012 Express的数据库版本中进行维护。)我传递给此工具的一个标志是:
/p:BackupDatabaseBeforeChanges=True
但是,我没有find这些备份存在的地方。 到目前为止,我在MSDN上find的每一篇文档都只是说:
获取或设置布尔值,指定在继续实际部署操作之前是否执行数据库备份。
备份是否只是暂时的,并且在部署成功之后简单地删除? 或者,更糟糕的是,这根本就没有创build备份吗? 如果正在创build备份,它们在哪里? 我看过
C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS2012\MSSQL\Backup
但是那里什么也没有。 也许“备份”在某个地方是不同的forms? 基本上我想要做的是在任何给定的部署之前(基本上我在同一个脚本中使用已部署的应用程序做什么)无限期地保留目标数据库的快照。
查看部署正在创build的.sql脚本。 它应该包含类似的东西
IF(DB_ID(N'$(DatabaseName)')IS NOT NULL)BEGIN DECLARE @rc int, – 返回代码@fn nvarchar(4000), – 备份的文件名@dir nvarchar(4000) – 备份目录
EXEC @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', @dir output, 'no_output' if (@rc = 0) SELECT @dir = @dir + N'\' IF (@dir IS NULL) BEGIN EXEC @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @dir output, 'no_output' if (@rc = 0) SELECT @dir = @dir + N'\' END IF (@dir IS NULL) BEGIN EXEC @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\Setup', N'SQLDataRoot', @dir output, 'no_output' if (@rc = 0) SELECT @dir = @dir + N'\Backup\' END IF (@dir IS NULL) BEGIN SELECT @dir = N'$(DefaultDataPath)' END SELECT @fn = @dir + N'$(DatabaseName)' + N'-' + CONVERT(nchar(8), GETDATE(), 112) + N'-' + RIGHT(N'0' + RTRIM(CONVERT(nchar(2), DATEPART(hh, GETDATE()))), 2) + RIGHT(N'0' + RTRIM(CONVERT(nchar(2), DATEPART(mi, getdate()))), 2) + RIGHT(N'0' + RTRIM(CONVERT(nchar(2), DATEPART(ss, getdate()))), 2) + N'.bak' BACKUP DATABASE [$(DatabaseName)] TO DISK = @fn
END GO
如上所述,备份的目标由存储目标SQL Server的默认备份位置的registry值决定。