I have yet to find a good comparison of technologies for accessing Oracle from .Net applications...
Are there significant differences between Microsoft's System.Data.OracleClient provider and Oracle's Oracle.DataAccess.Client? My current company is using both because they couldn't figure out how to return a cursor from an oracle function using System.Data.OracleClient. (I fixed that for them, so that is not a factor) For dynamic sql queries, they prefer to use System.Data.OracleClient as they feel that Oracle.DataAccess.Client is "picky" and causes other problems in general.
Edit: Deprecation of the System.Data.OracleClient types is not a concern
Other than Deprecation of System.Data.OracleClient, are there significant reasons to lean one way or the other for new development?
Would a comparison grid between Oracle ODP.net and Microsoft Oracle Client help?
Related
How to convert an Oracle DB 11.2.0.3 to a 12cR2 PDB using Oracle Sqldeveloper?
As far as I can tell, you can't do that. SQL Developer does quite a lot of things, but I doubt that it is capable of upgrading a database version.
This is the Database Upgrade Guide (https://docs.oracle.com/database/121/UPGRD/toc.htm). Recommended method is Database Upgrade Assistant (DBUA), although you can do it manually. The question is: are you capable of doing it? I'm not implying that you're stupid, God forbid, but you might not have enough knowledge and/or experience. Perhaps you should discuss it with a proper DBA.
Interested to know if anyone has had any experience with moving a VB6 application from SQL Server 2000 to a newer version of SQL Server.
There are VB6 legacy apps on a Windows 2000 Server
These VB6 apps connect to a SQL 2000 Database
We are looking to upgrade from SQL 2000 to SQL 2014
We are reporting with Crystal Reports
The VB6 apps have inline SQL within them
I'd like to understand what the possible implications could be?
Thanks
For one thing, there is no direct migration path from 2000 to 2014. This article (http://sqlmag.com/sql-server-2014/sql-select-steps-migrate-sql-server-2000-sql-server-2014) outlines some potential steps to take to perform the upgrade.
Things that may trip you up not mentioned in this article:
DTS no longer exists so if you have any DTS packages, it will be a project to upgrade/convert them all over to SQL Server Integration Serices (SSIS) packages.
If your VB6 app contains hard coded SQL statements, rather than just calling stored procedures, you could have minor syntax issues that would have to be rectified (so test EVERYTHING)
If you are also looking to migrate VB6 to .NET, there is an upgrade wizard out there somewhere, but it is HORRIBLE, so depending on the need, it may be faster to just re-write from scratch. If you are implying that the VB6 application would just connect to the migrated 2014 database, the note on the main question is accurate, but again...test EVERYTHING.
3a. If you are referencing any old COM components or old OCX controls, it will be a source of pain.
3b. Does your app do any reporting? old 2000 SSRS, or Crystal reports? again, another project.
Good luck!
I've done it, and there were stored procedures / user functions that needed to be updated for compatibility. Here is a Microsoft tool, SQL Server Upgrade Advisor. If you are using inline SQL in your code I'm not sure if this tool will help you. I was fortunate in that most on teh application SQL was implemented as stored procedures inside the database itself.
Here is an MSDN blog post about upgrade considerations and using the Upgrade Advisor tool.
I am using Visual Studio 2008 C# and SQL for my development.
Which oracle version should i download? Oracle 10g?
Does it have a design interface like sql server mangement studio?
Will this distribution concept have a graphical tool which say "Hi, on which servers would you like to distributed the database and on what basis"?
Using a local application, when I connect to its server and try to enter or delete data not on that server, will the oracle DB management system transparently access other servers to get or insert data? Or will it produce an error?
In reverse order:
Oracle does not do distributed in the way you (seem to) imagine. It's not Voldemort or Cassandra. It's one database per server, unless you're talking about RAC: but RAC is shared everything, so it's transparent (but way complicated).
The nearest Oracle has to SQL Server Management Studio is, I guess, Enterprise Manager. But I suspect OEM is probably not as easy to use as its MSSQL counterpart.
If you have a free choice use 11gR2. Why wouldn't you not use the latest version?
Oracle does support one application using multiple databases. However, this is normally due existing (even legacy) databases providing some of the data for an application. You should not deliberately set out to have separate databases on multiple databases, because distributed transactions are slower, less reliable and harder to tune. Find out more.
If you want to have multiple servers for resilience or scalability then as I said before RAC (Real Application Clusters) is Oracle's solution. This is a different architecture from SQL Server's federated approach. Find out more.
"so this link thing is support by free
versions of oracle?"
There is only one free (as in free beer) version of Oracle, and that is the Express Edition (currently still 10g only). That edition does support Database Links. I suggest you read two related articles by Lewis Cunningham: one explaining about DB Links and the other on linking multiple XE instances.
Oracle 10g Express is a great starting point. You would then need the Oracle Developer Tools for Visual Studio package.
Although the database comes with a fairly basic web-based interface, you would fare much better using a proper tool as Oracle SQL Developer (it's free). It's possibly not as complete as SQL Server Management Studio in terms of what it graphically offers, but it's good enough.
The difference between connecting a database hosted on your local computer and one hosted 450 miles away usually boils down to correctly configure your connection strings. However, it will not ask you 'graphically'; in the C# application you will be creating, you'd have to configure that by the way of code. Oracle SQL Developer, on the other hand, will ask you kindly. :)
Your local application would operate over the database instances which you have set it up to do so. You could configure your application to connect to 3 (or more) different databases, and it's not that the database system will know, but that you would be the one managing the operation.
I'm in the process of cleaning up an Oracle database application. In this application, performance and ease of access are paramount concerns. It has to get out of your way and let you get to the data in a free and uninhibited way. While doing that, it has to be very fast. When it can't be fast, it has to be multi-threaded so that it doesn't freeze up the system.
All of that out of the way, here's what I've learned. Microsoft has deprecated the System.Data.OracleClient namespace. It'll be around in .NET 4.0, but it'll be marked with ObsoleteAttribute. I've currently swapped it out for ODP.NET from Oracle (which turned out to be surprisingly painless), but in reviewing other comments, I realized that I was still failing to meet a few design goals:
I might not be using the fastest provider out there.
I still can't seem to provide access to the SYSOPER account. I haven't quite worked out why, yet. That could be a coding issue, but I'm stumped.
So here's my question for you guys.
What are the 3rd party alternatives to System.Data.OracleClient that you've used, and what are their pros and cons?
I used ODP.NET and I'm satisfied with it.
There were some cons, which are gone with the last version of oracle instant client supporting odp.net.
We've used ODP.NET since it was first released and have been pretty happy with it. I haven't used the following, but the fact that you can use them without installing an oracle client is appealing:
DevArt
DataDirect
Does LINQPad work with Oracle? Has anyone tried? What do you suggest?
As of beta version 4.35, LINQPad supports Oracle fully - you can now do "LINQ to Oracle" queries. I believe it uses the DevArt dotConnect libraries for managing this great feat. Further, in addition to native OCI support, it also supports a direct mode which does not require the Oracle OCI DLLs to be present.
To enable this feature you will need to simply add a new data connection in LINQPad, and when asked which driver to use - click the View more drivers... button. You can then install the IQ Driver and use it for querying Oracle, MySQL and SQLite databases.
Judging by their user voice item request for Oracle support, it appears unsupported at the moment.
A comment on the O'Reilly forums also suggests its not supported.
update As we understand it, there's now built-in Oracle support in the latest versions of LinqPad; the home page of LinqPad now lists support for Oracle.
update January 2013 The new LinqPad-to-Oracle support appears to still be available. Per the LinqPad FAQ:
Q. Why does LINQPad use LINQ to SQL under the covers, rather than Entity Framework?
A. LINQ to SQL is faster with large schemas and in most cases, emits
better SQL. You can, however, use EF with EDMs that you define
yourself. For querying SQLite, MySQL and Oracle (via the optional
plug-in), LINQPad uses Matt Warren's IQueryable toolkit.
Linqpad now has support for lightspeed which supports oracle.