Selecionando um banco de dados
A maioria dos objetos em uma instância do SQL Server são armazenados em bancos de dados. Todas as referências para objetos de banco de dados devem ser explicitamente ou implicitamente resolvidas no banco de dados específico no qual se localizam.
Referências de banco de dados
Referências de banco de dados explícitas ocorrem quando uma instrução Transact-SQL indica o nome do banco de dados que mantém os dados. O exemplo a seguir indica explicitamente o nome do banco de dados AdventureWorks2008R2:
SELECT BusinessEntityID, LoginID, NationalIDNumber
FROM AdventureWorks2008R2.HumanResources.Employee;
Referências de banco de dados implícitas ocorrem quando uma instrução Transact-SQL não especifica o banco de dados, por exemplo:
SELECT BusinessEntityID, LoginID, NationalIDNumber
FROM HumanResources.Employee;
Para resolver referências de banco de dados implícitas, o SQL Server usa o conceito de um banco de dados atual. Qualquer conexão para uma instância do SQL Server sempre tem um conjunto de banco de dados definido como o banco de dados atual. Assume-se que todas as referências de objeto que não especificam um nome de banco de dados referem-se ao banco de dados atual. Por exemplo, se uma conexão tiver o AdventureWorks2008R2 definido como seu banco de dados atual, qualquer instrução que se refira a um objeto chamado Product será resolvida na tabela Product no AdventureWorks2008R2.
Banco de dados padrão
Todo logon SQL Server possui um banco de dados padrão. No momento em que o logon é definido por um membro da função de servidor fixa sysadmin, o banco de dados padrão para o logon pode ser especificado. Se o banco de dados padrão não for especificado, o banco de dados mestre se torna o banco de dados padrão para o logon. O banco de dados padrão para um logon pode ser alterado posteriormente usando o procedimento armazenado sp_defaultdb.
Quando você primeiro se conecta a uma instância do SQL Server, o banco de dados padrão para o logon é normalmente tornado o banco de dados atual. Entretanto, você pode especificar um banco de dados em particular como o banco de dados atual no momento da conexão. Essa solicitação substitui o banco de dados de padrão definido para o logon. Você pode especificar um banco de dados em uma solicitação de conexão nos seguintes modos:
No utilitário sqlcmd, especifique o nome do banco de dados usando a opção /d.
No ADO, especifique o nome do banco de dados na propriedade Initial Catalog de um objeto de conexão ADO.
No provedor SQL Server Native Client OLE DB, especifique o nome do banco de dados na propriedade DBPROP_INIT_CATALOG.
No driver SQL Server Native Client ODBC, você pode definir um nome de banco de dados em uma fonte de dados ODBC usando a caixa Banco de Dados no Assistente de Configuração do DSN do Microsoft SQL Server ou DATABASE = parameter em uma chamada do SQLConfigDataSource. Você também pode especificar DATABASE = em uma chamada para o SQLDriverConnect ou para o SQLBrowseConnect.
Selecionando um banco de dados
Você pode alternar a configuração do banco de dados atual enquanto está conectado a uma instância do SQL Server. Isso é chamado de usar, ou selecionar um banco de dados. Você pode alternar o banco de dados atual das seguintes maneiras:
Execute a instrução Transact-SQL USE database_name, independente da API de banco de dados que algum aplicativo estiver usando.
No SQL Server Management Studio, clique em Nova Consulta. Na barra de ferramentas de consulta, selecione um banco de dados na lista de bancos de dados disponíveis.
No driver do SQL Server Native ClientODBC, chame o SQLSetConnectAttr para definir o atributo de conexão SQL_ATTR_CURRENT_CATALOG.
Observação Em muitos dos exemplos de referência do Transact-SQL nos Manuais Online do SQL Server, a primeira linha de código no exemplo é USE AdventureWorks2008R2. Isso garante que o exemplo é executado no banco de dados explicitamente especificado, em vez do contexto do banco de dados atual.