Question: I need to query a database on a linked server, and unfortunately the database name contains a period.

This fails;

```
select top 10 * 
FROM [LINKED_SERVER].[DATABASE_NAME.1].dbo.[TABLE_NAME] 

```

with this error:

> 
> *OLE DB error trace [Non-interface error: OLE DB provider unable to process object, since the object has no columnsProviderName='SQLOLEDB', Query="DATABASE\_NAME.1"."dbo"."TABLE\_NAME"'].  
> 
>  Msg 7357, Level 16, State 2, Line 2  
> 
>  Could not process object '"DATABASE\_NAME.1"."dbo"."TABLE\_NAME"'. The OLE DB provider 'SQLOLEDB' indicates that the object has no columns.*
> 
> 
> 

Connecting to the same linked server without a period in the database name works;

```
select top 10 * 
FROM [LINKED_SERVER].[DATABASE_NAME].dbo.[TABLE_NAME] 

```

As there are many references to the existing database name out of my control, I hope to find a solution that avoids re-naming the database permanently. 

I would like to be able to create a synonym or some other alias, or find some other way to get this working.

Answer: 
Periods in database names accessed via linked servers are perfectly acceptable when escaped with brackets [] - the error your getting must be something else.

I can confirm this on my test rig:

![http://www.heavencore.co.uk/filehub/uploaded/LinkedServerWithPeriod.jpg](https://i.stack.imgur.com/3NQwr.jpg)

**One thought, your using the old `SQLOLEDB` provider for your linked server, have you tried using `SQLNCLI10` instead?**
Avoid periods in identifiers, 

e.g. in SSMS

```
sp_help [sales.order] 

```

will not work, even with brackets