I've got 2 databases, let's call them **Database1** and **Database2**, a user with very limited permissions, let's call it **User1**, and a stored procedure in **Database1**, let's call it **Proc1**.

I grant `EXECUTE` permission to **User1** on **Proc1**; `GRANT EXECUTE ON [dbo].[Proc1] TO [User1]` and things worked fine as long as all the referenced tables (for SELECT, UPDATE ... etc.) are in **Database1**, although **User1** does not have explicit permission on those tables.

I modified **Proc1** to SELECT from a table, let's call it **Table1**, in **Database2**. Now when I execute **Proc1** I get the following error: The SELECT permission was denied on the object 'Table1', database 'Database2', schema 'dbo'

My understanding is that SQL Server will take care of the required permissions when I grant EXECUTE to a stored procedure; does that work differently when the table (or object) is in another database?

Notes:

* **User1** is a user in both databases with same limited permissions
* I'm using SQL Server 2005