Question: I have about 100 sites built in a cms, each with its own database. Each database has the same tables.

My stored procedure needs to select all of the pages in a database given a sitename.

Below I am trying to pass the database name as a parameter, but it doesn't seem to work.

```
...
@site nvarchar(250)

AS

SELECT *
FROM @site..cmsDocument
WHERE published = 1

```

Is there some other way to do this?

Answer: 
Almost no DBMSes allow you to use a parameter in this manner. Build a dynamic query via concatenation and execute it.
If the query / procedure is being executed from a .NET application, you can also programmatically change the database of the connection object (VB.NET):

```
Using da As New SqlDataAdapter("SELECT * FROM cmsDocument WHERE published = 1", GetDatabaseConnection(ServerName))
     da.SelectCommand.Connection.ChangeDatabase("Foobar")
End Using

```