Schema - SQL SERVER
- Amanda Nascimento
- 27 de nov. de 2023
- 2 min de leitura
Atualizado: há 52 minutos
Um "schema" é uma estrutura lógica para objetos dentro de um banco de dados. Ele é usado principalmente para organizar e gerenciar objetos dentro de um banco de dados. Por exemplo, você pode ter um schema para as tabelas, outro para as views, e assim por diante, ou, dentro de um data mart você cria vários schemas, 1 por área de negócio e define o acesso ao usuário por schema. O schema fornece uma maneira de separar e organizar os objetos dentro de um banco de dados, facilitando a gestão e a segurança. É como se fosse uma "pasta" ou "espaço de nomes" para organizar os objetos de forma lógica.
Neste exemplo o meu banco de dados se chama DM_RH (Data Mart para a área de recursos humanos) e dentro deste data mart, criei o schema chamado RH.

Agora um passo a passo completo, criando um banco de dados e os schemas.
Criando um Banco de dados, arquivo .mdf e .log
Conectado ao seu servidor (pode ser local host. Clique aqui)
Logado com um usuário com permissões, em master, você deverá executar o script abaixo.
Caso deseje criar o banco em outro diretório, basta alterar o caminho C:\Data...

-- Criação do banco de dados datamart_BI
-- Obs: Precisa criar a pasta C:\Data
CREATE DATABASE datamart_BI
ON PRIMARY
(
NAME = 'datamart_BI_data',
FILENAME = 'C:\Data\datamart_BI.mdf', -- Ajuste o caminho conforme necessário
SIZE = 100MB, -- Tamanho inicial
MAXSIZE = UNLIMITED, -- Crescimento ilimitado
FILEGROWTH = 50MB -- Incremento de crescimento
)
LOG ON
(
NAME = 'datamart_BI_log',
FILENAME = 'C:\Data\datamart_BI.ldf', -- Ajuste o caminho conforme necessário
SIZE = 50MB,
MAXSIZE = 2GB,
FILEGROWTH = 25%
);
Criando schemas para algumas áreas
Após criar o banco de dados, clique na setinha azul para atualizar (ou F5) para o datamart aparecer, posteriormente, execute o script abaixo para criar os schemas e depois atualize de novo, e abra a pasta de segurança, esquemas, e lá estarão eles.

Criando schema e transferindo uma tabela
CREATE SCHEMA NomeSchema;
GO
ALTER SCHEMA NomeSchema TRANSFER dbo.notas;
Copiando uma tabela de outro banco para este
financeiro é o nosso schema dentro do banco de dados data mart BI e iremos copiar a tabela selic que esta dentro de outro banco de dados.
USE datamart_BI;
GO
SELECT *
INTO financeiro.selic
FROM nomebancoorigem.dbo.selic;
Identificando quais schemas existem
SELECT name
FROM sys.schemas;
SELECT SCHEMA_NAME();
Identificando quais tabelas existem em um schema
SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'financeiro' AND TABLE_NAME = 'selic';
Retornando nome das tabelas, nome database e nome do schema
SELECT
t.name AS 'Nome da Tabela',
DB_NAME() AS 'Nome do Banco de Dados',
s.name AS 'Nome do Schema'
FROM sys.tables t
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id;

Deletar um schema existente
DROP SCHEMA NomeDoSchema;