

This defaults to IUSR_MACHINENAME if you're allowing annonymous access, which generally has access to the IPC$ share required for named pipe communications. If you're using impersonation with no username specified, you're running under the IIS Authenticating user. If you're using impersonation, Named Pipes is usually simpler.The default ASPNET account generally has an easier time with TCP, since the ASPNET user doesn't have access to named pipes by default ( ).There are many differences between TCP and Named Pipe connection, but if you're on localhost you're mostly concerned with simple access. To specify a protocol when pointing to a server, you'd use server=tcp:DBSERVERNAME.

Sounds like the right way to connect to the local machine over TCP is to specify server=tcp:(local), and to use named pipes on the local machine you'd use np:(local). They recommend that you always use (local) to specify the local machine, and then specify a protocol. Named Pipes: server=np:hostnameYou can optionally specify a specific named pipe. The Execute SQL Tasks have a simple SELECT statement and they both use. I have a demo package with two Execute SQL Tasks and one OLEDB Connection Manager. Therefore, temporary tables created by a task are not available to another task. TCP/IP: server=tcp:hostnameYou can optionally specify a specific port number. In SSIS, with the RetainSameConnection set to FALSE (the default), a new session is opened for each task. There's more info in MS KB Article 313295: I've jumped through some hoops before using localhost to target tcp and (local) to target named pipes, but it looks like there's a much better way to do this (since MDAC 2.6). Barry Dorrans recently mentioned that you can force the database connection protocol by specifying np: or tcp: before the server name in your connection string.
