我已经在SQL Server 2008 R2上工作了4年,现在是时候格式化我的笔记本了。
我只使用默认实例,我可以使用.
作为服务器名称访问,然后使用我的用户名和密码进行用户身份验证。
现在我想格式化我的笔记本电脑,几乎不可能手动备份所有数据库。
我在以下路径中找到了
C:\ Program Files \ Microsoft SQL Server \ MSSQL10_50.SQLEXPRESS \ MSSQL
我找到的每个数据库的所有数据库:
我将这些文件复制到外部硬盘驱动器。
格式化后,这些文件是否足以导入数据库?如果我安装(格式化后)SQL Server 2012而不是2008 R2,它们会工作吗?
答案 0 :(得分:5)
我发现this article中的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
答案 1 :(得分:1)
您可以使用 SELECT 语句或 CURSOR ,如下所示:
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
OR
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
答案 2 :(得分:0)
格式化后,这些文件是否足以导入数据库?如果我安装(格式化后)SQL Server 2012而不是2008 R2,它们会工作吗?
您正在进行数据库mdf和ldf文件的文件级备份,这与T-SQL备份略有不同。我可以读到你已经格式化了你的机器并且你没有备份,所以在这种情况下,请复制本地驱动器上的mdf和ldf文件,然后附加这些文件来创建数据库。
请在添加之前注意确保已安装Service Pack(SP),如果它在格式化之前安装在SQL Server 2008 r2上。如果没有,请在附加数据库后安装SP。
要附加数据库,您可以同时使用TSQL和GUI。下面的链接可以帮助您附加数据文件。在打开SSMS之前,请右键单击SSMS并选择以管理员身份运行以避免任何拒绝访问的消息。
附加示例脚本
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