转储T-sql脚本失败的服务器2000

时间:2013-11-21 16:24:44

标签: mysql sql-server

我正在尝试找到一种在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身份连接到数据库。我不知道权限问题会来自何处。

如果这对你们所有人都很明显,我道歉。我对这一切都很陌生,并且一直被抛到深处。我不会发布到这些论坛(我经常搜索它们),但我很绝望。

谢谢!

1 个答案:

答案 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不同完全没有。)