Filemaker ODBC metadata missing in SSIS / SQL - sql

I am having trouble gaining access to FileMaker Pro 11 data through the ODBC connection and starting to believe that it is not possible.
I have installed the odbc drivers supplied with the installation (11.03.76.00) locally to the FileMaker database, having worked out that they will not work remotely to the server. Have setup and successfully tested a system DSN.
When I try to use that System DSN within SQL Server or SSIS (same underlying process), I am gaining access to the list of tables and can preview the data, however when each process tries to get the metadata regarding the tables it fails.
SQL lets me select the tables / columns, preview the data, match it to destination and change the data types, but then fails on the next step of checking the conversion
SSIS provides list of tables / columns, data preview, but fails to list the columns (im guessing because it cannot work out the types)
FileMaker tech support does not cover the ODBC driver which has led me to believe it does not work...
Has anyone successfully attached to FileMaker Pro though the version 11 of the driver with SSIS or SQL? I need to automate a daily extract - any other ideas?

As billinkc points (above comment - sorry cannot convert comment into an answer), you can use the Script component as a Source and program around the ODBC driver issues.
The FileMaker Pro 11 odbc driver is data type aware, but they are not plumbed in correctly. The work around requires converting each column to string and then TryParse'ing to the correct data type.

Related

In an ODBC linked Access table, what determines the Field Size, and how can I change it?

I have a table that is linked to MS SQL Server through an ODBC connection. From what I can tell, Access somehow determines the Field Size and data type. In one of my fields, Access decided to set the field size to 7, when it should be 8. For a number of records, the last digit is being truncated! Access also has set the Datatype to Short Text. When ever I try to change either of these fields, I get the error "Operation is not supported for this type." Does anyone know how access determines the field size/data type, and how to change it for an ODBC linked table?
Edit: In my SQL table, the data displays properly. The truncation only occurs after the ODBC link in Access. Data type is nvarchar(50)
is the field in question datetime2?
The standard "legacy" driver installed on windows by default (since xp days I think) does not see the later "newer" types of columns used in SQL server.
So, if you use SQL server driver, then Access will actually see that column as a string (text) and not a datetime column.
The fix is:
Use a native 11 or newer sql ODBC driver. This works, but then you have to ensure and install the native 11 (or later) driver on each workstation.
The other possible is to change the datetime2 to a datetime column server side, and re-link using the long time (and older) legacy SQL server driver.
However, even with the standard SQL driver installed by default on on recent editions of windows, I not seen the truncation you describe. I would suggest you try using a newer native 11 (or 13 or even later version). This may well fix your issue, but then you have to ensure that this newer driver of the same version is installed on each workstation.
I still use the legacy SQL server driver and thus this avoids me having to install a newer ODBC driver on each workstation, but in turn for this favor, I have to avoid the newer SQL server data column types available such as datetime2 columns.
I would try re-linking with a newer native 11 or later driver - see if that fixes this issue.

Run SQL queries without external database

I have a text file of tab separated data. Millions of rows so I can't open it in Excel.
Is there a way to use some SQL client to load the file and run queries on it without uploading the file to a database? I.e. can my local machine function as my database?
I know I could solve this with command line scripting but I'm trying to find a solution that I can then share with the accounting department and they're scared of the command line.
You can create an ODBC datasource based on the Microsoft Text Driver. That driver should come pre-installed on any Windows PC. This uses the Jet Engine which is still somewhere in the Windows OS. Then you can use any Query tool (even MS Query) to analyse your data.

What SQL type is used in Excel

This is my first post in here,
I am new to SQL and I started learning it, I use it mainly in excel to get data from an outer Database
I first go to data then Refresh all then from the menu I choose connection properties
Then a dialogue appears and I input my code in the window called Command text from the Tab Definition
I added images to show where I input my SQL code
My question is what type of SQL do I input there ?
is it mySQL or SQLServer or what ??, so I can learn it, because some commands just don't work with me the way they are supposed to do
You can connect to any database type as long as you have the appropriate ODBC drivers. For example, here is documentation for MySQL for Excel. Quote from article "Use Microsoft Query to retrieve external data":
If the external database that you want to access is not supported by the
ODBC drivers that are installed with Microsoft Query, then you
need to obtain and install a Microsoft Office-compatible ODBC driver
from a third-party vendor, such as the manufacturer of the database.
Contact the database vendor for installation instructions.
OLAP databases do not require ODBC drivers. When you install Microsoft Query, drivers are installed for databases that were created
by using Microsoft SQL Server Analysis Services. To connect to other
OLAP databases, you need to install a data source driver and client
software.
Whichever database type you connect to, you will still be using Microsoft's SQL variant (as developed for SQL Server). As a beginner you're not going to notice too many differences right off the top. Most of the differences are related to data types, such as DATE vs DATETIME. Here is a wiki on SQL Compliance and this article on MS Access SQL will also apply to Excel Query.
You can connect to many data source including: SQL Server database, Access database, MySQL database, PostgreSQL database etc..
You can find the full list here: Link

Data integration between IBM AS400 to SQL Server database

I'm a web developer that has been tasked with creating some sort of mechanism for moving data from an IBM AS400 to a SQL server. Unfortunately, linked servers are out of the question in this case as the SQL Server is just Standard Edition (db2 providers not available in this version) and the AS400 server is on a separate server. I've researched adding some sort of trigger on the AS400 table that calls a web service that would insert data into the SQL server, but that doesn't seem like the best method. Does anyone have any suggestions on the process to get the data from the AS400 to the SQL Server when it is committed to the AS400?
This solution assumes you are familiar with SQL Server Integration Services (SSIS):
Connection to AS400
Create a new ADO.Net connection Manager
Set the Provider to .Net Provider --> ODBC Data Provider
Create a DSN (Control Panel -->Administrative Tools-->Data Sources ODBC -->System DSN)
In the connection manager for Data source specification select the DSN created. Provide the login information.
Test the connection.
Data flow source:
Use the DataReader source
In Advanced Editor select the Ado.Net connection manager just created.
In Component Properties tab --> Custom properties, in SQLCommand specify the required query string (select * from DatabaseName.TableName)
Check the column mappings for accuracy
Go to Input and Output properties -->Data reader output -->External columns (Select the columns which were of type varchar in the table, they will now be of the datatype UnicodeString (DT_WSTR). This is because by default DataReader reads strings as unicode strings. This implies that in the destination table in SQL these columns must be of type unicode i.e NVARCHAR instead of VARCHAR)
Answer sourced from www.sqlservercentral.com/Forums
I synchronize my web applications with an IBM i. But I have my own database design and wrote a sync program on the Windows side.
Having the same database design I wonder why I would need a copy on SQL server. I would access the IBM directly. Install the drivers as #Kamran Farzami suggested and use them. That way there would be no lag between writes on the mainframe and your queries.
If a lag is acceptable for you and you can't access the IBM i directly, I see three main options:
Pull the data from your Windows system with the OLE DB driver. Using the .NET driver you can use the relative record number (RRN) to remember where you stopped synchronizing.
Read the journal files and make them available by creating a webservice on the IBM i.
Read the journal files in a scheduled job and push the changes from the journal to a webservice which updates the SQL server.
Option 1 only works if the files you sync are not reorganized. The RGZPFM command changes the record numbers. If that's okay, you can get the RRN in your SELECT statement: select *, RRN(MYTABLE) as RRNMYTABLE from MYTABLE
The web service server is included in OS400 since V5R4. So you should be able to use option 2.
I've done something similar where the SQL server was in a remote (Honduras) location where the internet connection was unreliable. It was a short VB program, using the OLE DB driver, running on the server that connected to the AS400 when it was available (or "slept" when the connection was down). When available the program would update/synchronize a uniquely keyed mirror file. Another program uploaded individual transaction records to a separate table (file).
We'd also periodically update SQL Server master tables (i.e. item master) from the AS400. That also utilized a VB program (could be any language using the driver) initiated on the server. It isn't exactly elegant, but more practical than an AS/400 trigger to a web service, I believe.

VFP 9 FrontEnd Application with Oracle 10g Express BackEnd

I have a VFP 9 application that make invoices, it works fine with its default database(.DBC) I am trying to port the front end of the application (EXE) to be used with Oracle 10g Express as back-end through ODBC or any other suitable method. I do have the complete project source-code.
The application has two style forms single record editing forms, and master detail forms these forms just adds/edit/delete Search.
This application was not developed by me. I am required to keep it as it is. I do keep regular backups but its database files (.DBF) get corrupted after any OS / Power failure. So i am thinking to transport all the data to oracle database and want it to be edited / added with existing VFP EXE with data in oracle. and get rid of DBF crashes.
my problem in this scenario is:
1) I can connect to DB with ODBC. have all data from DBFs to Oracle Database but have problem with view/edit/issues it won't work as normal.
2) I am not able to use VFP Wizard to generate Data Entry form with ORACLE REMOTE VIEW. that can view / add/ edit data
3) Can not find any way to change database Source in VFP database designer to replace tables with oracle remote views VIA ODBC.
Thank you in advance. any help suggestion or guideline is welcome and much appreciated.
Regards.
Unless the application was designed to deal with a remote data source, rewriting it to talk to Oracle is probably a large job. Before you do that, have you considered simply adding uninterruptible power supplies (UPS) to each computer involved. Data corruption in VFP is generally due to interruption; providing a way for users to shut down properly when power fails may solve your problems.