我已经在Server 2008 R2上工作了4年,是时候格式化我的笔记本了。
我只使用默认实例,可以使用.作为服务器名访问它,然后使用用户名和密码进行用户身份验证。
现在我想格式化我的笔记本电脑,几乎不可能手动备份所有的数据库。
我在下面的道路上找到了
C:\Program \Microsoft Server\MSSQL10_50.SQLEXPRESS\MSSQL
我所拥有的所有数据库,对于我找到的每个数据库:
我把这些文件复制到一个外部硬盘上。
我的问题是:
这些文件是否足以在格式化后导入数据库?如果我安装了(格式化后的) Server 2012而不是2008年的R2,它们会工作吗?
发布于 2015-02-09 14:59:39
我发现来自这篇文章的SQL在对服务器上的所有数据库进行备份时非常有用。
DECLARE @name VARCHAR(50) -- database name
DECLARE @path VARCHAR(256) -- path for backup files
DECLARE @fileName VARCHAR(256) -- filename for backup
DECLARE @fileDate VARCHAR(20) -- used for file name
-- specify database backup directory
SET @path = 'C:\Backup\'
-- specify filename format
SELECT @fileDate = CONVERT(VARCHAR(20),GETDATE(),112)
DECLARE db_cursor CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases
WHERE name NOT IN ('master','model','msdb','tempdb') -- exclude these databases
OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
SET @fileName = @path + @name + '_' + @fileDate + '.BAK'
BACKUP DATABASE @name TO DISK = @fileName
FETCH NEXT FROM db_cursor INTO @name
END
CLOSE db_cursor
DEALLOCATE db_cursor发布于 2017-01-07 13:15:59
您可以使用选择语句或游标,如下所示:
DECLARE @PathForBackUp VARCHAR(255)
SET @PathForBackUp = 'F:\Backup\User DB\'
SELECT 'BACKUP DATABASE [' + name + '] TO DISK = N''' + @PathForBackUp + '' + name + '.bak''
WITH NOFORMAT, NOINIT, NAME = N''' + name + '_FullBackUp'', SKIP, NOREWIND, NOUNLOAD, COMPRESSION, STATS = 5'
FROM sys.databases
WHERE database_id > 4或
DECLARE @DBName VARCHAR(255)
DECLARE @PathForBackUp VARCHAR(255)
DECLARE @FileName VARCHAR(255)
DECLARE @DateFile VARCHAR(255)
DECLARE @SQL NVARCHAR(2048)
SET @PathForBackUp = 'F:\Backup\User DB\'
SET @DateFile = REPLACE(REPLACE(CONVERT(VARCHAR(20),GETDATE(),120) ,' ','T'), ':','')
DECLARE BACKUPING CURSOR FOR
SELECT name
FROM master.dbo.sysdatabases WHERE dbid > 4
OPEN BACKUPING
FETCH NEXT FROM BACKUPING INTO @DBName
WHILE @@FETCH_STATUS = 0
BEGIN
SET @FileName = @PathForBackUp + @DBName + '_' + @DateFile + '.BAK'
SET @SQL = 'BACKUP DATABASE '+@DBName+ ' TO DISK = '''+@FileName+''' WITH COMPRESSION '
PRINT @SQL
EXECUTE sp_executesql @sql
FETCH NEXT FROM BACKUPING INTO @DBName
END
CLOSE BACKUPING
DEALLOCATE BACKUPING 如果您想更多地了解这些解决方案,我在这里写了关于这个问题的文章:http://www.pigeonsql.com/single-post/2016/12/20/Backup-All-Users-databases-via-Select-and-Cursor
发布于 2015-02-10 06:21:41
这些文件是否足以在格式化后导入数据库?如果我安装了(格式化后的) Server 2012而不是2008年的R2,它们会工作吗?
您正在进行数据库、mdf和ldf文件的文件级备份,这与T备份略有不同。正如我所读到的,您已经格式化了您的机器,并且没有进行备份,所以在这种情况下,请在本地驱动器上复制mdf和ldf文件,然后附加这些文件来创建数据库。
在附加之前请注意,如果在格式化前已安装在Server 2008 r2上,请确保已安装了Service (SP)。如果没有,请在附加数据库后安装SP。
要附加数据库,可以同时使用TSQL和GUI。下面的链接将帮助您附加数据文件。在打开SSMS之前,请右键单击SSMS并选择run作为管理员,以避免任何访问被拒绝的消息。
附加样例脚本
CREATE DATABASE DatabaseName
ON (FILENAME = 'FilePath\FileName.mdf'), -- Main Data File .mdf
(FILENAME = 'FilePath\LogFileName.ldf'), -- Log file .ldf
(FILENAME = 'FilePath\SecondaryDataFile.ndf) -- Optional - any secondary data files
FOR ATTACH
GO https://stackoverflow.com/questions/28371150
复制相似问题