SharePoint Developer Center >
SharePoint Products and Technologies Forums
>
SharePoint - Business Data Catalog
>
"Unable to connect to AdventureWorks" from the Client Machine
"Unable to connect to AdventureWorks" from the Client Machine
There are 3 Servers in my Server Farm
1. Application Server
2. Web Server
3. SQL Server 2005 server
I have installed AdventureWorks on the SQL Server 2005 server.
Now my issue is that when I try accessing my sharepoint site from the web server its pull the data from the DB properly and displays in the business data list web part but when i try to access the site from the client machine then it gives me the error message "Unable to connect to AdventureWorks"
Then i checked the log file on the application server and found the below message...
please help me understanding the below error log message to solve this issue.
07/30/2008 10:09:59.40 mssdmn.exe (0x0E84) 0x1578 SharePoint Portal Server Business Data 79bv High Initiating BDC Cache Invalidation Check in AppDomain 'DefaultDomain'
07/30/2008 10:09:59.40 mssdmn.exe (0x0E84) 0x1578 SharePoint Portal Server Business Data 79bw High Cache Invalidation Check sourced from: at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at Microsoft.Office.Server.ApplicationRegistry.Infrastructure.CacheInvalidationStateTracker.CheckStatus(Object stateInfo) at System.Threading._TimerCallback.TimerCallback_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading._TimerCallback.PerformTimerCallback(Object state)
07/30/2008 10:09:59.40 mssdmn.exe (0x0E84) 0x1578 SharePoint Portal Server Business Data 79bx High Completed BDC Cache Invalidation Check in AppDomain 'DefaultDomain'
07/30/2008 10:10:29.77 OWSTIMER.EXE (0x094C) 0x0BD0 SharePoint Portal Server Business Data 79bv High Initiating BDC Cache Invalidation Check in AppDomain 'DefaultDomain'
07/30/2008 10:10:29.77 OWSTIMER.EXE (0x094C) 0x0BD0 SharePoint Portal Server Business Data 79bw High Cache Invalidation Check sourced from: at System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace() at Microsoft.Office.Server.ApplicationRegistry.Infrastructure.CacheInvalidationStateTracker.CheckStatus(Object stateInfo) at System.Threading._TimerCallback.TimerCallback_Context(Object state) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state) at System.Threading._TimerCallback.PerformTimerCallback(Object state)
07/30/2008 10:10:29.77 OWSTIMER.EXE (0x094C) 0x0BD0 SharePoint Portal Server Business Data 79bx High Completed BDC Cache Invalidation Check in AppDomain 'DefaultDomain'
Thanks,
Vaibhav
All Replies
Let me try explaining the issue in some other way.
I have used BDC- ADF to connect to external data source.
I am displaying data from this external data source in Data List Web Part.
When I access the site from the Server Farm the data is displayed but when I try to access the same site from the Client machine it doesn't display and give the message "Unable to connect to AdventureWorks"
kindly suggest the possible solution.
Thanks,
Vaibhav- Hi,
What authentication mode are you using?
Is it possible to show your ADF here?
Thanks
Phill - Hi Phill,
The authentication mode used in ADF is SSPI.
here is the XML code...
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<LobSystem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog BDCMetadata.xsd" Type="Database" Version="1.0.0.0" Name="Honeywell_AdventureWorksInstance" xmlns="http://schemas.microsoft.com/office/2006/03/BusinessDataCatalog">
<Properties>
<Property Name="WildcardCharacter" Type="System.String">%</Property>
</Properties>
<LobSystemInstances>
<LobSystemInstance Name="Honeywell_AdventureWorksInstance">
<Properties>
<Property Name="AuthenticationMode" Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAuthenticationMode">PassThrough</Property>
<Property Name="DatabaseAccessProvider" Type="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbAccessProvider">SqlServer</Property>
<Property Name="RdbConnection Data Source" Type="System.String">XX.XX.XXX.XXX</Property>
<Property Name="RdbConnection Initial Catalog" Type="System.String">ABC_AdventureWorks</Property>
<Property Name="RdbConnection Integrated Security" Type="System.String">SSPI</Property>
</Properties>
</LobSystemInstance>
</LobSystemInstances>
<Entities>
<Entity EstimatedInstanceCount="10000" Name="VendorAddress">
<Properties>
<Property Name="Title" Type="System.String">VendorID</Property>
</Properties>
<Identifiers>
<Identifier Name="AddressID" TypeName="System.Int32" />
</Identifiers>
<Methods>
<Method Name="Get_VendorAddress">
<Properties>
<Property Name="RdbCommandText" Type="System.String"><![CDATA[SELECT [VendorID], [AddressID], [AddressTypeID], [ModifiedDate]
FROM [Purchasing].[VendorAddress]
WHERE [AddressID] = @AddressID]]></Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptor Type="Comparison" Name="AddressID">
<Properties>
<Property Name="UsedForDisambiguation" Type="System.Boolean">false</Property>
<Property Name="IsDefault" Type="System.Boolean">false</Property>
</Properties>
</FilterDescriptor>
</FilterDescriptors>
<Parameters>
<Parameter Direction="In" Name="@AddressID">
<TypeDescriptor TypeName="System.Int32" IdentifierName="AddressID" AssociatedFilter="AddressID" Name="AddressID">
</TypeDescriptor>
</Parameter>
<Parameter Direction="Return" TypeReflectorTypeName="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbTypeReflector" Name="VendorAddress">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="VendorAddressDataReader">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="VendorAddressDataRecord">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32" Name="VendorID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">VendorID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.Int32" IdentifierName="AddressID" Name="AddressID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">AddressID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.Int32" Name="AddressTypeID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">AddressTypeID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.DateTime" Name="ModifiedDate">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">ModifiedDate</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="VendorAddressSpecificFinderInstance" Type="SpecificFinder" ReturnParameterName="VendorAddress" ReturnTypeDescriptorName="VendorAddressDataReader" ReturnTypeDescriptorLevel="0" />
</MethodInstances>
</Method>
<Method Name="Get_VendorAddress_List">
<Properties>
<Property Name="RdbCommandText" Type="System.String"><![CDATA[SELECT [VendorID], [AddressID], [AddressTypeID], [ModifiedDate]
FROM [Purchasing].[VendorAddress]
WHERE [AddressID] LIKE @AddressID]]></Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptor Type="Comparison" Name="AddressID">
<Properties>
<Property Name="UsedForDisambiguation" Type="System.Boolean">false</Property>
<Property Name="IsDefault" Type="System.Boolean">false</Property>
</Properties>
</FilterDescriptor>
</FilterDescriptors>
<Parameters>
<Parameter Direction="In" Name="@AddressID">
<TypeDescriptor TypeName="System.Int32" IdentifierName="AddressID" AssociatedFilter="AddressID" Name="AddressID">
</TypeDescriptor>
</Parameter>
<Parameter Direction="Return" TypeReflectorTypeName="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbTypeReflector" Name="VendorAddress">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="VendorAddressDataReader">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="VendorAddressDataRecord">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32" Name="VendorID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">VendorID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.Int32" IdentifierName="AddressID" Name="AddressID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">AddressID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.Int32" Name="AddressTypeID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">AddressTypeID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.DateTime" Name="ModifiedDate">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">ModifiedDate</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="VendorAddressFinderInstance" Type="Finder" ReturnParameterName="VendorAddress" ReturnTypeDescriptorName="VendorAddressDataReader" ReturnTypeDescriptorLevel="0" />
</MethodInstances>
</Method>
<Method Name="Get_VendorAddress_Ids">
<Properties>
<Property Name="RdbCommandText" Type="System.String"><![CDATA[SELECT [AddressID]
FROM [Purchasing].[VendorAddress]]]></Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType">Text</Property>
</Properties>
<Parameters>
<Parameter Direction="Return" TypeReflectorTypeName="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbTypeReflector" Name="VendorAddress">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="VendorAddressDataReader">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="VendorAddressDataRecord">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32" IdentifierName="AddressID" Name="AddressID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">AddressID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="VendorAddressIdEnumeratorInstance" Type="IdEnumerator" ReturnParameterName="VendorAddress" ReturnTypeDescriptorName="VendorAddressDataReader" ReturnTypeDescriptorLevel="0" />
</MethodInstances>
</Method>
</Methods>
</Entity>
<Entity EstimatedInstanceCount="10000" Name="Vendor">
<Properties>
<Property Name="Title" Type="System.String">VendorID</Property>
</Properties>
<Identifiers>
<Identifier Name="VendorID" TypeName="System.Int32" />
</Identifiers>
<Methods>
<Method Name="Get_Vendor">
<Properties>
<Property Name="RdbCommandText" Type="System.String"><![CDATA[SELECT [VendorID], [AccountNumber], [Name], [CreditRating], [PreferredVendorStatus], [ActiveFlag], [PurchasingWebServiceURL], [ModifiedDate]
FROM [Purchasing].[Vendor]
WHERE [VendorID] = @VendorID]]></Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptor Type="Comparison" Name="VendorID">
<Properties>
<Property Name="UsedForDisambiguation" Type="System.Boolean">false</Property>
<Property Name="IsDefault" Type="System.Boolean">false</Property>
</Properties>
</FilterDescriptor>
</FilterDescriptors>
<Parameters>
<Parameter Direction="In" Name="@VendorID">
<TypeDescriptor TypeName="System.Int32" IdentifierName="VendorID" AssociatedFilter="VendorID" Name="VendorID">
</TypeDescriptor>
</Parameter>
<Parameter Direction="Return" TypeReflectorTypeName="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbTypeReflector" Name="Vendor">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="VendorDataReader">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="VendorDataRecord">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32" IdentifierName="VendorID" Name="VendorID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">VendorID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="AccountNumber">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">AccountNumber</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="Name">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">Name</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.Byte" Name="CreditRating">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">CreditRating</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="PreferredVendorStatus">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">PreferredVendorStatus</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="ActiveFlag">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">ActiveFlag</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="PurchasingWebServiceURL">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">PurchasingWebServiceURL</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.DateTime" Name="ModifiedDate">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">ModifiedDate</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="VendorSpecificFinderInstance" Type="SpecificFinder" ReturnParameterName="Vendor" ReturnTypeDescriptorName="VendorDataReader" ReturnTypeDescriptorLevel="0" />
</MethodInstances>
</Method>
<Method Name="Get_Vendor_List">
<Properties>
<Property Name="RdbCommandText" Type="System.String"><![CDATA[SELECT [VendorID], [AccountNumber], [Name], [CreditRating], [PreferredVendorStatus], [ActiveFlag], [PurchasingWebServiceURL], [ModifiedDate]
FROM [Purchasing].[Vendor]
WHERE [VendorID] LIKE @VendorID]]></Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType">Text</Property>
</Properties>
<FilterDescriptors>
<FilterDescriptor Type="Comparison" Name="VendorID">
<Properties>
<Property Name="UsedForDisambiguation" Type="System.Boolean">false</Property>
<Property Name="IsDefault" Type="System.Boolean">false</Property>
</Properties>
</FilterDescriptor>
</FilterDescriptors>
<Parameters>
<Parameter Direction="In" Name="@VendorID">
<TypeDescriptor TypeName="System.Int32" IdentifierName="VendorID" AssociatedFilter="VendorID" Name="VendorID">
</TypeDescriptor>
</Parameter>
<Parameter Direction="Return" TypeReflectorTypeName="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbTypeReflector" Name="Vendor">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="VendorDataReader">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="VendorDataRecord">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32" IdentifierName="VendorID" Name="VendorID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">VendorID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="AccountNumber">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">AccountNumber</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="Name">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">Name</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.Byte" Name="CreditRating">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">CreditRating</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="PreferredVendorStatus">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">PreferredVendorStatus</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="ActiveFlag">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">ActiveFlag</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.String" Name="PurchasingWebServiceURL">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">PurchasingWebServiceURL</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
<TypeDescriptor TypeName="System.DateTime" Name="ModifiedDate">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">ModifiedDate</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="VendorFinderInstance" Type="Finder" ReturnParameterName="Vendor" ReturnTypeDescriptorName="VendorDataReader" ReturnTypeDescriptorLevel="0" />
</MethodInstances>
</Method>
<Method Name="Get_Vendor_Ids">
<Properties>
<Property Name="RdbCommandText" Type="System.String"><![CDATA[SELECT [VendorID]
FROM [Purchasing].[Vendor]]]></Property>
<Property Name="RdbCommandType" Type="System.Data.CommandType">Text</Property>
</Properties>
<Parameters>
<Parameter Direction="Return" TypeReflectorTypeName="Microsoft.Office.Server.ApplicationRegistry.SystemSpecific.Db.DbTypeReflector" Name="Vendor">
<TypeDescriptor TypeName="System.Data.IDataReader, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" IsCollection="true" Name="VendorDataReader">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Data.IDataRecord, System.Data, Version=2.0.3600.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" Name="VendorDataRecord">
<TypeDescriptors>
<TypeDescriptor TypeName="System.Int32" IdentifierName="VendorID" Name="VendorID">
<LocalizedDisplayNames>
<LocalizedDisplayName LCID="1033">VendorID</LocalizedDisplayName>
</LocalizedDisplayNames>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</TypeDescriptors>
</TypeDescriptor>
</Parameter>
</Parameters>
<MethodInstances>
<MethodInstance Name="VendorIdEnumeratorInstance" Type="IdEnumerator" ReturnParameterName="Vendor" ReturnTypeDescriptorName="VendorDataReader" ReturnTypeDescriptorLevel="0" />
</MethodInstances>
</Method>
</Methods>
</Entity>
</Entities>
</LobSystem>
Could please tell the possible issue and solution for it.
Thanks in advance.
Vaibhav - Hi Vaibhav,
Using Passthrough authentication where your database is on a separate server from your SharePoint front end will fall foul of the 'double-hop' authentication issue inherent in situations where your authentication is handled by NTLM. The client authenticates against your SP front end, which in turn tries to authenticate against the database server, but because there's no provision for passing on the client's credentials from the SP front end to the database server (within NTLM at least) it fails at the second 'hop' as the only credentials your SP front end can pass through are 'NT AUTHORITY\Anonymous User', which obviously your database server will reject.
There are two ways around it, one easy but less fine-grained, the other complex but gives you full control of individual user's security permissions on the database server.
Easier way: Use 'RevertToSelf' as the authentication method and then grant the application pool account (this must be a domain user account) on your SharePoint ssp access to the server that you have adventureworks on as well as access to adventureworks itself. This way your SP front end isn't attempting to hand off anything but its own credentials to the database server and things will go through ok. You can still restrict access to the BDC elements through the permissions section in the SSP admin site but you don't have quite such fine-grained control over access as you do with PassThrough authentication.
Harder way: configure your SharePoint system and database backends for Kerberos authentication. This circumvents the 'double-hop' issue and allows you to use individual user security on the database backend, which can be useful and give you tighter control than passing everything through the app pool account.
There's quite a bit of stuff out there on configuring Kerberos for SharePoint, I found this: http://blogs.msdn.com/martinkearn/archive/2007/04/23/configuring-kerberos-for-sharepoint-2007-part-1-base-configuration-for-sharepoint.aspx a good starting point.
Hope that helps,
Rob


