SQL Server 复制数据库向导 -w/o- 登录 promts 错误 (SMO) 用户、组或角色'x'已存在于当前数据库中



我想将数据库从服务器 a (2008( 复制到 b (2012(。通常我只是进行备份并将其还原到目标上。

拥有功能-复制数据库向导-将使我的任务更容易一些,因为我必须移动相当多的数据库。我正在使用SMO方法,遇到了几个可以解决的问题,但现在我遇到了以下错误:

      Event Name: OnError
 Message: An error occurred while transferring data. See the inner exception for details.
StackTrace:    at Microsoft.SqlServer.Management.Smo.Transfer.TransferData()
   at Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer()
InnerException-->User, group, or role 'x' already exists in the current database.
StackTrace:    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
   at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at Microsoft.SqlServer.Management.Smo.Transfer.ExecuteStatements(SqlConnection destinationConnection, IEnumerable`1 statements, SqlTransaction transaction)
   at Microsoft.SqlServer.Management.Smo.Transfer.TransferData()
 Operator: CHa
 Source Name: b
 Source ID: c
 Execution ID: d
 Start Time: 26.07.2091 11:30:57
 End Time: 26.07.2091 11:30:57
 Data Code: 0

在向导中,我选择不复制登录对象或其他任何内容。因此,据我了解,它应该做数据库的"普通"副本,而不是其他任何东西。

如果您对为什么会发生此错误有任何建议,我将不胜感激!

在 SQL Server 上,登录名与数据库用户不同。登录名授予对服务器的访问权限,并且可能能够访问多个数据库,具体取决于分配的权限,而数据库用户只能被授予对其数据库中特定内容的访问权限。

除了设置transfer.CopyAlLogins = false;您还需要设置

transfer.CopyAllRoles = false;
transfer.CopyAllUsers = false;

相关内容

  • 没有找到相关文章

最新更新