Posts Tagged sqlserver2008

Como desabilitar o Auto Commit em SQL Server Management Studio

Saudações caro leitor,

 

Hoje vou falar de uma informação que pode ser trivial para alguns, irrelevantes para outro mas que em determinadas situações de pressão e temperatura pode ser um desespero para alguns.

 

Talvez vou saiba ou não, mas todos os scripts que executamos no gerenciador SQL Server Management Studio executam dentro de uma transação que tem um AUTO COMMIT, é isso mesmo ele “COMMITA” pra você automaticamente.

 

No dia à dia isso é quase irrelevante mas quando você precisa executar testes em que você deseja que a transação fique pendente, ou mesmo não quer correr o risco de cometer aquele deslize merda mexendo com um banco de dados que todo seu time usa.

 

Você pode ou deveria desabilitar o AUTO COMMIT, como fazer isso, simples…

 

Tools > Options > Query Execution > SQL Server > ANSI > MARCAR a opção SET IMPLICIT TRANSACTIONS

 

AutoCommit

 

Ai você se pergunta, mas e se eu esquecer de dar COMMIT ou ROLLBACK…

 

Quando você fechar a query vai aparecer a seguinte mensagem e basta você responder SIM (COMMIT) ou NÃO (ROLLBACK) e seja feliz.

 

AutoCommitClose

 

Abraço e até a próxima.

 

Referências:

Tags: , , , ,

SQL Server | Buscar por Tabela usada em Stored Procedures

Olá pessoal,

Recentemente precisei descobrir quais “stored procedures” utilizavam determinadas tabelas e eis que encontrei artigo que ensina de uma forma bem simples.

Seguem dois exemplos abaixo, um buscando apenas por stored procedures que utilizam a tabela de nome “Employee” e outro exemplo buscando pela tabela “Employee” e coluna “RateChangeDate”.

Exemplo buscando apenas pelo nome da tabela

USE AdventureWorks
GO
--Searching for Empoloyee table
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%Employee%'
GO

Exemplo buscando pelo nome da tabela e nome de coluna

--Searching for Empoloyee table and RateChangeDate column together
SELECT Name
FROM sys.procedures
WHERE OBJECT_DEFINITION(OBJECT_ID) LIKE '%Employee%'
AND OBJECT_DEFINITION(OBJECT_ID) LIKE '%RateChangeDate%'
GO

Referências
http://blog.sqlauthority.com/2007/09/03/sql-server-2005-search-stored-procedure-code-search-stored-procedure-text/
http://blog.sqlauthority.com/2006/12/10/sql-server-find-stored-procedure-related-to-table-in-database-search-in-all-stored-procedure/
http://msdn.microsoft.com/pt-br/library/ms188737(v=sql.100).aspx

Tags: , , ,

App_Data ASPNETDB.MDF – Deployment

Recentemente encontrei algumas dificuldades para publicar uma aplicação ASP.NET MVC em um servidor zerado ou praticamente.

Elo só tinha IIS7.5 com ASP.NET 3.5, então restou para mim instalar o ASP.NET 4.0, o SQL Server Express e depois publicar a aplicação.

O maior problema foi com a geração o deploy do aspnetdb.mdf que é o arquivo de banco de dados que contêm a estrutura e dados para o funcionamento do MemberShip que já vem configurado e pronto para uso com o template de aplicação ASP.NET MVC.

 

Caso você tenha problemas com a “geração” do banco de dados na pasta App_Data ele pode ser causado por um dos motivos abaixo.

  • O servidor de banco de dados não está instalado (SQL Server/ SQL Server Express 2005/2008/2008 R2);
  • Você ainda não rodou o comando aspnet_regsql.exe para gerar o banco de dados padrão do ASP.NET no seu servidor de banco de dados;
  • Seu banco de dados pode não está rodando, são dois serviços que devem estar rodando, a instância do banco e o SQL Browser;
  • O datasource da sua string de conexão pode estar errada, errada entenda o nome da instancia está diferente do nome da instancia configurado na máquina onde você está fazendo o deploy;

 

Uma coisa interessante é que nesse último caso, apesar de meu “SQL Server Configuration Manager” dizer que o nome da instância era MSSQLSever que foi o nome que eu havia atribuido na instalação o nome era outro. Hahahaha

Como eu descobri isso ? Depois de sofrer horas sem fim..

Eu habilitei o servidor para aceitar conexões remotas que você pode ver como no link abaixo como fazer, após eu realizei a conexão através do SQL Server Management Studio informando o IP da máquina servidora do banco de dados.

 

Após cliquei com o botão direito em cima do IP que simbolizava a conexão e pedi as propriedades, e para minha supresa só estava o nome da máquina XPTO, e não havia nenhuma menção ao nome da instância.

Então alterei a string de conexão para ficar assim..

<add name=”ApplicationServices” connectionString=”data source=XPTO;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true” providerName=”System.Data.SqlClient” />

Onde XPTO é o nome da máquina onde está instalado o servidor de banco de dados.

 

Habilitando conexões remotas.
http://blogs.msdn.com/b/walzenbach/archive/2010/04/14/how-to-enable-remote-connections-in-sql-server-2008.aspx

Creating the Application Services Database for SQL Server
http://msdn.microsoft.com/en-us/library/x28wfk74.aspx

 

Enjoy it !

Leandro Ribeiro

Tags: , , , , , ,

Adicionando arquivos MDF(SQL Server Database) no Visual Studio 2008

Muitas pessoas já passaram pelo problema de não conseguir inserir arquivos de dados (mdf) na pasta App_Data do Visual Studio 2005/2008 ou até mesmo 2010.

A mensagem que costuma aparecer é a seguinte.

“Connections to sql server files (*.mdf) require sql server express 2005 to function properly. Please verify the installation of the component or download from the url: http://go.microsoft.com/fwlink/?LinkId=49251”

Muitas soluções são propostas pela internet, mas a solução definitiva é mais simples do que se pensa.

Acontece que a maioria das pessoas alteração o nome da instância do SQL Server instalada, por exemplo, quando você instala o SQL Server Express 2008 é costuma colocar o nome da instância como SQLEXPRESS2008 ou quando é o SQL Server Express 2005 fica SQLEXPRESS2005.

Quando você faz essa alteração o Visual Studio “fica cego”, eu acho que isso é uma falha grosseira na implementação do Visual Studio, mas não vamos entrar no mérito da questão, eis a alteração necessária para corrigir o problema.

Tools > Options > Database Tools > Data Connections

Em SQL Server Instance Name digite o nome correto da sua instância, no meu caso ficará SQLEXPRESS2008.

Antes (clique na imagem para ampliar)

Visual Studio 2008 Database Settings

Visual Studio 2008 Database Settings

Depois (clique na imagem para ampliar)

Visual Studio 2008 Database Settings

Visual Studio 2008 Database Settings

Pronto agora você já pode adicionar seus arquivos de dados na pasta App_Data do seu WebSite.

Espero que tenha ajudado!

att.
Leandro Ribeiro

Tags: , , , , , , ,

Como descobrir/exibir as instâncias do SQL Server instaladas

Camaradas,

Recentemente precisei descobrir qual o nome da instância do SQL Server instalada na máquina de um cliente meu, só que meu cliente não sabia como buscar essa informação.

Eu já conhecia o utilitário de linha de comando do SQL Server (sqlcmd) , só que até então só sabia utiliza-ló acessando através do usário e senha.

Pois então eu descobri que existe o parametrô -L, que exibe os nomes das instâncias instaladas na máquina.

Basta então utilizar o prompt de comando, digitando SQLCMD -L e você terá um resultado semelhante a esse.

Refêrencias:
http://mssqlonline.blogspot.com/2009/03/sql-server-find-all-servers-from-local.html
http://blog.sqlauthority.com/2009/03/18/sql-server-find-all-servers-from-local-network-using-sqlcmd/

Até a próxima!
Leandro Ribeiro

Tags: , , ,

Adicionando usuários no SQL Server

Há quem goste de fazer tudo por interface gráfica, porém ao fazer dessa forma você perde a oportunidade de automatizar tarefas, por exemplo dizer que você tenha que criar 30 usuários, você irá fazer tudo manualmente ?

Eu prefiro script assim toda vez que eu precisar basta mudar o login e pronto, está feito!

Segue um script de exemplo.

Nesse exemplo eu estou criando o usuário e dando acesso de (INSERT, UPDATE, SELECT, DELETE) através das ROLES ‘DB_DATAREADER’ e ‘DB_DATAWRITER’.

Código Exemplo

CREATE LOGIN usuario1
WITH PASSWORD = 'usuario1'
GO 

USE [TesteBD]

CREATE USER usuario1 FOR LOGIN usuario1
WITH DEFAULT_SCHEMA = [TesteBD]
GO

EXEC SP_ADDROLEMEMBER 'DB_DATAREADER', 'usuario1'
EXEC SP_ADDROLEMEMBER 'DB_DATAWRITER', 'usuario1'

GO

Divirta-se!

Tags: , , , ,

Tamanho de tabelas no SQL Server

Script simples porém muito útil então resolvi postar.

Não me recordo da fonte…
Quando relembrar faço referência.

SELECT OBJECT_NAME(ID) TABELA, CONVERT(DEC(15),SUM(RESERVED)) RESERVED
INTO #X
FROM SYSINDEXES
WHERE indid in (0, 1, 255)
GROUP BY ID

SELECT TABELA, LTRIM(STR(RESERVED * D.LOW / 1024., 15, 0)) + ' KB'
FROM #X, master.dbo.spt_values d
where d.number = 1
and d.type = 'E'
ORDER BY RESERVED DESC

Divirta-se!

Tags: , , ,

Definindo Estratégia de Modelo de Recuperação para Banco de Dados SQL Server

Recentemente trabalhei em um projeto de milhões de dados, tanto no ambiente de desenvolvimento ou de produção.

O resultado foi que em algumas semanas o servidor de desenvolvimento “estourou”, metaforicamente falando claro. Identificamos que as bases de dados estavam com 30GB cada uma, resultado de uma má estratégia de modelo de recuperação (backup).

Procurando na internet encontrei um artigo interessante sobre o assunto, pode ser lido em: www.devmedia.com.br/articles/viewcomp.asp?comp=6458

O resumo seria o seguinte…

SIMPLE (Ideial para Desenvolvimento!)

O log de transações (Transaction Log) é usado muito pouco neste modelo de recuperação. De fato, quase nada é registrado no log. Isto significa dizer que a escolha em usar este modelo para seus banco de dados só será possível recuperar o último backup.

BULK-LOGGED

Este modelo registra muito mais informação no log de transações do que o modelo SIMPLE. A única informação não registrada são operações de volume como: SELECT INTO, BCP, BULK INSERT,CREATE INDEX e operações com os tipos de dados texto e ntext. Isto significa que você pode recuperar a maior parte dos dados no caso de algum problema, porém só as operações citadas serão perdidas.

FULL (Sempre em produção!)

Este modelo de recuperação informa ao SQL Server que você quer realizar também o backup de log de transações. Para tornar isso possível, o SQL Server mantém todas as transações em um log de transações até que um backup do log de transações ocorra. Quando o backup do log de transações acontece, o SQL Server trunca o log de transações depois que o backup é gravado no dispositivo de backup.

Fonte:
www.devmedia.com.br/articles/viewcomp.asp?comp=6458

Tags: , , ,