今天公司WEB2.0的供应商需要恢复一个SQLServer2000数据库,给了我一个备份文件
通过使用restore filelistonly from disk='xxxxxx',发现这个数据库的数据库文件路径不符合公司数据库管理规范
(公司的管理规定要求数据库文件存放在特定路径下以数据库命名的文件夹中)
我的步骤如下:
1.把数据库还原到测试服务器中,由于该数据库的数据库文件原始路径在测试服务器上根本没有,在我建立完需要的数据文件路径后,使用restore database from disk='xxxx' with recovery;完成数据库的恢复
2.在生产SQLServer2000数据库服务器中手工建立一个数据库,该数据库名称与需要恢复的数据库名称相同(当然数据库文件路径是符合公司规范要求的)
3.在测试服务器上,将之前恢复好的数据库的数据导入到生产数据库中,使用的是SQLServer自带的导入\导出工具(OLE DB),导入成功完成。
这样几步能够达到我所要求的数据库文件路径符合公司要求,但是存在丢失数据的情况?!数据库所有的视图都没有导入到生产数据库
很快供应商的疑问过来了,说数据库缺少视图...在我说出我的操作步骤后,供应商提出通过SQLServer企业管理器的界面还原是可以修改路径的?而不是只能还原到原始数据库的数据文件的路径中。并操作演示给我看了。原来这样也是可以的啊,颠覆了我之前对于数据库还原的想象..
总结一下SQLServer数据库的还原
1.通过在企业管理器中来操作还原,
2.通过T-SQL语句来处理还原,这里需要使用with move 选项
restore filelistonly from disk='Northwind.bak'
restore database Northwind from disk = 'c:\Northwind.bak'
with move 'Northwind' to 'd:\microsoft sql server\mssql.1\mssql\data\Northwind.mdf'
,move 'Northwind_log' to 'd:\microsoft sql server\mssql.1\mssql\data\Northwind.ldf'
测试过了,可以恢复到现有存在的任何目录中,不会自动创建数据库文件原始的操作系统路径
3.通过数据库导入\导出的办法导致视图丢失(选项不对?)
DTS 导入/导出向导中的选项
1)从数据库复制表和视图
2)用一条查询指定要传输的数据
3)在SQL Server数据库之间复制对象和数据