您的位置:首页 > 数据库

SqlServer 认证之包含数据库

2016-07-08 09:50 369 查看
包含数据库(Contained Database): 作用是这个数据库的创建的用户不需要再指定登陆名就可以连接访问。

优点:数据库在异地恢愎时,不需要再创建登陆名。即迁移的时候不再需要在新实例上添加登陆名。(PS:Alawayson 没有同步登陆名和作业。这个可以解决登陆名的问题)

缺点:只能访问自身数据库,并不能访问同一实例上的其他数据库。(PS:博主未能访问成功,不是肯定不能访问)

使用步骤:

 实例支持:

     

EXEC sys.sp_configure N'contained database authentication', N'1'
GO
RECONFIGURE WITH OVERRIDE
GO


 

新建或修改数据库的包含类型为部份。

Create Database DBName Containment=partial


Alter DataBase DBName set Containment=partial


当修改数据库时,还需要将映射到 SQL Server 登录名的数据库用户转换为具有密码的包含数据库用户。

使用系统存储过程:

sp_migrate_user_to_contained [ @username = ] N'user' ,
[ @rename = ] { N'copy_login_name' | N'keep_name' } ,
[ @disablelogin = ] { N'disable_login' | N'do_not_disable_login' }


参考代码:

DECLARE @username sysname ;
DECLARE user_cursor CURSOR
FOR
SELECT dp.name
FROM sys.database_principals AS dp
JOIN sys.server_principals AS sp
ON dp.sid = sp.sid
WHERE dp.authentication_type = 1 AND sp.is_disabled = 0;
OPEN user_cursor
FETCH NEXT FROM user_cursor INTO @username
WHILE @@FETCH_STATUS = 0
BEGIN
EXECUTE sp_migrate_user_to_contained
@username = @username,
@rename = N'keep_name',
@disablelogin = N'disable_login';
FETCH NEXT FROM user_cursor INTO @username
END
CLOSE user_cursor ;
DEALLOCATE user_cursor ;


参考网址

https://msdn.microsoft.com/zh-cn/library/ff929275.aspx

连接时指定数据库名。即连接串中,需要指定initial catalog 或Database
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: