SQL Server Backend, Access front end connection question - sql-server

I transferred my Access Back-end to SQL Server and linked the tables. I used the SQL Server Migration Wizard. When I ran my Forms, Reports and Queries, I was surprised to see that it worked perfectly fine as if I did not even migrate.
How is it the JET SQL syntax of Access able to retrieve data from SQL Server which uses T-SQL language?

Because Jet doesn't need to use Transact-SQL, it just knows how the data is stored, the same way you can use an ODBC connection to pull data from an Oracle database without using PL-SQL. Also, you can write a stored procedure in the SQL database, using T-SQL, and you can fire it off via Jet: the proc lives and runs on the SQL side, and Jet doesn't need to know how it works, just how to fire it.

Related

Link existing MS-Access database to SQL Server

I have an external application that uses a MS Access database to store its data.
I do not want to touch anything here, because the application works very good for me.
I have now created a own application and now I need the data from the MS Access database in my application. My application uses SQL Server.
Is it possible to sync the existing MS Access database with a new SQL Server database, so that I can query the MS Access database through my SQL Server?
I really don't want a linked table in MS Access because this can not work since I can not change the application that uses the MS Access database, and it would also be great if I don't have to query from the MS Access database.
I really need a tool the reads data from MS Access and writes it into my SQL Server and the other way around so they always have the same data.
Thanks in advance for your help.

ETL - Pervasive to SQL Server

I am a SQL Server developer and I have been asked to write some stored procedures to be used to connect a database (Pervasive) to the website.
I was completely unfamiliar with Pervasive before this was asked of me, so I though the best thing to do was to create a SQL Server database (probably express) and have some ETL running nightly moving the data from Pervasive to Microsoft, then I can write all the website code on the SQL Server rather than the live Pervasive database.
Is anyone aware of any free/cheap methods/software for the daily ETL I am planning?
Would SSIS be an option with SQL Server Express?
Lets go the opposite way..
If you are gonna use SQL Server express for your website i would propose something else:
Use SQLite / MySQL for the website.
If you do this, then you can use SSIS to make your ETL from Pervasive -> SQLite / MySQL.
If and only IF your ETL logic is simple and you just want to get rid of Pervasive, then instead of SSIS you can write your own .NET application to handle the data transfer. In that case you can use SQL Express if you want.

MS DTC required for executing triggers and stored procedures on same server

This problem arises when integrating two applications using two databases in same SQL Server 2005. Both applications have their own database on the same server but we have to transfer some data from one database to another. We are using triggers and stored procedures to do that.
If we insert data into the databases with SQL Server Management Studio there is no need for msdtc but if we use the application to insert data we get the error saying DTC is not enabled. We have no control over the application inserting data.
My question in short is why is msdtc required when using the application to insert data?
note: triggers are not making calls between the databases only the stored procedures are
There are quite a few situations where one may be using MSDTC indirectly: clustered server, configured replication, most usages of COM+, and so on.
However, as already pointed by #MitchWheat in a comment, SQL Server 2005 (as well as the Oracle resource manager) specifically uses MSDTC whenever you have more than one database connection in a single transaction scope. This behavior has been fixed in SQL Server 2008 (if you consider it an inconvenience).
In your case, this is a client side, not a server side problem, but it can generally be either.

Insert rows into a SQL Server table from Oracle

I have an Oracle 10G database running on a Unix environmnent and have a requirement to write a PL/SQL job that will be running on the Oracle database that will populate tables in another database which is a microsoft SQL Server database running on a Windows platform.
Having looked around, it looks like this is possible via database links. Has anyone got any more information on this? For example how reliable is the connection and are there any disadvantages in having such a setup?
Chances are that i would have limited access to the SQL Server database. Is the above possible without having to make any changes to the SQL server database? (Assuming the DBA on the SQL server has configured the database to be accessed from other databases)
Thanks
Use the Oracle feature DG4ODBC, it is as reliable as any normal DBLINK setup, to the SQL Server side it will look like any other sort of client connection. You only need to do anything more elaborate if you are planning to do distributed transactions between Oracle and SQL Server (i.e. 2 Phase Commit). You will probably also want UnixODBC and FreeTDS.

Moving Data from SQL Server to Oracle Repeatedly

What are the most reasonable ways to move table data from SQL Server to Oracle (on *nix) on a regular basis?
Using SQL Server Integration Services (SSIS) is likely your best bet. If you're not familiar with SSIS, the best way to try something out is to use the SQL Server Export Wizard and have it create an SSIS package for you. For example, if you go into SQL Server Management Studio and right-click on your database, then select Tasks->Export Data. From there click next until you get to the "Choose a Destination" step. Select the "Microsoft OLE DB Provider for Oracle" and click Properties to define your database connection. When you click through the wizard, on the Save and Execute page, make sure you check the checkbox labelled "Save SSIS Package", on the next screen specify where to save the SSIS package. Once you finish the Export Wizard, your data will have been exported and you will have an SSIS package that you can use as is, or go in and tweak it to do more specific things.
Once you have your SSIS package, you can schedule it by creating a SQL Server Agent Job.
Oracle Heterogeneous Connectivity / Database Gateways in conjunction with materialized view(s), PL/SQL, or Java
SSIS or DTS: both can be scheduled but require more than read-only access to SQL Server
Java (probably within Oracle but optionally at the OS) using ODBC or SQLJ to access SQL Server and, possibly, Oracle
SQL Server scheduled to export to CSV, Oracle scheduled to import from CSV
Any of the other ETL tools (e.g. Informatica, Cognos)
Any of the myriad languages that can access both databases (but would require maintaining a third environment to run the application within)
Scheduling:
Automatic / not reuqired with materialized views
Oracle DBMS_JOB / DBMS_SCHEDULER
OS-specific (cron, Windows Scheduled Tasks, etc)
In the case of SSIS, DTS, or CSV export, scheduled within SQL Server
Create a database link from Oracle to Sql Server (heterogeneous connectivity). You can use this link to retrieve the data from Sql Server with a simple select statement. If you want to schedule you can use a materialized view or dbms_scheduler.
An alternative is to put your data in a csv file, you can use an external table or sqlloader to load this data in the Oracle database.
Here is what I do:
Connect to SQL Server by Oracle SQL developer using this link:
https://kentgraziano.com/2013/01/14/tech-tip-connect-to-sql-server-using-oracle-sql-developer/
After you have added SQL jar, you will see SQL Server tab in the Connection window:
Then connect to the SQL Instance.
Then open SQL instance and choose database or table that you want to copy. Right click on any database/table, then click on "copy to oracle" there and choose the right user[database] at "Destination Connection Name " where you want to copy your tables.
You can also change some properties there.
Click "OK" and that's it.
Let me know in case of any issues.
You can have SQL Server interface with Oracle directly through SSIS (or DTS for 2k). It will provide ETL functionality and can be scheduled on a regular basis.
I had success creating a linked server (from within the Enterprise Manager, I think) to Oracle on the SQL Server side. Then I could use normal stored procedures on both sides to accomplish smaller data movement and updates in both directions. This approach can bypass the need to try and put something together outside the databases.
Try hard to use the latest possible Oracle client on the SQL Server side though. I recall some defects in the 10.2.0.2 client and getting the 10.2.0.4 client required your "official" Oracle registration or purchase number or something.
For big data moves (or maybe even moves/updates you want done on a daily or less frequent basis), definitely use one of the ETL tools. We had Informatica for our ETL processes, but if SSIS can pull off what you need, that's fine too.

Resources