“SQL Server Native Client is not installed” error is appearing while running powerbuilder Application - powerbuilder

We have recently migrated Powerbuilder application from 6 to 2017. We are using MS SQL Server 2012.In PB6 we have used MSS Microsoft SQL Server 6.x as connection string. in PB2017 we have changed the connection string to "SNC SQL Native Client(OLE DB) " . After migration and Build, EXE is working from developer machine but not from User Machine. Copied all SQLNCLI* files to the application folder. but no luck. Please help us to resolve the issue.

I believe run times need to be in the PATH and best to use the run time packaging tool that comes with PowerBuilder. You can extract the files from the resultant MSI including extracting the PATH statements.
Did you even bother reading the help file under run time files? This site isn't a free service to do dirty work for you we give (and take) in a reciprocal way. Overlooking since you are new here.
The SQLNCLI* files are Microsoft owned and the PowerBuilder Native run time (pbsnc170.dll) is needed to interact with the SQL layer.
Relating to OLE DB
OLE DB database providers
If your application uses OLE DB to access data, you must install Microsoft's Data Access Components software on each user's computer if it is not installed already.
The PowerBuilder OLE DB interface requires the functionality of the Microsoft Data Access Components (MDAC) version 2.8 or later software.
To check the version of MDAC on a computer, users can download and run the MDAC Component Checker utility from the MDAC Downloads page at http://msdn2.microsoft.com/en-us/data/aa937730.aspx.
On the Windows 7/8.1/10 operating systems, the Windows Data Access Components (DAC) version 6.0 replaces MDAC, and implements the functionality requirements of the PowerBuilder OLE DB interface.
OLE DB Providers
Several Microsoft OLE DB data providers are automatically installed with MDAC and DAC, including the providers for SQL Server (SQLOLEDB) and ODBC (MSDASQL).
PowerBuilder Runtime Packaging
PB 2017 may not include the run time packager tool.
The PowerBuilder Runtime Packager is a tool that packages the PowerBuilder files an application needs at runtime into a Microsoft Windows Installer package (MSI) file. Windows Installer is an installation and configuration service that is installed with newer Microsoft Windows operating systems.
To use the PowerBuilder Runtime Packager:
Select Programs>Sybase>PowerBuilder XX.yy>PowerBuilder Runtime Packager from the Windows Start menu or launch the pbpack115 executable file in your Shared\PowerBuilder directory. It will be named per the version you are using.
Select a location for the generated MSI file.
Select PowerBuilder .NET Components if you are deploying a .NET target. Otherwise, select PowerBuilder Standard Components.
Select the database interfaces your application requires.
If your application uses DataWindow XML export or import, check the XML support check box.
If your application uses the XML services provided by the PowerBuilder Document Object Model, or if it is an EJB client or a SOAP Web services client, select the appropriate check boxes.
Click Create.

You definitely should be using the Microsoft installer for the client, not copying the files. They must be in the system path and there are registry settings the installer will take care of.

Several years ago I wrote a program in PowerBuilder that accessed SQL Server. At the time I had to install the SQL Server Native Client runtime on all the user's machines. I don't know if that's changed since then. This is a quote from a blog post I wrote about it:
On your client machines, in addition to the PB runtimes (including
PBSNC120.dll, which is for SQL Server), you also need to install the
SQL Server Native Client runtime. These come as an msi installer
package from Microsoft. When you install the SQL Server client, you'll
need to do so as an administrator.

Related

how to open ms access database in system which does not have ms office installed in c++

I have a tool that is developed in C++, it has ms access as a database. i am using ADODB to access the database. The tool works fine with the system which has MS office installed.
I am trying to run the tool in a system where MS office is not installed.
The Open db call is failing.
Can you please suggest me any solution for this problem ?
The Access application itself is not required for ADODB reading/writing of an Access database, but Office is required.
There are various projects that have had degrees of success in reverse engineering the mdb and accdb formats, but I'm not sure that they're robust enough for regular use. See MDB Tools or Jackcess
You might want to consider exporting the tables to a CSV format and then querying those files, or importing them into an alternate database.

DBX Error in Delphi Berlin 64bit compiler: Driver could not be properly initialized. When connecting to a Oracle 12c DB Server

I got the stopper error below in my apps. I used Delphi Berlin 64bit compiler. And also used the dbxora.dll as dbxpress driver default from embarcadero. Connected to Oracle 12c DB server using TSQLConnection component.
DBX Error: Driver could not be properly initialized. Client library may be missing, not installed properly, of the wrong version, or the driver may be missing from the system path.
How can I fix this?
A DB Express driver is not always sufficient on it's own to connect to some data sources. For certain data sources (most of them in fact) you also require the client drivers for that data source, usually provided by the database vendor themselves.
Oracle is one of these.
As well as the DB Express driver you also need to install the Oracle Client software provided by Oracle. You also need to ensure that you install the correct version.
i.e. in your case since you indicate you are building a 64-bit application then you will need the 64-bit Oracle client.
If you (or your intended users) already have the 32-bit Oracle client installed then you might consider building your application as a 32-bit application instead, unless you absolutely need 64-bit capabilities.

How to use odbc connectivity in android for accessing access database

I want some idea that how to use odbc connectivity for accessing Access database .
I did some search i got one link :
http://www.easysoft.com/support/kb/kb01038.html.
If anyone having any idea about that then please revert.
You not only need a ODBC driver, but one that is spiecif for the JET (now called ACE) database engine. In other words you need a driver that includes the database engine, and I not aware that a version of JET/ACE exists for Android.
So when you connect to a ODBC source, you need a specific ODBC driver that includes the JET/ACE code (database engine). Since a version of JET/ACE does not exist for Android then this is not possible to my knowledge. So the jdbc driver will work on the windows platform because you have use of the JET/ACE .dll's that also work on windows. Such a set of dll's or a version of the JET/ACE engine does not exist for Android. You likely best connect to a server based system, and then have something on the windows desktop that pulls this data into the JET/ACE file format. You could also perhaps just use XML or csv files, and again have some windows desktop code pull data from that file into Access.

ADO components in delphi

I am currently using BDE components to connect to a database in Delphi 5 professional version. My problem is that BDE components need BDE Administator to run the application on another machine. So I am planning to buy a new version of Delphi which contains ADO components.
Question: Are ADO components also having issues like the BDE? Do ADO components need any specific setup to run applications on another machine?
Thanks for the help.
All the components have issues in some point, in the case of ADO is very stable, but you can have some specific problems with the providers (like the infamous not support for blob fields in ORACLE using the Microsoft provider) but certainly is more recommendable use ADO instead of the deprecated BDE. About the dependencies, ADO uses providers to connect to the RDBMS, most of them are installed by MDAC (Microsoft Data Access Components) which is included in most of the Windows versions. So in most cases you will not need install any addtional component, at least which you want use a provider not inluded in MDAC like MySql, Firebird or others.
Sounds like if you posted two times the (almost) same question... with more focus on ADO this time.
As was written in the previous question, if you attempt to connect to an Oracle database using ADO or OleDB, you'll find out that all OleDB providers are buggy for handling Oracle BLOBs: Microsoft's version just do not handle them, and Oracle's version will randomly return null for 1/4 of rows... So IMHO ADO or OleDB are not a serious option for accessing Oracle database. :(
And if your purpose is to get rid of the BDE installation, you'll find out that the Oracle's OleDB provider is quite huge and that the BDE is much light and better... A standard Oracle's client installation containing the OleDB/ADO provider (which is not installed in the "Light" version of the Oracle's clients), needs a .zip setup of about 660 MB...
On real database data, I found out our Open Source direct access to Oracle to be 2 to 10 times faster than the OleDB provider, without the need to install this provider (nor the BDE). You can even use the Oracle Instant Client provided by Oracle which allows you to run your applications without installing the standard (huge) Oracle client or having an ORACLE_HOME. Just deliver the dll files in the same directory than your application, and it will work.
Of course, this is full Open Source, and works from Delphi 5 up to XE. So when your project may upgrade to a newer Delphi version, it will work. You are not tied to non-Unicode Delphi 5-Delphi 7 version of Oracle components, as you can found on Torry's, e.g. but those components may help you get rid of the BDE installation for an existing project.
If you don't use BLOBs in your database, you can use ADO. In this case, my advice is to read this post, and use TADODataset, which is available in Delphi 5.
Ok Naren, since you are on Oracle you can use this Oracle driver DOA. We use it exclusively in our Delphi projects.
All our Delphi projects are on Delphi 7 but we are converting all of it to Delphi XE now. When using DOA you do need to install the Oracle client libraries on the client machine. The upside is speed and Oracle support, so the DOA drivers don't need to work on the most common command set like ADO needs to, so the Oracle support is brilliant.

How, and where to install a database driver into an IDE?

I want to install a Firebird database driver, and to have it available within the Delphi XE IDE. I want the database driver to be usable on the same basis as other, supplied database drivers (eg Interbase, SQL - from within the Data Explorer in the IDE). I have obtained an appropriate driver.
The driver consists of a Delphi project, which compiles to a DLL; and modifications to two .ini configuration files (dbxconnections.ini and dbxdrivers.ini). I assume that the DLL is the actual driver, and I have compiled the project without problem.
I have got this far, and this is where I realised that I do not know what is involved in installing a new database driver; what is involved in installing a new database driver into an IDE; nor where the elements of the installation need to reside.
So my question is:
What steps are needed to install a dbExpress database driver into the Borland XE Delphi Professional IDE?
Some of the specific points I don't know about include -
Does the driver need to be registered with all of Firebase, Delphi and Windows?
Do I need to employ a specific registration procedure to accomplish registration?
Are there any elements I am missing to accomplish my aim?
Where should the installed components be located?
All four vendors, Embarcadero, Borland, UniOpen, and Firebird provide documentation (most of which is very comprehensive) but I have been unable to extract from them what I need to do and where to do it.
I have searched multiple questions on SO, but all of seem to start from the basis that the OP knows what is involved in driver installation.
All the products (except the driver project) generate multiple files in multiple locations, and it is not clear what components belong where. For example, I have multiple versions of the two configuration files residing in:
C:\Users\User\AppData....
C:\Users\Public\Public Documents...
C:\Program Files\Vendor....
....
In addition these products install files into:
the registry (multiple keys);
C:\Program Files....;
C:\Program Files (x86)....;
C:\Windows\System....;
C:\Windows\System 32.....
and probably more.
Environment:
Machine: Lenovo Thinkpad W510
OS: Windows 7 Ultimate
Delphi: Embarcadero® RAD Studio XE Version 15.0.3953.35171
Database: W1-V2.5.0.26074 Firebird 2.5
Database Driver: UniOpen Native DBX Driver
Also Installed:
Embarcado Borland® Developer Studio 2006 Enterprise Version 10.0.2288.42451 Update 2 (XP Version)
Borland Delphi Version 7 (XP Version)
In summary:
What steps and locations are needed to install a dbExpress database driver into the Borland XE Delphi Professional IDE?
You missed a file. :)
DataExplorer, from the best I can tell, uses dbxdrivers.ini. My installation of XE has a single copy of that particular file, located (Win7 64) in C:\Users\Public\Documents\RAD Studio\8.0. The connection types listed in DataExplorer come from the list of installed drivers at the beginning of that file, and each driver has one or more configuration sections which follow that list.
The driver files listed in the configuration section have to exist in a location findable (like any other Windows DLL) by LoadLibrary. The documentation in the link explains the way the API function searches for DLLs; basically though, the IDE has to find it somewhere on the PATH.
The vendor or author of your particular driver should be able to provide the info that needs to go in the dbxdrivers.ini file. (I'm not familiar with UniOpen personally, and don't have FireBird on this particular machine.) The IDE only reads that file during startup, so you'll need to (re)start the IDE after making the additions.
This post at the Embarcadero Delphi Database->DBExpress forum may help with defining aliases for your Firebird databases, and describes connecting via the TSQLConnection component. (Look for a post by Ralph Horbury-Smith.) If you don't have a Developer's Network ID, you'll need to register with the Embarcadero site; the link I provided uses HTTPS for some reason. You can also get to their forums via NNTP; I'm not using a newsreader, so I'm not sure what the address would be. There's a link to connection info on this page at Embarcadero.
There's also some information available on the Delphi XE documentation Wiki pages that might help as well.
EDIT: Found one more link at the DBExpress forums that might interest you. It has a link for another FB DBExpress driver and specific information for the dbxdrivers.ini file for that driver. It's the post by Phillip Flores (about the 3rd one down on the page).
I am accepting #Ken's answer. His response provided links to various resources. I am summarising the answers to the specific points I had that I have obtained from the references.
There is no need to amend dbxconnections.ini - the IDE will do that for me.
I need to amend dbxdrivers.ini appropriately and place it in the IDE directories.
The actual driver needs to be somewhere on the path - typically System32.
There is no need to register the driver with Windows.
Apart from the items listed above, there is no special procedure needed to register such drivers.
The list here appears complete.
EDIT:
My conclusions in this summary were premature and I have asked a further question to try and obtain further information. The strikeout in the list above marks the incorrect elements.

Resources