Redirect

This Page

has moved to a new address:

http://www.tuliorosa.com.br

Sorry for the inconvenience…

Redirection provided by Blogger to WordPress Migration Service

segunda-feira, maio 02, 2011

Usando a mesma base do SQL Azure em mais de uma empresa

Imagine a seguinte situação:

Vários sistemas web que armazenam poucas informações na base de dados, no máximo 200 MB.

Você comercializa os sistemas como serviço (assinatura), para 40 empresas diferentes, onde para cada empresa você teria que criar uma nova base de dados.

A menor base no SQL Azure é de 1 GB, onde você pagaria por utilização $9,99 / mês.

Se fossemos armazenar as 40 empresas no SQL Azure você teria que pagar por mês $399,60.

Se a mesma base no SQL Azure de 1 GB, fosse dividida com 4 empresas, você pagaria $99,90 por mês.

Como utilizar a mesma base do SQL Azure

Uma forma de fazer essa divisão é utilizando os “schema” do SQL Server.

Os schema agrupam obietos (tabelas, views, stored procedures etc...), onde podemos especificar permissões especificas de acesso a cada schema .

Exemplo

No exemplo abaixo são criados dois schemas (empresaA e empresaB) e dois usuários, um para cada empresa.

-----------------------------------------------------------------------------------
-- Criação da primeira empresa
-----------------------------------------------------------------------------------

--use a base master
CREATE LOGIN UsuarioTeste WITH PASSWORD = 'usuario135!@#'
GO

--use a sua base
CREATE SCHEMA empresaA
GO

CREATE USER UsuarioTeste FOR LOGIN UsuarioTeste WITH DEFAULT_SCHEMA = empresaA
GO

GRANT INSERT, UPDATE, DELETE, SELECT ON SCHEMA ::empresaA TO UsuarioTeste;
GO

-- Cria tabela de exemplo
create table empresaA.Teste
(
    id int primary key,
    descr varchar(30)
)
GO

insert    empresaA.Teste
values (1,'aa'), (2,'bb')
GO


-----------------------------------------------------------------------------------
-- Criação da segunda empresa
-----------------------------------------------------------------------------------

--use a base master
CREATE LOGIN UsuarioTeste2 WITH PASSWORD = 'usuario135!@#'
GO

--use a sua base
CREATE SCHEMA empresaB
GO

CREATE USER UsuarioTeste2 FOR LOGIN UsuarioTeste2 WITH DEFAULT_SCHEMA = empresaB
GO

GRANT INSERT, UPDATE, DELETE, SELECT ON SCHEMA ::empresaB TO UsuarioTeste2;
GO

-- Cria tabela de exemplo
create table empresaB.Teste
(
    id int primary key,
    descr varchar(30)
)
GO

insert    empresaB.Teste
values (3,'cc'), (4,'dd')
GO

 

Para testar

Faça a conexão com o primeiro usuário (UsuarioTeste) e execute :

select * from Teste

O resultado será:

id

descr

1

aa

2

bb

Faça a conexão com o segundo usuário (UsuarioTeste2) e execute :

select * from Teste

O resultado será:

id

descr

3

cc

4

dd

Nenhum comentário:

Postar um comentário