Vous êtes sur la page 1sur 12

MS SQL SERVER

Os 5 Bancos de dados do sistema


Banco de
dados do
sistema

Descrio

Banco de
dados
mestre
master

Registra toda a informaes de nvel de sistema por uma instncia do SQL Server.

Banco de
dados
msdb
msdb

usado pelo SQL Server Agent para programar alertas e trabalhos.

Banco de
dados
modelo
model

usado como modelo de todos os bancos de dados criados na instncia do SQL


Server. As modificaes feitas no banco de dados modelo, como tamanho,
agrupamento, modelo de recuperao, e outras opes de bancos de dados, so
aplicadas a qualquer banco de dados criados em seguida.

Banco de
dados de
recursos
resources

um banco de dados do tipo somente leitura que contm objetos de sistema


includos no SQL Server. Os objetos de sistema so fisicamente persistentes no banco
de dados Recurso, mas aparecem logicamente no esquema sys de todo banco de
dados.
Os nomes de arquivos fsicos do banco de dados Resource so
mssqlsystemresource.mdf e mssqlsystemresource.ldf.Esses arquivos esto localizados
em <unidade>: \Arquivos de Programa\Microsoft SQL
Server\MSSQL<verso>.<nome_da_instncia>\MSSQL\Binn\ e no devem ser
movidos.Cada instncia do SQL Server tem um e apenas um arquivo
mssqlsystemresource.mdf associado, e as instncias no compartilham esse arquivo.

Banco de
dados
tempdb
tempdb

um espao de trabalho para reter objetos temporrios ou conjuntos de resultados


intermedirios.
The tempdb system database is a global resource that is available to all users
connected to the instance of SQL Server and is used to hold the following:
Temporary user objects that are explicitly created, such as: global or local
temporary tables, temporary stored procedures, table variables, or cursors.
Internal objects that are created by the SQL Server Database Engine, for
example, work tables to store intermediate results for spools or sorting.
Row versions that are generated by data modification transactions in a
database that uses read-committed using row versioning isolation or snapshot
isolation transactions.
Row versions that are generated by data modification transactions for
features, such as: online index operations, Multiple Active Result Sets (MARS),
and AFTER triggers.
Operations within tempdb are minimally logged.This enables transactions to be
rolled back.tempdb is re-created every time SQL Server is started so that the system
always starts with a clean copy of the database.Temporary tables and stored
procedures are dropped automatically on disconnect, and no connections are active
when the system is shut down.Therefore, there is never anything in tempdb to be
saved from one session of SQL Server to another.Backup and restore operations are

not allowed on tempdb.

Formato de arquivos:
Dados = .mdf

Logs = .ldf

Multipart Names
When referencing a specific object, you do not always have to specify the server, database, and
schema for the SQL Server Database Engine to identify the object. However, if the object cannot
be found, an error is returned.

To avoid name resolution errors, we recommend specifying the schema name whenever you specify a
schema-scoped object.
To omit intermediate nodes, use periods to indicate these positions. The following table shows the
valid formats of object names.

Object reference format

Description

server.database.schema.object

Four-part name.

server.database..object

Schema name is omitted.

server..schema.object

Database name is omitted.

server...object

Database and schema name are omitted.

database.schema.object

Server name is omitted.

database..object

Server and schema name are omitted.

schema.object

Server and database name are omitted.

object

Server, database, and schema name are omitted.

Geralmente se usa schema.object. Utilidade = development.table, depois production.table

Tambm til para questes de escalabilidade utilizar o schema.object visto que evita do sistema
procurar em qual schema est o objeto. Imagine cem mil solicitaes.

Arquivos e grupos de arquivos do banco de dados


Todo o banco de dados SQL Server tem, no mnimo, dois arquivos de sistema operacional: um
arquivo de dados e um arquivo de log.Os arquivos de dados contm dados e objetos como tabelas,
ndices, procedimentos armazenados e exibies.Os arquivos de log contm as informaes
necessrias para recuperar todas as transaes no banco de dados.Os arquivos de dados podem ser
agrupados em grupos de arquivos para propsitos de alocao e administrao.

Arquivos do banco de dados


Os bancos de dados SQL Server possuem trs tipos de arquivos, como mostrado na tabela a seguir.

Arquivo

Descrio

Primrio

O arquivo de dados primrio contm as informaes de inicializao do banco de dados


e aponta para os outros arquivos no banco de dados.Dados do usurio e objetos podem
ser armazenados neste arquivo ou em arquivos de dados secundrios.Todo banco de
dados possui um arquivo de dados primrio.A extenso de nome de arquivo indicada
para arquivos de dados primrios .mdf.

Secundrio

Os arquivos de dados secundrios so opcionais, definidos pelo usurio, e armazenam


dados do usurio.Arquivos secundrios podem ser usados para distribuir os dados entre
os diversos discos, colocando cada arquivo em uma unidade de disco diferente.Alm
disso, caso um banco de dados exceda o tamanho mximo em um nico arquivo
Windows, ser possvel usar arquivos de dados secundrios, assim, o banco de dados
continuar a crescer.
A extenso de nome de arquivo recomendada para arquivos de dados secundrios .ndf.

Log de
Transaes

Os arquivos de log de transaes armazenam as informaes de log usadas para


recuperar o banco de dados.Deve haver, no mnimo, um arquivo de log para cada banco
de dados.A extenso de nome de arquivo indicada para arquivos de transao .ldf.

Por exemplo, pode-se criar um simples banco de dados nomeado como Vendas que tenha um
arquivo primrio com todos os dados e objetos, e um arquivo de log que tenha as informaes de log
de transao.Como alternativa, pode-se criar um banco de dados mais complexo nomeado
como Pedidos que tenha um arquivo primrio e cinco arquivos secundrios.Os dados e objetos no
banco de dados distribuem-se pelos seis arquivos, e os quatro arquivos de log contm as
informaes do log de transao.

Por padro, os dados e logs de transao so colocados na mesma unidade e caminho.Isto feito
para controlar os sistemas de um nico disco.Porm, isto no o ideal para ambientes de
produo.Recomendamos que voc coloque os dados e arquivos de log em discos separados.

Grupos de arquivos

Todo banco de dados possui um grupo de arquivo primrio.Este grupo de arquivo contm o arquivo
de dados primrio e qualquer um dos arquivos secundrios que no foram colocados em outros
grupos de arquivos.Grupos de arquivos definidos pelo usurio podem ser criados para agrupar os
arquivos de dados para fins administrativos, de alocao de dados e de posicionamento.

Por exemplo, trs arquivos, Data1.ndf, Data2.ndf e Data3.ndf, podem ser criados em trs unidades
de disco, respectivamente, e atribudos ao grupo de arquivos fgroup1.Uma tabela pode ser criada
especificamente no grupo de arquivos fgroup1.As consultas para obter dados da tabela sero
distribudas pelos trs discos; isso melhorar o desempenho.A mesma melhora no desenvolvimento
pode acontecer, usando um nico arquivo criado em um conjunto distribudo RAID (redundant array
of independent disks).Porm, arquivos e grupos de arquivos permitem que novos arquivos sejam
facilmente adicionados aos novos discos.

Todos os arquivos de dados so armazenados nos grupos de arquivos listados na tabela a seguir.

Grupo de
arquivos

Descrio

Primrio

O grupo de arquivos que contm o arquivo primrio.Todas as tabelas do sistema so


alocadas no grupo de arquivos primrio.

Definido pelo
usurio

Qualquer grupo de arquivos que seja criado especificamente pelo usurio quando o
usurio cria primeiro ou modifica depois o banco de dados.

Grupo de arquivos padro


Quando objetos so criados no banco de dados sem especificar a qual grupo de arquivos eles
pertencem, os objetos so atribudos ao grupo de arquivos padro.A qualquer hora, um grupo de
arquivos designado como o grupo de arquivos padro.Os arquivos no grupo de arquivos padro
devem ser grandes o suficientes para armazenar qualquer objeto novo alocado a outros grupos de
arquivo.

O grupo de arquivos PRIMRIO o grupo de arquivos padro, a menos que seja alterado usando a
instruo ALTER DATABASE.A alocao para os objetos de sistema e de tabelas permanece no grupo
de arquivos PRIMRIO, e no no novo grupo de arquivos padro.

OBS.: uma boa prtica no usar o grupo PRIMARY para o armazenamento dos dados, pois esse fica
dedicado ao uso de meta dados do BD, para recovery entre outros.

Anexar e desanexar bancos de dados


Os dados e os arquivos de log de transaes de um banco de dados podem ser desanexados e, em
seguida, reanexados mesma ou a outra instncia do SQL Server.Desanexar e anexar um banco de
dados til se voc deseja alterar o banco de dados a uma instncia diferente do SQL Server no
mesmo computador ou mover o banco de dados.
O formato de armazenamento em disco do SQL Server o mesmo nos ambientes de 64 e de 32
bits.Portanto, voc pode anexar trabalhos em ambientes de 32 bits e de 64 bits.Um banco de dados
desanexado de uma instncia de servidor que executada em um nico ambiente pode ser anexado
em uma instncia de servidor que executada em outro ambiente.

sp_detach_db = Desanexa um banco de dados que no est em uso atualmente em uma


instncia de servidor e, opcionalmente, executa UPDATE STATISTICS em todas as tabelas
antes de desanexar.

Obtendo acesso exclusivo


A desanexao de um banco de dados exige acesso exclusivo ao banco de dados. Se o banco de
dados a ser dexanexado estiver em uso, antes que ele possa ser desanexado, defina o banco de
dados como modo SINGLE_USER para obter acesso exclusivo.

Por exemplo, a instruo ALTER DATABASE a seguir obtm acesso exclusivo para o banco de dados
AdventureWorks2012 aps todos os usurios atuais se desconectarem do banco de dados.

USE master;
ALTER DATABASE AdventureWorks2012
SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO

DESANEXAR: EXEC sp_detach_db 'AdventureWorks2012', 'true';


[ @skipchecks = ] 'skipchecks'
Especifica se UPDATE STATISTIC deve ser ignorado ou executado. skipchecks um valor
de nvarchar(10), com um valor padro de NULL. Para ignorar UPDATE STATISTICS,
especifique true. Para executar explicitamente UPDATE STATISTICS, especifique false.
Por padro, UPDATE STATISTICS executado para atualizar as informaes sobre os dados
nas tabelas e os ndices. A execuo de UPDATE STATISTICS til para bancos de dados que
sero movidos para mdias somente leitura.

Anexando um banco de dados


EXEC sp_attach_db @dbname = N'AdventureWorks2012',
@filename1 = N'C:\Program Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_Data.mdf',
@filename2 = N'C:\Program Files\Microsoft SQL
Server\MSSQL12.MSSQLSERVER\MSSQL\Data\AdventureWorks2012_log.ldf';
Esse recurso sp_attach_db ser removido em uma verso futura do Microsoft SQL Server. Evite usar
esse recurso em desenvolvimentos novos e planeje modificar os aplicativos que atualmente o
utilizam. Recomendamos usar CREATE DATABASE database_name em vez de FOR ATTACH. Para obter
mais informaes, consulte CREATE DATABASE (SQL Server Transact-SQL).

O exemplo a seguir desanexa o banco de dados Archive criado no exemplo D e o anexa usando a
clusula FOR ATTACH. Archive foi definido para ter vrios dados e arquivos de log. No entanto, como
o local dos arquivos no foi alterado desde sua criao, apenas o arquivo primrio precisa ser
especificado na clusula FOR ATTACH. A partir do SQL Server 2005, todos os arquivos de texto
completo que fazem parte do banco de dados que est sendo anexado sero anexados com o banco
de dados.

USE master;
GO
sp_detach_db Archive;
GO
CREATE DATABASE Archive
ON (FILENAME = 'D:\SalesData\archdat1.mdf')
FOR ATTACH ;
GO

Identificadores de banco de dados


O nome do objeto de banco de dados conhecido como identificador.Tudo no Microsoft SQL
Server pode ter um identificador.Servidores, bancos de dados e objetos de banco de dados, como
tabelas, exibies, colunas, ndices, gatilhos, procedimentos, restries e regras, podem ter
identificadores.Os identificadores so necessrios para a maioria dos objetos, mas so opcionais
para alguns objetos, como restries.
O identificador de objeto criado quando o objeto definido.O identificador utilizado para
referenciar o objeto.Por exemplo, a seguinte instruo cria uma tabela com o identificador TableX e
duas colunas com os identificadores KeyCol e Description:
CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description nvarchar(80))
Essa tabela tambm tem uma restrio sem-nome.A restrio PRIMARY KEY no tem identificador.
O agrupamento de um identificador depende do nvel em que est definido.Os identificadores de
objetos no nvel de instncia, como logons e nomes de banco de dados, so atribudos ao
agrupamento padro da instncia.Os identificadores de objetos em um banco de dados, como
tabelas, exibies e nomes de coluna, so atribudos ao agrupamento padro do banco de dados.Por
exemplo, duas tabelas com nomes que se diferem apenas em maisculas e minsculas podem ser
criadas em um banco de dados que possui agrupamento que diferencia maisculas e minsculas,
mas no podem ser criadas em um banco de dados que tem agrupamento que no diferencia
maisculas e minsculas.

Observao
Os nomes de variveis ou os parmetros de funes e procedimentos armazenados devem obedecer s
regras para identificadores Transact-SQL.

Classes de identificadores
H duas classes de identificadores:
Identificadores normais
Esto em conformidade com as regras de formato de identificadores.Os identificadores
normais no so delimitados quando utilizados em instrues Transact-SQL.
SELECT *
FROM TableX
WHERE KeyCol = 124
Identificadores delimitados
Esto entre aspas duplas (") ou colchetes ([]).Os identificadores que esto em conformidade
com as regras de formato de identificadores podem no ser delimitados. Por exemplo:
SELECT *
FROM [TableX]
--Delimiter is optional.
WHERE [KeyCol] = 124 --Delimiter is optional.
Os identificadores que no esto em conformidade com todas as regras para identificadores
devem ser delimitados em uma instruo Transact-SQL. Por exemplo:
SELECT *
FROM [My Table]
--Identifier contains a space and uses a reserved keyword.
WHERE [order] = 10
--Identifier is a reserved keyword.
Tanto os identificadores normais quanto os delimitados devem conter de 1 a 128 caracteres.Para
tabelas temporrias locais, o identificador pode ter no mximo 116 caracteres.

Regras para identificadores normais


Os nomes de variveis, funes e procedimentos armazenados devem obedecer s regras de
identificadores Transact-SQL.
1. O primeiro caractere deve ser um dos seguintes:
o Uma letra, como definido pelo Unicode Standard 3.2.A definio de letras do Unicode
inclui caracteres latinos de a at z, de A at Z, alm de caracteres de letras de outros
idiomas.
o Sublinhado (_), arroba (@) ou sinal de nmero (#).
Determinados smbolos no comeo de um identificador possuem um significado
especial no SQL Server.Um identificador normal iniciado com arroba denota sempre
uma varivel local ou parmetro e no pode ser utilizado como nome de qualquer
outro tipo de objeto.Um identificador iniciado com um sinal de nmero denota uma
tabela temporria ou procedimento.Um identificador iniciado com dois sinais de
nmero (##) denota um objeto temporrio global.Embora possa ser utilizado um
caractere de sinal de nmero ou dois sinais de nmero para comear os nomes de
outros tipos de objetos, no recomendamos essa prtica.
Algumas funes do Transact-SQL tm nomes iniciados com dois sinais de arroba
(@@).Para evitar confuso com essas funes, voc no dever utilizar nomes que
iniciam com @@.
2. Os caracteres subsequentes podem incluir:
o Letras, como definido no Unicode Standard 3.2.
o Nmeros decimais do latim bsico ou outros scripts nacionais.
o Arroba (@), cifro ($), sinal de nmero (#) ou sublinhado.
3. O identificador no deve ser uma palavra reservada do Transact-SQL.O SQL Server reserva as
verses maiscula e minscula de palavras reservadas.Quando identificadores so usados
nas instrues Transact-SQL, os identificadores que no estiverem de acordo com essas
regras devero ser delimitados por aspas duplas ou colchetes.As palavras reservadas
dependem do nvel de compatibilidade do banco de dados.Esse nvel pode ser definido por
meio da instruo ALTER DATABASE.
4. No so permitidos espaos ou caracteres especiais.
5. No so permitidos caracteres adicionais.
Quando identificadores so usados nas instrues Transact-SQL, os identificadores que no
estiverem de acordo com essas regras devero ser delimitados por aspas duplas ou colchetes.

Most code examples in the Transact-SQL Reference have been tested on servers that are running a
case-sensitive sort order. The test servers were typically running the ANSI/ISO 1252 code page.
Many code examples prefix Unicode character string constants with the letter N. Without
the N prefix, the string is converted to the default code page of the database. This default code page
may not recognize certain characters.

COMANDOS
USE database;
database
o nome do banco de dados ou instantneo de banco de dados para os quais o contexto de
usurio alternado. Os nomes do banco de dados e do instantneo de banco de dados
devem estar de acordo com as regras para identificadores.
PERMISSO: Requer a permisso de CONNECT no banco de dados de destino.
Quando um logon do SQL Server se conecta ao SQL Server, ele automaticamente conectado ao seu
banco de dados padro e adquire o contexto de segurana de um usurio de banco de dados. Se
nenhum usurio de banco de dados foi criado para o logon do SQL Server, o logon se conectar
como guest. Se o usurio de banco de dados no tiver permisso CONNECT no banco de dados, a
instruo USE falhar. Se nenhum banco de dados padro foi atribudo ao logon, seu banco de dados
padro ser definido como master.

GO (Transact-SQL)
Signals the end of a batch of Transact-SQL statements to the SQL Server utilities.
GO [count]
count = Is a positive integer. The batch preceding GO executes the specified number of times.

DROP DATABASE database;


PERMISSO: Para executar DROP DATABASE, a um mnimo, um usurio deve ter permisso
CONTROL no banco de dados.

Bancos de dados de sistema no podem ser excludos.

Exclua todos os instantneos do banco de dados que existam no banco de dados. Para obter
mais informaes, consulte Descartar um instantneo do banco de dados (Transact-SQL).

Se o banco de dados estiver envolvido em envio de logs, remova o envio do logs.

Se o banco de dados for publicado para replicao transacional, publicado ou com assinatura
para replicao de mesclagem, remova a replicao do banco de dados.

Faa backup do banco de dados mestre. Se o mestre precisar ser restaurado, todos os bancos de
dados que tiverem sido excludos desde o ltimo backup do mestre ainda tero referncias nas
exibies do catlogo do sistema e podero gerar mensagens de erro.

CREATE DATABASE database;


PERMISSO: Requer a permisso CREATE DATABASE no banco de dados mestre, ou requer a
permisso CREATE ANY DATABASE ou ALTER ANY DATABASE. Para manter controle sobre o uso do
disco em uma instncia do SQL Server, a permisso para criar bancos de dados geralmente
limitada a algumas contas de logon.

No mximo 32.767 bancos de dados podem ser especificados em uma instncia do SQL Server.
A instruo CREATE DATABASE deve ser executada em modo de autocommit mode (o modo padro
de gerenciamento de transaes) e no permitida em uma transao explcita ou implcita.

O backup do banco de dados mestre deve ser feito sempre que um banco de dados de
usurio for criado, modificado ou descartado.

Ao criar um banco de dados, torne os arquivos de dados to grandes quanto possvel, com
base na quantidade mxima de dados que voc espera ter no banco de dados.

CREATE DATABASE Sales ON ( NAME = Sales_dat, FILENAME = 'C:\Program Files\Microsoft


SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\saledat.mdf', SIZE = 10, MAXSIZE = 50,
FILEGROWTH = 5 ) LOG ON ( NAME = Sales_log, FILENAME = 'C:\Program Files\Microsoft
SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\salelog.ldf', SIZE = 5MB, MAXSIZE = 25MB,
FILEGROWTH = 5MB ) ;
Este exemplo cria o banco de dados Sales. Como a palavra-chave PRIMARY no usada, o primeiro
arquivo (Sales_dat) torna-se o arquivo primrio. Como nem MB nem KB especificado no parmetro
SIZE do arquivo Sales_dat, ele usa MB e alocado em megabytes. O arquivo Sales_log alocado em
megabytes porque o sufixo MB explicitamente declarado no parmetro SIZE.

CREATE TABLE
CREATE TABLE new_employees
(
id_num int IDENTITY(1,1),
fname varchar (20),
minit char(1),
lname varchar(30)
);

GERENCIAMENTO DE USUARIOS
VER CONCEITOS DE SCHEMAS
VIEWS
TEMP TABLES
STORED PROCEDURES
TREINAMENTO DE ESCRITA DOS SQLs tanto dos comandos de DDL como DML

Vous aimerez peut-être aussi