I’ve got a couple of posts coming up that will hopefully save you some time if you are experiencing errors when trying to crawl your BDC content source.
The first is to do with VarBinary(MAX) columns in SQL Server (these translate to System.Byte in your application definition file when created with BDC Meta Man). MOSS 2007 can’t crawl these column types and for some reason just errors when it tries to. You get a helpful error such as:
The parameter is incorrect. (The indexer has encountered a field of type ‘System.Byte’. This type of field is not indexable.)
I think you’ll end up with none of the table with these columns returned in your SpecificFinder method being crawled by MOSS. Only solution so far is to make sure the SpecificFinder method doesn’t return any System.Byte type columns from SQL Server. If you do want these columns to be returned you’ll need to create another method different to the SpecificFinder and make it a GenericInvoker method. More on how to do that in a future post.
The second error is to do with users who have been given explicit permissions to the BDC. These permissions are set at
Shared Service Provider -> Business Data Catalog Permissions
All is well and good until this user is deleted from the Active Directory. They remain in the BDC permissions list, and when you try to crawl your BDC data source you get an error of:
The parameter is incorrect. (Could not create a security identifier for the identity ‘USB-SERVER1\testuser’. This identity may have been deleted.)
None of your BDC data seems to be crawled at all, so if you are doing a full crawl, you’ll get no BDC search results returned (which can be scary if they were coming back before!)
Simple fix for this is to just make sure you remove users from the BDC permission list if they are removed from AD or add the username into the permission. We hit this problem as we had a test user created in AD that we were testing permissions out with etc and when we removed him we hit the above error.