2012-07-08 36 views
1

我们的应用程序是在windows server上使用ASP.NET开发和测试的,使用sql server 2008r2。现在我们需要在red hat linux上将数据库从Windows移到oracle。在Red Hat上连接到oracle 11g使用asp.net从windows服务器连接到linux

我们还没有设置测试相同的基础设施。在此期间我想知道是否有人成功地完成了这种事情。指向任何资源将是一个很大的优势。

正在改变连接字符串需要做的还是有在Linux中任何特定的配置,让这唯一的事情吗?

我会验证这一点,一旦我得到了环境准备好了,但作为一个领先地位,如果任何人有任何类似的经验,做的份额。

在此先感谢。

P.S:对Oracle表结构,storedprocedures等的迁移,我们将使用SQL Developer工具。

+0

从连接角度来看,connectionString更改应该没问题。您是否使用任何ORM访问数据库? – Chandu 2012-07-08 02:40:18

+0

没有ORM,我们有一个与提供者无关的数据层,可以根据需要插入任何提供者。 – 2012-07-08 02:43:12

+0

然后,我没有看到连接验证的任何主要问题,因为数据访问层已经建立为与数据库不可知的关系。 – Chandu 2012-07-09 01:34:44

回答

0

我想回答我的问题,因为,迁移到Oracle是不是直线前进,但也有一些技巧,可以帮助任何人迁移到Oracle在Windows或Linux用更少的头痛。

的SQL开发工具做迁移SQLSERVER架构和数据到Oracle包括storedprocedures,约束好工作的第一件事,触发器等

它也确实数据类型映射一个良好的工作,并提供选项来重新映射数据类型如果需要。

一些注意事项和注意事项。

  1. Oracle对约30个字符的存储过程名称的长度存在限制。这是您需要进行手动重命名的区域,因为迁移SP或名称超过30个字符的标识符可能会被截断。

  2. ,你可能面临的另一个常见的问题是关于日期插入和格式化。您可以使用以下代码片段来避免头痛。常见的错误将是“不是有效的月份”。

OracleConnection conn = new OracleConnection(oradb); // C# conn.Open(); OracleGlobalization session = conn.GetSessionInfo(); session.DateFormat =“DD.MM.RR”; //根据需要更改格式 conn.SetSessionInfo(session);

  1. 当插入或更新数据或相关错误时,最烦人的错误是数字转换的字符。

这里的问题是,当您为sql提供程序的命令对象添加参数时,绑定通过名称发生,但forOracle.DataAccess默认绑定是按位置。这篇文章节省了我很多头痛。 ODP .NET Parameter problem with uint datatype

你可以做的是设置命令。BindByName = true;

  1. 当迁移返回数据的SP时,oracle会创建一个out参数ref cursor。在构建命令参数时需要注意这一点。

例如,OracleParameter refp = new Oracle.DataAccess.Client.OracleParameter(“cv_1”,OracleDbType.RefCursor,ParameterDirection.InputOutput);

command.Parameters.Add(refp);

  1. 此外,sqlserver需要SP的参数前缀为“@”,而oracle不会。这可以在数据层轻松处理​​。

  2. 此外,由于Oracle中没有位数据类型,数字(1)工作正常。如果需要,您可能需要将您的bool转换为数字。

希望这可以帮助别人避免迁移头痛。如果我遇到了,我会发布更多的问题。