sexta-feira, 23 de abril de 2010

Dica e Comandos MS-SQL Server

/*
--Setando o banco a ser utilizado
USE master;
*/

/*
Certifique-se de que não existem transações antigas, de execução demorada ou não replicadas.
Para o fazer, utilize um código semelhante a:
DBCC OPENTRAN (nome_da_base_de_dados)

Para monitorizar a quantidade de espaço utilizada.
DBCC SQLPERF (LOGSPACE)

Fonte: http://support.microsoft.com/kb/256650/pt

*/

/* Dicas de MS-SQL Server
-- Erro ao criar usuario / login
-- Error 15023 MS-SQL Server - Usuário ou regra já existente
-- rodar pelo query analyzer
sp_change_users_login 'auto_fix', 'usuario'
*/


/*
-- Limpeza de banco - Limpa o Log MS-SQL Server
dump tran dbname with truncate_only
*/
/*
-- Diminir banco defrag
-- limpar primeiro o LOG
DBCC SHRINKdatabase ("banco")
*/
/*
-- Scripts para gerar script de limpeza e diminuição do banco
set nocount on
use master


-- gera resultado para ver os tamanhos dos bancos
select 'exec sp_helpdb ' + rtrim(name) + '' from sysdatabases order by name


-- gera script para limpar os logs dos bancos
select 'dump tran "' + name + '" with truncate_only' from sysdatabases


-- gera script para diminuir o tamanho dos bancos
select 'DBCC SHRINKdatabase ("' + rtrim(name) + '")' from sysdatabases


-- gera script para diminuir o tamanho dos bancos com o nome doo banco entre '(banco)'
select 'DBCC SHRINKDATABASE (' + rtrim(name) + ');' from sysdatabases order by name


-- gera script para limpar somente o arquivo log de cada bancos
select 'USE ' + NAME + '; DBCC SHRINKFILE (' + rtrim(name) + '_LOG,1);'
from sysdatabases
where dbid > 6 or name = 'tempdb' order by name
*/


/*
-- verificar se o banco está em off line
select * from sysdatabases order by name
select * from sysdatabases where cmptlevel= 80 order by name
select * from sysdatabases where cmptlevel= 90 order by name


-- banco sql 2000 off line: status = 528 e cmptlevel=80
-- banco sql 2005 off line: status = 66048 e cmptlevel=80
*/




/*
-- Permitir trace no MS-SQL Server para fazer Debug pelo Profiller
grant ALTER TRACE to [LOGIN]
*/


/*
-- Cria linked Server no MS-SQL Server
GRANT ALTER ANY LINKED SERVER to [LOGIN]
-- Remove linked Server no MS-SQL Server
revoke ALTER ANY LINKED SERVER to [LOGIN]
*/

/*
-- Estes script permite localizar as maiores tabelas (tamanho) de uma base MS-SQL Server
WITH RES AS(
SELECT
T.NAME As Tabela,
Rows As Linhas,
SUM(Total_Pages) * 8 As Reservado,
SUM(Used_Pages) * 8 As Utilizado
FROM
sys.partitions As P
INNER JOIN sys.allocation_units As A ON P.hobt_id = A.container_id
INNER JOIN sys.tables T ON T.Object_ID = P.Object_ID
GROUP BY T.NAME, Rows
)
SELECT Tabela,
Linhas,
Reservados = CASE WHEN Reservado < 1024 THEN CAST(Reservado AS VARCHAR) + ' KB' ELSE CAST(CAST(Reservado /1024.0 AS DECIMAL(20,2)) AS VARCHAR) + ' MB' END,
Utilizados = CASE WHEN Utilizado < 1024 THEN CAST(Utilizado AS VARCHAR) + ' KB' ELSE CAST(CAST(Utilizado /1024.0 AS DECIMAL(20,2)) AS VARCHAR) + ' MB' END
FROM RES
ORDER BY RES.Utilizado DESC
*/

-- Estes script permite localizar as maiores tabelas (tamanho) de uma base MS-SQL Server

-- com menos informações

Select object_name(id),rowcnt,dpages*8 as [tamanho KB] from sysindexes

where indid in (1,0) and objectproperty(id,'isusertable')=1

order by rowcnt desc

*/

/*

-- Apaga dados tabela imediatamente.

-- Cuidado apaga de uma vez SEM confirmação

Truncate table TABLELA

*/

/*

-- Para retirar uma base do ar, conecte-se no banco MASTER e digite os seguintes comandos:

-- Code Snippet

-- Para colocar uma base específica em OFF LINE

ALTER DATABASE SeuBanco SET OFFLINE WITH ROLLBACK IMMEDIATE

-- Para colcoar uma base específica em ON LINE

ALTER DATABASE SeuBanco SET ONLINE

-- SCRIPT Para gera uma base específica

select 'ALTER DATABASE ' + rtrim(name) + ' SET OFFLINE WITH ROLLBACK IMMEDIATE' from sysdatabases

*/

/*

-- restore de diferencial

-- voltar backup com a opcao norecover e votar com o comando abaixo o diferencial.

RESTORE DATABASE [base] FROM DISK = N'C:\temp\base.bak' WITH FILE = 1

*/

/*

-- verifica collation MS-SQL SERVER

http://www.sqlnewsgroups.net/group/microsoft.public.sqlserver.server/topic21538.aspx

This is a collation - not really something you can install as such. If you

mean you want the Server Collation to be set to

"SQL_Latin1_General_CP1_CI_AS" then the option is there on the screen called

"Collation Settings" when you do the SQL Server install. Select the option

for SQL collations and "Dictionary order, case-insensitive, for use with

1252 Character set.". Cheers, Paul Ibison SQL Server MVP, www.replicationanswers.com.

-- http://www.serverintellect.com/support/sqlserver/change-database-collation.aspx

*/

/*

EXEC sp_helpsort

SELECT SERVERPROPERTY ('Collation')

EXEC sp_helpsort

SELECT SERVERPROPERTY ('Collation')

-- altera o collation de uma base

ALTER DATABASE base COLLATE SQL_Latin1_General_CP1_CI_AS --collation

*/

/*

-- SCRIPT DE RESTORE E BACKUP MS-SQL SERVER

RESTORE DATABASE AdventureWorks

FROM AdventureWorksBackups

WITH NORECOVERY,

MOVE 'AdventureWorks_Data' TO

'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf',

MOVE 'AdventureWorks_Log'

TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf'

RESTORE LOG AdventureWorks

FROM AdventureWorksBackups

WITH RECOVERY

--Restaurando o Backup Completo do Media Set 1

RESTORE DATABASE AdventureWorks FROM

DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak'

WITH MEDIANAME = 'Nome_Conjunto_Mídia', FILE=1, NORECOVERY;

--Restaurando o Backup Completo do Media Set 2

RESTORE DATABASE AdventureWorks FROM

DISK = 'C:\Backup\P1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak'

WITH MEDIANAME = 'Nome_Conjunto_Mídia', FILE=2, RECOVERY;

--

RESTORE DATABASE [Banco]

FROM [BancoCompleto1]

WITH NORECOVERY,

MOVE 'AdventureWorks_Data' TO

'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.mdf',

MOVE 'AdventureWorks_Log'

TO 'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\NewAdvWorks.ldf'

RESTORE LOG AdventureWorks

FROM AdventureWorksBackups

WITH RECOVERY

RESTORE LABELONLY FROM [BancoCompleto1] WITH ?????

RESTORE LABELONLY FROM DISK='C:\Backup\P1.bak'

RESTORE LABELONLY FROM DISK='C:\Backup\BancoCompleto1.bak'

--

RESTORE DATABASE AdventureWorks FROM

DISK = 'C:\Backup\BancoCompleto1.bak', DISK = 'C:\Backup\P2.bak', DISK = 'C:\Backup\P3.bak'

WITH MEDIANAME = 'Nome_Conjunto_Mídia', FILE=2, RECOVERY;

---RESTORE DATABASE [Banco] FROM DISK = N 'C:\Backup\BancoCompleto1.bak' WITH FILE = 1, NOUNLOAD, STATS = 10

GO

RESTORE DATABASE [Banco] FROM DISK = N 'C:\Backup\BancoCompleto1.bak'

WITH FILE = 1, NOUNLOAD, STATS = 10

GO

RESTORE LABELONLY FROM DISK= 'C:\Backup\BancoCompleto1.bak'

RESTORE DATABASE [Banco]

FROM DISK = N 'C:\Backup\BancoCompleto.bak'

WITH NORECOVERY,

MOVE 'Banco_Data' TO

'Y:\Banco.mdf',

MOVE 'Banco_Log'

TO 'Y:\Banco.ldf'

*/

Nenhum comentário: