SQLServer备份恢复的总结
前言
GUI 搞一把. 命令行太多了也没人看
自己还能省点心
备份
备份数据库建议一定要选择: 备份选项中的
压缩->压缩备份
历史经验一个7.6G的数据库能够压缩到 1.5G
压缩比还是已非常可观的.
同名恢复
1. 可以使用sa登录
2. 创建一个database, 同名恢复建议恢复为同一个名字
3. 右键选中数据库进行全量数据库的恢复处理.
4. 全库恢复就可以.
5. 在数据库级别的安全性创建一个用户, 简单起见可以与数据库同名
6. 注意架构的地方选择上恢复的数据库名字
7. 同时在数据库角色位置,选择db_owner, 这个地方需要注意, 一定要选择新增加的数据库,不要选择其他的, 可能会报错可以忽略.
8. 执行SQL将,系统级别的安全性下的用户与数据库架构关联.
use databasename
exec sp_change_users_login 'update_one' ,'databasename','username'
异名恢复
与同名恢复的动作基本上一样, 区别是在最后第八步之前需要重新处理一下表的属主
第一步, 在数据库实例级别的安全性->架构下面增加一个架构. 简单期间一般 架构, 数据库名 , 用户名保持一致
然后执行如下SQL进行架构属主的更改.
注意需要修改 三个有注释变量的名字.
USE newdatabase; --新数据库
DECLARE
@TABLE SYSNAME;
DECLARE
@SCHEMA SYSNAME;
DECLARE
@new_schema SYSNAME;
SELECT
@SCHEMA = 'oldusrname' --原有属主
SELECT
@new_schema = 'newusrname' --新属主
DECLARE
csr CURSOR FOR SELECT
o.name,
u.name
FROM
sys.objects o
INNER JOIN sys.schemas u ON o.schema_id = u.schema_id
WHERE
o.type IN ( 'u', 'p', 'v', 'tf', 'fn', 'if' )
AND u.name = @SCHEMA OPEN csr;
FETCH NEXT
FROM
csr INTO @TABLE, @SCHEMA;
WHILE
@@FETCH_STATUS = 0 BEGIN
EXEC ( 'ALTER SCHEMA ' + @new_schema + ' TRANSFER [' + @SCHEMA + '].[' + @TABLE + ']' );
FETCH NEXT
FROM
csr INTO @TABLE, @SCHEMA;
END CLOSE csr DEALLOCATE csr;
最后再进行
use databasename
exec sp_change_users_login 'update_one' ,'databasename','username'
标签:schema,恢复,数据库,SQLServer,异名,csr,备份,SCHEMA
From: https://www.cnblogs.com/jinanxiaolaohu/p/17887180.html