我正在尝试将从SQL Server 2012中获取的备份还原到SQL Server 2008 R2,并且它会出错
指定演员表无效。 (SqlManagerUI)
如果您有任何解决方案,请发表评论
谢谢。
注意,上面的一些答案是大概过时的!这可以在SQL SERVER MANAGEMENT STUDIO中完成(SQL MS)
您可以采用多种方法来“降级”数据库,但我最近发现并且我认为在SQL MS 2012的早期版本中找不到的是复制数据库向导。以下是如何将数据库从2012服务器实例复制到2008 R2实例:
你完成了,快乐的日子。 :]
我发现的另一种方法是由Microsoft创建的SQL数据库迁移向导,我认为(我不知道)上面的向导是从中创建的。来吧http://sqlazuremw.codeplex.com/。要使用此程序包将数据库从SQL Server 20012迁移到2008 R2,您可以执行以下操作:
注意。 Microsoft现已从Codeplex中删除了SQLAzureMW。我个人让它可用here
一个。在General下将“Target Server”设置为“SQL Server”。
湾在“表/视图选项”下,将“脚本表/数据”设置为“带有数据的表格模式”。将“数据库引擎存储过程”设置为“True”。将“安全功能”,“安全存储过程”和“系统功能”设置为“真”。
单击[确定]。点击下一步]。
你完成了。现在,如果您打开Management Studio并连接到我们刚刚使用的SQL Server 2012和2008 R2实例,您可以看到2012源数据库的架构与刚刚创建的目标数据库相匹配。
上述两个过程几乎相同,并提供相同的功能。除非您特别需要迁移到Azure或方法1失败,否则我不会执行后者。
我希望这可以帮助别人。
如果您在同一网络中,则使用connect选项将目标服务器添加到MS Server管理工作室,然后尝试从源导出到目标。最简单的方法:)
右键单击数据库,然后选择“任务” - >“生成脚本”
选择要还原的内容,或者只是默认选中完整的数据库。
现在单击Next - >单击Advanced并选择'Script for Server Version'到要恢复的'ssms版本',如2008或2008 R2或其他。
另外,选择“脚本数据类型”为“架构和数据”
最后在目标ssms上执行此.sql文件并在第一行使用数据库中更改数据库名称
如果没有数据库则创建一个,如果执行脚本时出错,请执行alter keyword中的脚本以完成底部。
你不能,你永远不能从更高版本恢复到较低版本的SQL Server。您唯一的选择是编写数据库脚本,然后通过SSIS,BCP,链接服务器或脚本化数据传输数据
致:Killercam感谢您的解决方案。我尝试了第一个解决方案一小时,但对我没用。
我使用脚本生成方法将数据从SQL Server 2012移动到SQL Server 2008 R2,如下所示:
在2012 SQL Management Studio中
这个对我有用。
你将无法从2012
恢复到2008
。您将能够使用像red-gate SQL compare
这样的工具来复制架构等(前提是没有使用2012特定的)。如果您还要复制数据,可以使用他们的Data Compare
工具,我认为您可以获得14天免费试用。
将数据库从一个SQL Server版本“降级”为较低版本的唯一内置方法是困难的方法:编写整个数据库,架构和数据的脚本,然后在目标服务器上执行脚本。
这是可行的,但往往是残酷的。
这是我的另一个选择:https://dba.stackexchange.com/a/44340
在那里我使用了选项B.这不是我的想法所以所有的功劳归于原作者。我只是把它放在这里,因为我知道有时链接不起作用,建议有完整的故事方便。
只是我的一个提示:首先解决架构不兼容问题(如果有的话)。然后倾注数据应该是轻而易举的。
选项A:使用“生成脚本”选项在兼容模式下编写数据库:
注意:如果使用模式和数据编写数据库脚本,则根据您的数据大小,脚本将很大并且不会被SSMS,sqlcmd或osql处理(也可能是GB)。
选项B:
首先使用所有索引,FK等脚本输出表,并在目标数据库中创建空白表 - 仅使用SCHEMA ON(无数据)。
使用BCP插入数据
I.使用以下脚本BCP输出数据。在文本模式下设置SSMS并将下面脚本生成的输出复制到bat文件中。
-- save below output in a bat file by executing below in SSMS in TEXT mode
-- clean up: create a bat file with this command --> del D:\BCP\*.dat
select '"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\bcp.exe" ' /* path to BCP.exe */
+ QUOTENAME(DB_NAME())+ '.' /* Current Database */
+ QUOTENAME(SCHEMA_NAME(SCHEMA_ID))+'.'
+ QUOTENAME(name)
+ ' out D:\BCP\' /* Path where BCP out files will be stored */
+ REPLACE(SCHEMA_NAME(schema_id),' ','') + '_'
+ REPLACE(name,' ','')
+ '.dat -T -E -SServerName\Instance -n' /* ServerName, -E will take care of Identity, -n is for Native Format */
from sys.tables
where is_ms_shipped = 0 and name <> 'sysdiagrams' /* sysdiagrams is classified my MS as UserTable and we dont want it */
/*and schema_name(schema_id) <> 'unwantedschema' */ /* Optional to exclude any schema */
order by schema_name(schema_id)
II。运行bat文件,该文件将在您指定的文件夹中生成.dat文件。
III。在文本模式下再次使用SSMS在目标服务器上运行以下脚本。
--- Execute this on the destination server.database from SSMS.
--- Make sure the change the @Destdbname and the bcp out path as per your environment.
declare @Destdbname sysname
set @Destdbname = 'destinationDB' /* Destination Database Name where you want to Bulk Insert in */
select 'BULK INSERT '
/*Remember Tables must be present on destination database */
+ QUOTENAME(@Destdbname) + '.'
+ QUOTENAME(SCHEMA_NAME(SCHEMA_ID))
+ '.' + QUOTENAME(name)
+ ' from ''D:\BCP\' /* Change here for bcp out path */
+ REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '')
+ '.dat'' with ( KEEPIDENTITY, DATAFILETYPE = ''native'', TABLOCK )'
+ char(10)
+ 'print ''Bulk insert for ' + REPLACE(SCHEMA_NAME(schema_id), ' ', '') + '_' + REPLACE(name, ' ', '') + ' is done... '''
+ char(10) + 'go'
from sys.tables
where is_ms_shipped = 0
and name <> 'sysdiagrams' /* sysdiagrams is classified my MS as UserTable and we dont want it */
--and schema_name(schema_id) <> 'unwantedschema' /* Optional to exclude any schema */
order by schema_name(schema_id)
IV。使用SSMS运行输出以将数据插回表中。
这是非常快速的BCP方法,因为它使用Native模式。
如前所述,您无法使用“备份”和“还原”功能从SQL Server 2012数据库转到SQL Server 2008数据库。我编写的程序SQL Server Scripter将连接到SQL Server数据库并编写数据库,其架构和数据。它可以从BitBucket克隆,并使用Visual Studio 2010或更高版本编译(如果它是更高版本,只需打开.csproj
)。
合并复制。您可以从分销商(2008)创建订户(2008)。数据库完全同步后,删除订阅和发布。