最近项目需要把SQL Server 2008 移植到 2016版本上
主要移植方法 参考:http://blog.youkuaiyun.com/zhoukun1008/article/details/48101843
选择bak备份方法进行移植
SQL server还原数据库后,产生了孤立用户。即数据库用户无法登录SQL server。所以还原备份后,要将数据库中的用户添加为登录用户。
//查看所有用户数据库
select name from master..sysdatabases where sid != 0x01
//查看当前数据库的用户
use EntryCAPLYFtmp
go
exec sp_helpuser
--还原数据库后,关联孤立用户,即将数据库用户添加至登录用户,此SQL仅支持一个一个数据库恢复。
--所用数据库,手动修改
use databaseName
go
--列出关联前的孤立用户
exec sp_change_users_login 'REPORT'
declare @username nvarchar(50)
create table #temp_user(
username nvarchar(50),
UserSID int
)
insert into #temp_user exec sp_change_users_login @Action='Report'
declare temp_cursor cursor for
select username from #temp_user
open temp_cursor
fetch next from temp_cursor into @username
WHILE (@@FETCH_STATUS=0)
begin
--创建登录用户,密码全部设为 'xxxx'
exec sp_change_users_login 'Auto_Fix', @username, NULL, 'xxxx';
--将数据库用户与已创建的登录用户关联
exec sp_change_users_login @Action='update_one',@UserNamePattern=@username,@LoginName=@username;
fetch next from temp_cursor into @username
end
close temp_cursor
deallocate temp_cursor
drop table #temp_user
--创建完成后,再次列出孤立用户,此时应该为空,即用户全部添加完成
exec sp_change_users_login 'REPORT'
此方法添加的登录用户与数据库用户名字一样,若数据库用户含有非法字符,则不能添加,可以手动添加
--如果已有登录用戶,将用戶名映射为指定的登录名
exec sp_change_users_login 'UPDATE_ONE','用戶名','登录名'
or
exec sp_change_users_login 'AUTO_FIX','用戶名'
--如果沒有建立登录用戶
exec sp_change_users_login 'Auto_Fix', '登录名', NULL, '登录密码'
移植后的检验:
use databaseName
//查看触发器
select * from databaseName WHERE type = 'TR'
//查看用户表
select * from databaseName WHERE TYPE='U'
//查看视图
select * from databaseName where type='V'
//查看存储过程
select * from databaseName where type='P'
//查看触发器SQL代码
exec sp_helptext triggerName
暂时先写这些,后续遇到问题再更
第一次写博客排版有点乱。。。我尽力了