搬运数据库:从MSSQL到新家

1. 搬运数据库前的准备工作

在进行数据库搬运前,需要进行一些准备工作,包括备份原数据库、安装新数据库、迁移账户和权限等。

1.1 备份原数据库

在进行数据库搬运前,必须先对原数据库进行备份,以防止数据丢失或损坏。备份过程可以通过以下 SQL 语句来完成:

BACKUP DATABASE [oldDatabase] TO DISK = 'C:\temp\oldDatabase.bak'

需要注意的是,备份文件必须储存在安全可靠的位置,以免被误删除或感染病毒。此外,备份完毕后可以对备份文件进行验证,以确保备份的完整性:

RESTORE VERIFYONLY FROM DISK = 'C:\temp\oldDatabase.bak'

如果这条 SQL 语句返回一条类似 "The backup set on file 1 is valid" 的消息,则说明备份文件完整无损。

1.2 安装新数据库

安装新数据库需要事先进行一些计划工作,例如确定新数据库的版本和安装位置、配置服务器参数等。在安装过程中,应该根据实际情况进行设置,以确保数据库的安全和可靠性。以下 SQL 语句可用于创建新数据库:

CREATE DATABASE [newDatabase] ON PRIMARY

( NAME = N'newDatabase', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\newDatabase.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 65536KB )

LOG ON

( NAME = N'newDatabase_log', FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\newDatabase_log.ldf' , SIZE = 8192KB , MAXSIZE = 2048GB , FILEGROWTH = 65536KB )

GO

上述代码中,使用 PRIMARY 参数指定了新数据库的基本参数,包括名称、位置、大小等。同时使用 LOG ON 参数指定了新数据库的日志文件。

1.3 迁移账户和权限

在搬运数据库时,也需要迁移原数据库的账户和权限信息。可以通过以下 SQL 语句将原数据库中的账户和权限信息复制到新数据库中:

USE master

GO

DECLARE @login_name sysname = N'oldUser'

DECLARE @database_name sysname = N'oldDatabase'

DECLARE @sql nvarchar(max)

SELECT @sql = COALESCE(@sql, N'') + N'

CREATE LOGIN [' + l.name + '] WITH PASSWORD = ''password'',

DEFAULT_DATABASE = [' + @database_name + ']

' + CASE WHEN s.state_desc = 'DISABLED' THEN ', DISABLE' ELSE '' END + ';ALTER SERVER ROLE [sysadmin] ADD MEMBER [' + l.name + '];'

FROM sys.sql_logins AS l

LEFT JOIN sys.server_principals AS s

ON l.name = s.name

WHERE l.name = @login_name

PRINT @sql

EXEC sp_executesql @sql;

该 SQL 语句将创建与原数据库中相同的账户,并将其加入 sysadmin 角色。可以根据情况修改语句中的名称和参数。

2. 数据库搬运方法

完成上述准备工作后,可以开始进行数据库搬运。以下介绍三种不同的搬运方法。

2.1 备份和还原

备份和还原是最常用的数据库搬运方法之一,其过程可以分为以下几步:

备份原数据库

将备份文件复制到新服务器上

在新服务器上还原备份文件

修改数据库连接字符串

以下 SQL 语句可以在新服务器上还原备份文件:

RESTORE DATABASE [newDatabase] FROM DISK = 'C:\temp\oldDatabase.bak'

WITH MOVE 'oldDatabase' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\newDatabase.mdf',

MOVE 'oldDatabase_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\newDatabase_log.ldf',

NOUNLOAD, REPLACE, STATS = 5

GO

在还原完成后,需要修改连接字符串,使其指向新服务器上的数据库。此外,还需要重新配置新服务器上的所有依赖项,例如定时任务、服务等。

2.2 数据复制

数据复制是一种将数据库中的数据复制到另一台服务器上的方法,其过程可以分为以下几步:

将原数据库设置为发布者(publisher)

创建新数据库并将其设置为订阅者(subscriber)

设置发布者和订阅者的连接

将数据复制到新服务器上的数据库中

以下 SQL 语句可以将数据复制到新数据库中:

INSERT INTO [newDatabase].[dbo].[tableA] ([col1], [col2], [col3])

SELECT [col1], [col2], [col3] FROM [oldDatabase].[dbo].[tableA]

需要根据情况修改以上语句中的表名、列名和参数。

2.3 导入和导出

导入和导出是将整个数据库导出为本地文件并导入另一台服务器上的方法,其过程可以分为以下几步:

导出原数据库

将导出文件复制到新服务器上

在新服务器上导入文件

修改数据库连接字符串

以下 SQL 语句可以在新服务器上导入文件:

USE [master]

GO

CREATE DATABASE [newDatabase] ON

( FILENAME = N'C:\temp\newDatabase.mdf' ),

( FILENAME = N'C:\temp\newDatabase_log.ldf' )

FOR ATTACH

GO

在导入完成后,同样需要修改连接字符串,并重新配置所有依赖项。

总结

数据库搬运是一项非常耗时且复杂的任务,需要在搬运前进行充分的准备工作,以确保操作的安全和有效性。备份和还原、数据复制以及导入和导出是三种常用的搬运方法,可以根据实际情况选择合适的方法。在进行操作时需要谨慎处理,避免出现不必要的问题。

数据库标签