问题描述
您好,我正在尝试使用SMO在同一服务器中创建一个数据库的精确副本。我能够复制架构,数据和用户,但是我只是注意到,用户的角色并未在数据库之间复制。他们的角色如下所示:
原始数据库
克隆数据库
我当前的传输对象配置如下:
Transfer t = new Transfer(database);
t.Options.DriAll = true;
t.copySchema = true;
t.copyData = true;
t.copyAllDatabaseScopedCredentials = true;
t.copyAllRoles = true;
t.copyAllUsers = true;
t.PreserveDbo = true;
t.PreserveLogins = true;
t.DestinationServer = connection.DataSource;
t.DestinationDatabase = dbname;
t.TransferData();
但是角色没有被复制,因此,当用户尝试读取/写入任何内容时,我会收到该用户的“登录失败”错误,是否缺少我的配置?还是使用SMO无法做到这一点?
感谢您的帮助!
解决方法
尝试t.Options.IncludeDatabaseRoleMemberships = true