我试图将Server数据库从SQLServer2016dev版本复制到SQLServer2014dev版本。
它在以下日志中失败:
#Fields: event,computer,operator,source,sourceid,executionid,starttime,endtime,datacode,databytes,message
OnInformation,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_Transfer Objects Task,{F858F211-3783-40F8-9C7A-B477576706D4},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:52 AM,8/8/2016 11:40:52 AM,0,0x,Transferring database callmanager_pwc from PAPERLESS-PRIME server as callmanager_pwc to PAPERLESS-PRIME\SQLEXPRESS server
OnInformation,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,CDW_PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_2,{2BE0FC74-D66D-4AFE-895F-B0CC80E7C848},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:52 AM,8/8/2016 11:40:52 AM,0,0x,Transferring database callmanager_pwc from PAPERLESS-PRIME server as callmanager_pwc to PAPERLESS-PRIME\SQLEXPRESS server
OnInformation,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_Transfer Objects Task,{F858F211-3783-40F8-9C7A-B477576706D4},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:52 AM,8/8/2016 11:40:52 AM,0,0x,Added data file callmanager in path C:\SQLDB\2014\callmanager_pwc.mdf to file group [PRIMARY]
OnInformation,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,CDW_PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_2,{2BE0FC74-D66D-4AFE-895F-B0CC80E7C848},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:52 AM,8/8/2016 11:40:52 AM,0,0x,Added data file callmanager in path C:\SQLDB\2014\callmanager_pwc.mdf to file group [PRIMARY]
OnInformation,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_Transfer Objects Task,{F858F211-3783-40F8-9C7A-B477576706D4},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:52 AM,8/8/2016 11:40:52 AM,0,0x,Added log file callmanager_log in path C:\SQLDB\2014\callmanager_pwc.ldf
OnInformation,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,CDW_PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_2,{2BE0FC74-D66D-4AFE-895F-B0CC80E7C848},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:52 AM,8/8/2016 11:40:52 AM,0,0x,Added log file callmanager_log in path C:\SQLDB\2014\callmanager_pwc.ldf
OnInformation,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_Transfer Objects Task,{F858F211-3783-40F8-9C7A-B477576706D4},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:52 AM,8/8/2016 11:40:52 AM,0,0x,Transferring data to database callmanager_pwc from callmanager_pwc
OnInformation,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,CDW_PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_2,{2BE0FC74-D66D-4AFE-895F-B0CC80E7C848},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:52 AM,8/8/2016 11:40:52 AM,0,0x,Transferring data to database callmanager_pwc from callmanager_pwc
OnError,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_Transfer Objects Task,{F858F211-3783-40F8-9C7A-B477576706D4},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:54 AM,8/8/2016 11:40:54 AM,0,0x,Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
StackTrace: at System.Collections.BitArray.Set(Int32 index, Boolean value)
at Microsoft.SqlServer.Management.Smo.PermissionWorker.GetPermissionSetBase(PermissionEnumKind kind, Int32 i)
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetPermissionsFromCache(PermissionEnumKind kind)
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.AddScriptPermissions(StringCollection sc, PermissionEnumKind kind, ScriptingPreferences sp)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateSpecialUrn(Urn urn, ScriptingPreferences sp, ObjectScriptingType& scriptType)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreate(Urn urn, ScriptingPreferences sp, ObjectScriptingType& scriptType)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateObjects(IEnumerable`1 urns)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptUrns(List`1 orderedUrns)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable`1 urns)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List`1 urns, ISmoScriptWriter writer)
at Microsoft.SqlServer.Management.Smo.DataTransferBase.GetScriptLoadedTransferWriter()
at Microsoft.SqlServer.Management.Smo.Transfer.TransferData()
at Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer()
OnError,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,CDW_PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_2,{2BE0FC74-D66D-4AFE-895F-B0CC80E7C848},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:54 AM,8/8/2016 11:40:54 AM,0,0x,Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
StackTrace: at System.Collections.BitArray.Set(Int32 index, Boolean value)
at Microsoft.SqlServer.Management.Smo.PermissionWorker.GetPermissionSetBase(PermissionEnumKind kind, Int32 i)
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.GetPermissionsFromCache(PermissionEnumKind kind)
at Microsoft.SqlServer.Management.Smo.SqlSmoObject.AddScriptPermissions(StringCollection sc, PermissionEnumKind kind, ScriptingPreferences sp)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateSpecialUrn(Urn urn, ScriptingPreferences sp, ObjectScriptingType& scriptType)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreate(Urn urn, ScriptingPreferences sp, ObjectScriptingType& scriptType)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptCreateObjects(IEnumerable`1 urns)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptUrns(List`1 orderedUrns)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.DiscoverOrderScript(IEnumerable`1 urns)
at Microsoft.SqlServer.Management.Smo.ScriptMaker.ScriptWorker(List`1 urns, ISmoScriptWriter writer)
at Microsoft.SqlServer.Management.Smo.DataTransferBase.GetScriptLoadedTransferWriter()
at Microsoft.SqlServer.Management.Smo.Transfer.TransferData()
at Microsoft.SqlServer.Dts.Tasks.TransferObjectsTask.TransferObjectsTask.TransferDatabasesUsingSMOTransfer()
OnProgress,PAPERLESS-PRIME,NT AUTHORITY\NETWORK SERVICE,PAPERLESS-PRIME_PAPERLESS-PRIME_SQLEXPRESS_Transfer Objects Task,{F858F211-3783-40F8-9C7A-B477576706D4},{AB42BFE8-D674-4E86-ACEA-FA89BFF7E8BE},8/8/2016 11:40:55 AM,8/8/2016 11:40:55 AM,0,0x,Database transfer failed for 1 database(s).请问这是产品的问题,还是我做错了什么?
发布于 2019-04-13 01:07:55
实现这一目标的唯一正确方法是从Server的更高版本生成脚本,并在较低版本上运行它。要做到这一点,请遵循以下步骤:
步骤是从这篇文章采取的,并帮助了我很多次。
如果您的脚本具有非常大的数据,可以使用CMD加载它:
sqlcmd -S myServer\instanceName -i C:\myScript.sql当然,步骤2中的路径只是简单的示例。
另一种方法是只编写没有数据的数据库架构,并在目标服务器上使用较低版本的Server重新创建它。接下来,您可以用SSMS连接到两个实例,并将数据从一个实例复制到另一个实例,但如果定义了表之间的关系,则必须记住正确的复制顺序。在这种情况下,删除关系并重新创建它们是很好的策略(请记住,您在生成的脚本中获得了它们)。另一个这样做的陷阱是主键/标识列-默认设置阻止将数据插入此类列,但您可以实现以下运行命令:
SET IDENTITY_INSERT dbo.YourTableName ON;
插入成功后,还应该运行:
SET IDENTITY_INSERT dbo.YourTableName OFF;
希望这本手册能对你有所帮助。
发布于 2019-04-13 00:40:26
有点晚了,但希望这会对其他人有所帮助。我收到了一个类似的问题,并将两个服务器更新到最新的CU,并为我修复了它。
https://stackoverflow.com/questions/38827500
复制相似问题