Sql server 将所有数据移动到新的MS SQL Server的最简单方法是什么?

Sql server 将所有数据移动到新的MS SQL Server的最简单方法是什么?,sql-server,database,backup,restore,database-migration,Sql Server,Database,Backup,Restore,Database Migration,我正在从一个服务器2012箱移动到另一个服务器2012箱。我正在尝试将SQL Server 2012 Express实例(数据库、登录等)从一台服务器精确地移动到另一台服务器 最简单的方法是什么?我刚刚意识到我的.bak备份并不能恢复我所认为的方式 这是我备份数据库的代码 REM @ECHO OFF SETLOCAL REM Get date in format YYYY-MM-DD (assumes the locale is the United States) FOR /F "token

我正在从一个服务器2012箱移动到另一个服务器2012箱。我正在尝试将SQL Server 2012 Express实例(数据库、登录等)从一台服务器精确地移动到另一台服务器

最简单的方法是什么?我刚刚意识到我的
.bak
备份并不能恢复我所认为的方式

这是我备份数据库的代码

REM @ECHO OFF
SETLOCAL

REM Get date in format YYYY-MM-DD (assumes the locale is the United States)
FOR /F "tokens=1,2,3,4 delims=/ " %%A IN ('Date /T') DO SET NowDate=%%D-%%B-%%C

REM Build a list of databases to backup
SET DBList=%SystemDrive%SQLDBList.txt
SqlCmd -E -S LOCALHOST\SQLEXPRESS -h-1 -W -Q "SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WHERE [Name] NOT IN ('tempdb')" > "%DBList%"

REM Backup each database, prepending the date to the filename
FOR /F "tokens=*" %%I IN (%DBList%) DO (
ECHO Backing up database: %%I
SqlCmd -E -S LOCALHOST\SQLEXPRESS -Q "BACKUP DATABASE [%%I] TO Disk='C:\SQLBackup\Database\MSSQL\%NowDate%_%%I.bak'"
ECHO.
)

REM Clean up the temp file
IF EXIST "%DBList%" DEL /F /Q "%DBList%"

ENDLOCAL

如何使用此恢复数据?

最简单的数据库迁移是分离/移动文件/附加,但您必须先复制登录名。您希望使用相同的uid,以便自动对其重新索引。为此,您可以使用sp\u help\u revlogin()。此脚本将生成必须在目标服务器上运行的登录创建脚本。然后,您可以使用复制数据库向导或手动分离它们,复制文件,然后将其附加到目标。

您是否为部署编写了数据库用户脚本。备份恢复后,您需要授予他们访问权限。我没有。我会看看是否能找到备份/恢复文件的简单脚本。备份部分通常非常简单。另一方面,恢复要复杂一些。在另一台服务器上还原时,根路径可能不在同一位置,因此必须将数据文件移动到其他位置。您还需要从backupset文件中选择要使用的备份,如果需要恢复日志失败,则不需要使用恢复。所有这些选择都让脚本编写成为一场充满参数的噩梦。备份/还原在备份和还原数据库中包含的所有内容(表、视图、存储过程等)方面做得很好,但当然,它不处理服务器范围的设置,如登录、权限等。