Thread: PgMigration error when migrating Dbase tables
CAUSE
The following are two possible causes of this error:- In the registry, under the key for an OLE DB provider's CLSID, there may be an entry named OLEDB_SERVICES. If the OLE DB provider being used to make the ADO connection doesn't have the OLEDB_SERVICES entry, and ADO tries to set up a property that is not supported by the provider, the error occurs. For more information on this registry entry, see the "Resolution" section.
- If OLEDB_SERVICES entry exists but there is a problem in the ADO connection string, the error occurs.
If the property setting is optional, the failure is not fatal. This is the case when you connect without explicitly setting the property in the connection string. In this case, ADO sets the property to True but marks it as optional.
RESOLUTION
You can work around this problem in the following ways:- Do not use the "Persist Security Info" keyword in your ADO connection string.
- Add the OLEDB_SERVICES registry entry as follows:IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:
256986 Description of the Microsoft Windows Registry
- Start Registry Editor (Regedit.exe).
- In the registry under HKEY_CLASSES_ROOT\CLSID, find the CLSID of the OLE DB Provider. For example, the following registry key is for the Microsoft OLE DB Provider for SQL Server (SQLOLEDB):
HKEY_CLASSES_ROOT\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}Click the CLSID, and then on the Edit menu, click Add Value and add the following registry value:
Value Name: OLEDB_SERVICES
Data Type: REG_DWORD
Value: 0xFFFFFFFF
NOTE: To find the CLSID for the provider you are using, search for the provider's ProgID (SQLOLEDB, for example) in the registry under HKEY_LOCAL_MACHINE\SOFTWARE\Classes\. Under the ProgID, there will be a key named CLSID.
- If the above conditions are satisfied and you still receive the error, check your connection string for other possible errors.
-----Original Message-----
From: Julie May [mailto:julie@ccorb.com]
Sent: 28 March 2003 19:30
To: pgadmin-support@postgresql.org
Subject: [pgadmin-support] PgMigration error when migrating Dbase tablesI'm using PgMigration to migrate three DBF files to my PostgreSql Development server. This was working fine until I made one eensy teeny change.Some background: I am in the process of moving all of my data from a PostgreSql 7.2.X server to a PostgreSql 7.3.X server on another machine. On the new machine I created a database with the same name as the database on the old machine then I loaded the dumped sql file. Everything worked fine.The change. We needed to change the name of the database so I created a new database with a new name. I then loaded the dumped sql file from the database with the old now. Now I cannot use PgMigration to load DBF files. I select dBase files as the ODBC database type. As soon as I select next I get the following message:Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.This appears to be a Microsoft ADO problem and I have no clue if I caused the error (by changing the name), if it is an easy problem to solve, or if I should change the registry as the Microsoft Knowledge Base Article suggests ( http://support.microsoft.com/default.aspx?scid=kb;EN-US;q269495).Below is what Microsoft says is the cause and the solution. Any help would be greatly appreciated. I am on the last step (writing up the user documentation) of the project at the last hour (actually last 1.5 hours) and I need to have this project out the door. If the only easy solution is to put the name back as it was, I can live with it but my boss won't be happy.Thanks in Advance.JulieCAUSE
The following are two possible causes of this error:If the OLEDB_SERVICES registry entry is not present, the call to set up a property is made directly to the provider. If the provider does not support the property, the SetProperties OLE DB call made by ADO will fail. This is a fatal failure if the property is required in order to make a connection. If the property was explicitly included in the connection string, it is most likely required.
- In the registry, under the key for an OLE DB provider's CLSID, there may be an entry named OLEDB_SERVICES. If the OLE DB provider being used to make the ADO connection doesn't have the OLEDB_SERVICES entry, and ADO tries to set up a property that is not supported by the provider, the error occurs. For more information on this registry entry, see the "Resolution" section.
- If OLEDB_SERVICES entry exists but there is a problem in the ADO connection string, the error occurs.
If the property setting is optional, the failure is not fatal. This is the case when you connect without explicitly setting the property in the connection string. In this case, ADO sets the property to True but marks it as optional.RESOLUTION
You can work around this problem in the following ways:
- Do not use the "Persist Security Info" keyword in your ADO connection string.
- Add the OLEDB_SERVICES registry entry as follows:IMPORTANT: This article contains information about modifying the registry. Before you modify the registry, make sure to back it up and make sure that you understand how to restore the registry if a problem occurs. For information about how to back up, restore, and edit the registry, click the following article number to view the article in the Microsoft Knowledge Base:
256986 Description of the Microsoft Windows Registry
- Start Registry Editor (Regedit.exe).
- In the registry under HKEY_CLASSES_ROOT\CLSID, find the CLSID of the OLE DB Provider. For example, the following registry key is for the Microsoft OLE DB Provider for SQL Server (SQLOLEDB):
HKEY_CLASSES_ROOT\CLSID\{0C7FF16C-38E3-11d0-97AB-00C04FC2AD98}Click the CLSID, and then on the Edit menu, click Add Value and add the following registry value:
Value Name: OLEDB_SERVICES
Data Type: REG_DWORD
Value: 0xFFFFFFFF
NOTE: To find the CLSID for the provider you are using, search for the provider's ProgID (SQLOLEDB, for example) in the registry under HKEY_LOCAL_MACHINE\SOFTWARE\Classes\. Under the ProgID, there will be a key named CLSID.- If the above conditions are satisfied and you still receive the error, check your connection string for other possible errors.