我有.net脚本访问微软服务器,我需要在这一端与另一端的LAMP服务器同步数据库。目前我已经编写了自己的CSV导出例程和匹配的导入程序,但它在应变下吱吱作响。有没有更有效的方法来解决这个问题?我能以某种方式直接将CSV导出流式传输到IIS吗?
我知道如果我有更多权限,我可以运行BACKUP DATABASE命令,然后使用FTP运行备份到其他服务器,并希望找到一些方法将其导入MySQL。然而,这不是一种选择。
答案 0 :(得分:5)
如果可以从MSSQL服务器访问MySQL,那么您可以在MSSQL中创建链接服务器,并在MSSQL中创建MERGE
,INSERT
,UPDATE
或其他任何MySQL表。
答案 1 :(得分:4)
我做了类似的事情。最简单的方法是在MSSQL服务器和MySQL服务器之间建立直接连接。您在MSSQL中将链接服务器设置为MySQL服务器,然后使用插入,更新等对链接服务器执行事务。这就是ta.speot.is在他的回答中提到的。但是,您没有与MySQL服务器的直接链接,因此该选项不可行。
另一种选择是使用MSSQL Service代理。使用服务代理,您可以将单个更新,删除和插入排队到Web服务。此Web服务可以托管在IIS上。 Web服务将从队列中调用,然后您可以将各个事务一次一个地应用于MySQL数据库。服务代理是嵌入在MSSQL 2005+中的异步消息传递系统。有了它,您可以将消息发送到其他服务器,数据库甚至外部服务。
请记住,Service Broker架构需要时间来学习和实施。我使用服务代理在mssql和mysql之间创建了自定义复制架构,服务代理每天在celeron笔记本电脑上处理8800万以上的事务。它只是用了一些严重的肘部油脂。
UPDATE 似乎SQL2008允许您以某种方式在SQL服务器之外运行Service Brokers。请参阅此链接http://blogs.msdn.com/b/sql_service_broker/archive/2008/11/21/announcing-service-broker-external-activator.aspx我不知道这可能是您的街道上的更多内容。
答案 2 :(得分:4)
您可以编写具有.NET DataReaders的脚本来在MS SQL上打开游标,然后使用连接到MySQL的另一个连接逐行插入数据。您可以按顺序处理所有表。
答案 3 :(得分:3)
而不是CSV文件生成适合在MySQL服务器上运行的SQL脚本
答案 4 :(得分:0)