2012-02-10 43 views
0

是否可以将架构和数据从SQL Server数据库移动到另一个(驻留在不同的物理机器上)。该选项应该支持SQL Server 2005以后的版本。使用java以编程方式移动sql server架构和数据

我发现了几个可以完成其中一些的COM/.NET程序集,但我们将支持以Java为中心的解决方案。

那么有没有可以完成任务的系统存储过程等?

+0

你是什么意思'移动'模式和数据?你有什么网络/操作系统/权限限制?你可以只备份数据库,复制文件并在另一台服务器上恢复它?你可以使用MSSQL复制吗?你能编写.NET命令行工具并从Java调用它们吗? – Pondlife 2012-02-10 12:24:57

+0

不,我们不能写任何.NET特定的代码。我们受限于只有Java/SQL Centric解决方案是可以接受的。我们可以假设我们没有任何限制,我们可以尝试备份和恢复数据库,但有什么办法可以自动完成。 – praveen 2012-02-13 08:11:14

+0

并通过移动模式和数据 - 我的意思是复制整个模式,如表和过程和触发器。对于有选择的表格,也移动表格中的数据。 – praveen 2012-02-13 08:14:04

回答

2

感谢您的额外细节。如果您只能使用Java和TSQL,那么您的选择会受到一定的限制,因为用于MSSQL的API全部都在.NET中,大多数第三方工具也是基于.NET的。

您还没有提到要运行代码的操作系统,您的目标是什么(部署?高可用性?报告?)或需要多久执行一次(一次?按需?计划?)但假设它的Windows,并且可以使用MSSQL的命令行工具(sqlcmd.exe,等的Bcp.exe),然后这里有一些可能性:

  • BACKUP/RESTORE - 这会将整个数据库,所以你不能管理单个对象,当然如果您覆盖目标数据库,则会丢失所有现有数据
  • Replication - 复制数据和objects服务器,但也可以是复杂的设置和管理
  • 使用Integration Services创建复制服务器之间的数据和对象包
  • 使用带有命令行支持third-party tool并从Java
  • 驾驶它编写自己的程序来从源代码控制中获取SQL脚本并使用sqlcmd.exe针对正确的数据库执行它们;您可以使用bcp.exe从特定的表

导出和导入数据不幸的是,Java的唯一的限制意味着你不能使用SMO,它提供了一个管理MSSQL对象,包括现有对象生成DDL一个完整的API。而Visual Studio数据库项目大概也是不可能的,这意味着你不能使用VSDB deployment features

0

您应该能够从Java调用SQL Server管理对象(SMO),就像从任何其他编程语言一样。 The documentation is here。查看示例代码。那里有Java例子。

+0

Java示例在哪里? Java不是CLR语言,不能直接访问SMO。正如你链接到的文档所说,“SMO是一个.NET程序集,要使用Microsoft .NET Framework进行编程,必须选择公共语言运行库支持的语言,在SMO参考中,诸如Visual Basic .NET和Visual C#.NET之类的语言。“另请参阅以下问题:http:// stackoverflow。com/questions/283679/how-can-i-call-net-code-from-java – Pondlife 2012-02-10 13:28:43

+0

可能是错误的,但我之前在社区内容中看到过Java编码。 – 2012-02-10 14:53:01

相关问题