【问题标题】:What is the easiest way to move all data to a new MS SQL Server?将所有数据移动到新的 MS SQL Server 的最简单方法是什么?
【发布时间】:2013-10-30 17:41:21
【问题描述】:

我正在从 1 个 Server 2012 机器转移到另一个 Server 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

如何用这个恢复数据?

【问题讨论】:

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

标签: sql-server database backup restore database-migration


【解决方案1】:

最简单的数据库迁移是分离/移动文件/附加,但您必须先复制登录信息。您希望拥有相同的 uid 以使它们自动重新绑定。为此,您可以使用 sp_help_revlogin (http://support.microsoft.com/kb/918992)。此脚本将生成您必须在目标服务器上运行的登录创建脚本。然后您可以使用复制数据库向导或手动分离它们,复制文件然后将它们附加到目的地。

【讨论】:

    猜你喜欢
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多