我正在尝试找到一种在SQL 2000中转储数据库的方法,以便在Ubuntu Server 12.04上移植到MySQL 5.5。 Linux框运行一些ruby脚本,将SQL数据转换为JSON,以便上传到AWS上的客户端门户网站。
我们在Windows Server 2008 Standard(x86)上运行SQL 2000,它是XenServer 6.0主机上的VM。目标Ubuntu服务器是x64,也是同一XenServer主机上的VM。我知道SQL2K是过时的技术,但它是我们运行的专有软件可以使用的SQL的最新版本。是的 - 我们正在寻找升级;但那不是今天。
我的想法是通过查询分析器运行DUMP命令,但我一直收到错误。
USE <database_name>
EXEC sp_addumpdevice 'disk', 'tempdumpdisk', 'c:\dump\dump.bak'
GO
DUMP DATABASE <database_name>
TO DISK = 'tempdumpdisk'
GO
EXEC sp_dropdevice 'tempdumpdisk'
我得到的错误:
服务器:消息15247,级别16,状态1,过程sp_addumpdevice,第27行 用户无权执行此操作。 为文件4上的数据库'',文件''处理了98264页。 在文件4上为数据库'',文件''处理了1页。 BACKUP DATABASE在22.056秒(36.497 MB /秒)内成功处理了98265页。 服务器:消息15247,级别16,状态1,过程sp_dropdevice,第38行 用户无权执行此操作。
我以域管理员身份登录服务器,并以sysdba身份连接到数据库。我不知道权限问题会来自何处。
如果这对你们所有人都很明显,我道歉。我对这一切都很陌生,并且一直被抛到深处。我不会发布到这些论坛(我经常搜索它们),但我很绝望。
谢谢!
答案 0 :(得分:0)
这听起来像一个两步过程:首先构建空数据库结构,然后导入数据。
您应该能够通过管理GUI(现在称为SQL Server Management Studio,以前称为Enterprise Manager)编写数据库结构的脚本。应该能够修改CREATE TABLE等语句以使用MySQL。
然后,您可以使用“导出”功能手动将表导出到平面文件。显然,如果您有20个表,那么这将比您拥有200个表更实用。对于自动化,SQL Server 2000使用DTS包(现在替换为SSIS包)。您可能希望编写一个平面文件导出脚本,将每条记录放入INSERT语句,以便于导入MySQL。
INSERTS的顺序需要依赖于表之间的关系。例如,必须在父记录之前插入FK指出的子记录。
(注意:如果您正在考虑迁移到更新版本的SQL Server,请不要在DTS包开发中投入大量精力。您必须从头开始为SSIS重新创建所有内容,这与DTS不同完全没有。)