SQL Server移植

来源:互联网 发布:博士申请 知乎 编辑:程序博客网 时间:2024/06/05 15:26

最近项目需要把SQL Server 2008 移植到 2016版本上

主要移植方法 参考:http://blog.csdn.net/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 databaseNamego--列出关联前的孤立用户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 forselect username from #temp_useropen temp_cursorfetch next from temp_cursor into @usernameWHILE (@@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 @usernameend close temp_cursordeallocate temp_cursordrop 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


暂时先写这些,后续遇到问题再更

第一次写博客排版有点乱。。。我尽力了

原创粉丝点击