Hi Mark and welcome to the forum!
Cool question and definitely this is a common request. You'll need to authenticate the user. You can do this either a) in the form, b) in a web service on top of SQL, or c) in a stored procedure call in your SQL database. It's simpler to do it in a) but it's also not completely secure. Doing authentication in a web service is another way to do this, but requires some kind of mapping to the forms or logic to compare a value to what's in the form. If you are going directly to SQL, you can use Windows Authentication, and have SQL authenticate (compare user to a column in rowset). IF you use a web service on top of SQL, you'll likely have to do some form of impersonation or pass the username in as a parameter, The Recruiting Accelerator (on Microsoft website) does the latter and is a reasonable example of how to do this in general. Please go to msdn and search for it. Microsoft provides all code for the accelerator and this should give you an example of how to use InfoPath, Web service (impersonating) and SQL to authenticate user for forms access. Good luck!
Patrick Halstead [InfoPath MVP]
InfoPathDev
Patrick Halstead
Project Manager at Qdabra