我想回答我的问题,因为,迁移到Oracle是不是直线前进,但也有一些技巧,可以帮助任何人迁移到Oracle在Windows或Linux用更少的头痛。
的SQL开发工具做迁移SQLSERVER架构和数据到Oracle包括storedprocedures,约束好工作的第一件事,触发器等
它也确实数据类型映射一个良好的工作,并提供选项来重新映射数据类型如果需要。
一些注意事项和注意事项。
Oracle对约30个字符的存储过程名称的长度存在限制。这是您需要进行手动重命名的区域,因为迁移SP或名称超过30个字符的标识符可能会被截断。
,你可能面临的另一个常见的问题是关于日期插入和格式化。您可以使用以下代码片段来避免头痛。常见的错误将是“不是有效的月份”。
OracleConnection conn = new OracleConnection(oradb); // C# conn.Open(); OracleGlobalization session = conn.GetSessionInfo(); session.DateFormat =“DD.MM.RR”; //根据需要更改格式 conn.SetSessionInfo(session);
- 当插入或更新数据或相关错误时,最烦人的错误是数字转换的字符。
这里的问题是,当您为sql提供程序的命令对象添加参数时,绑定通过名称发生,但forOracle.DataAccess默认绑定是按位置。这篇文章节省了我很多头痛。 ODP .NET Parameter problem with uint datatype
你可以做的是设置命令。BindByName = true;
- 当迁移返回数据的SP时,oracle会创建一个out参数ref cursor。在构建命令参数时需要注意这一点。
例如,OracleParameter refp = new Oracle.DataAccess.Client.OracleParameter(“cv_1”,OracleDbType.RefCursor,ParameterDirection.InputOutput);
command.Parameters.Add(refp);
此外,sqlserver需要SP的参数前缀为“@”,而oracle不会。这可以在数据层轻松处理。
此外,由于Oracle中没有位数据类型,数字(1)工作正常。如果需要,您可能需要将您的bool转换为数字。
希望这可以帮助别人避免迁移头痛。如果我遇到了,我会发布更多的问题。
从连接角度来看,connectionString更改应该没问题。您是否使用任何ORM访问数据库? – Chandu 2012-07-08 02:40:18
没有ORM,我们有一个与提供者无关的数据层,可以根据需要插入任何提供者。 – 2012-07-08 02:43:12
然后,我没有看到连接验证的任何主要问题,因为数据访问层已经建立为与数据库不可知的关系。 – Chandu 2012-07-09 01:34:44