我尝试使用smo复制数据库,但是我收到错误:
"用户,群组或角色'%'已存在于当前数据库"
我的代码:
var conn = GetServerConnection();
var server = new Server(conn);
var sourceDb = server.Databases[sourceDatabase.Name];
var destinationDbName = GetNameForDatabase(dbName);
var destinationDb = new Database(server, destinationDbName);
destinationDb.Create();
var transfer = new Transfer(sourceDb) {
DestinationDatabase = destinationDbName,
DestinationServer = server.Name,
DestinationLoginSecure = true,
CopySchema = true,
CopyAllTables = true,
CopyData = true,
CopyAllUsers = false,
};
transfer.Options.WithDependencies = true;
transfer.Options.ContinueScriptingOnError = true;
transfer.TransferData();
提前感谢任何建议!
答案 0 :(得分:0)
您是否有从数据库服务器到源数据库的映射?在尝试复制之前尝试删除它们。
我正在使用“复制数据库”向导复制数据库,以便在同一服务器上创建测试数据库,并出现此错误。问题是源数据库有一个映射到该数据库的用户登录名。在这一切的混合中,复制数据库向导试图通过直接副本将用户添加到目标数据库,但也通过映射添加相同的用户。诀窍是删除源数据库的映射,然后复制数据库,然后将映射添加回源(它已经在目的地添加)。