Microsoft KB Archive/913817

From BetaArchive Wiki
Knowledge Base


You receive an error message when you use Business Intelligence Development Studio to build a SQL Server 2005 Integration Services package

Article ID: 913817

Article Last Modified on 7/14/2006



APPLIES TO

  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Workgroup Edition




Important This article contains information about how to modify the registry. Make sure to back up the registry before you modify it. Make sure that you know how to restore the registry if a problem occurs. For more information about how to back up, restore, and modify the registry, click the following article number to view the article in the Microsoft Knowledge Base:

256986 Description of the Microsoft Windows registry


SYMPTOMS

When you use Business Intelligence Development Studio to build a Microsoft SQL Server 2005 Integration Services (SSIS) package, you may experience the following behavior:

  • When you try to create a new connection manager for an Integration Services package, the SQL Native Client ODBC provider is not listed in the provider list.
  • When you try to create a new connection manager for an Integration Services package, you receive the following error message:

    The connection type "OLEDB" specified for connection manager "{83ED4D5C-85E5-4E2E-A4B5-7CD48DD1B683}" is not recognized as a valid connection manager type. This error is returned when an attempt is made to create a connection manager for an unknown connection type. Check the spelling in the connection type name.

  • When you open an Integration Services package that was already created, you receive the following error message:

    Error loading 'Package.dtsx' : The package failed to load due to error 0xC0010014 "One or more error occurred. There should be more specific errors preceding this one that explains the details of the errors. This message is used as a return value from functions that encounter errors." This occurs when CPackage::LoadFromXML fails.


CAUSE

This behavior occurs because the installation of a third-party application or of a third-party driver may incorrectly set up the permissions of the registry subkeys under the HKEY_LOCAL_MACHINE\Software\Classes\CLSID subtree. If the Component Category Manager encounters a registry key for which it does not have read permissions, it reports an access error and stops enumerating components. Therefore, the Component Category Manager cannot enumerate the SSIS components that have a CLSID that has incorrect permissions in the subtree.

Applications that are known to possibly cause this behavior are Lexmark printer drivers (Lexdrvx.dll) and Macromedia Flash. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

300491 FIX: Applications that use Component Categories Manager with non-Administrator credentials fail on Application Center


RESOLUTION

Service pack information

To resolve this problem, obtain the latest service pack for SQL Server 2005. For more information, click the following article number to view the article in the Microsoft Knowledge Base:

913089 How to obtain the latest service pack for SQL Server 2005


Note In SQL Server 2005 Service Pack 1, SQL Server will correctly report the error as follows:


Could not enumerate the registered connections.


Even with the improved error message, you may still have to use the method in the "Workaround" section to help identify the problem registry keys and resolve the problem.

WORKAROUND

Warning Serious problems might occur if you modify the registry incorrectly by using Registry Editor or by using another method. These problems might require that you reinstall your operating system. Microsoft cannot guarantee that these problems can be solved. Modify the registry at your own risk.

To work around this behavior, follow these steps:

  1. Log on as a user who is not a member of the Administrators group, or use the runas command.
  2. Use the following C# code sample to identify the registry subkeys that have incorrect permissions.

    using System;
    
    using Microsoft.Win32;
    
     
    
    namespace CheckClsidPerm
    
    {
    
        class Program
    
        {
    
            static void Main(string[] args)
    
            {
    
                RegistryKey clsid = Registry.LocalMachine.OpenSubKey(@"Software\Classes\CLSID");
    
                string[] clsids = clsid.GetSubKeyNames();
    
                Console.WriteLine("found {0} keys", clsids.Length);
    
     
    
                foreach (string s in clsids)
    
                {
    
                    try
    
                    {
    
                        using(RegistryKey clsidKey = clsid.OpenSubKey(s))
    
                        {
    
                            using(RegistryKey ic = clsidKey.OpenSubKey("Implemented Categories"))
    
                            {
    
                            }
    
                        }
    
                    }
    
                    catch( Exception e )
    
                    {
    
                        Console.WriteLine("error while reading key {0}: {1}", s, e.Message);
    
                    }
    
                }            
    
            }
    
        }
    
    }
    
  3. Compile and run this code. Notice that the security permissions on the registry keys that are reported by the program are incorrect. These security permissions prevent SSIS from enumerating SSIS components. You have to grant the Read permission to the Users group for these registry subkeys.

Notes

  • You must restart the computer after you modify the registry for the changes to take effect.
  • This workaround uses the code sample to test registry key access from the same permission context of non-Administrator users. This permission context is the common context for applications. Therefore, make sure that you execute the compiled version of the code sample as a user and not as a member of the Administrators group.

When you are logged on to a user account that is not a member of the Administrators group, you can use this C# code sample to identify the registry subkeys that have incorrect permissions. To do this, you can use the Runas command to run this C# code sample. For more information about how to use the Runas command, visit the following Microsoft Web site:

To use this C# code sample, you must compile it first. To compile this C# code sample, you can use the C# compiler (Csc.exe) or Microsoft Visual Studio .NET.

STATUS

This behavior is by design.

The third-party products that this article discusses are manufactured by companies that are independent of Microsoft. Microsoft makes no warranty, implied or otherwise, regarding the performance or reliability of these products.

Keywords: kbsql2005connect kbexpertiseadvanced kbprb KB913817