/* ************************************************************************************************************ Criado por: Edvaldo Castro - http://edvaldocastro.com Contatos: edvaldo.castro@outlook.com FUNÇÃO: Script de exemplo para criação de arquivos de banco de dados no limite do SQL Server DATA CRIAÇÃO: 08/06/2015 Mídias públicas: Blog: - http://edvaldocastro.com Página Facebook (SQL Server) - http://facebook.com/edvaldocastro Twitter: - @edvaldocastro02 ************************************************************************************************************ */ -- PASSO 1 --CRIE OU DIRETÓRIOS ABAIXO, OU ALTER-OS NO SCRIPT --D:\NOLIMITE\DATA --D:\NOLIMITE\LOG --EXECUTE OS SCRIPTS EM BLOCOS --ASSEGURE-SE DE TER PELO MENOS 33GB LIVRES NA UNIDADE ONDE OS ARQUIVOS SERÃO CRIADOS. --PASSO 2 --CRIAÇÃO DE UM BANCO DE DADOS VAZIO PARA EXECUÇÃO DO TESTE. CREATE DATABASE NOLIMITE ON PRIMARY (NAME='1',FILENAME='D:\NOLIMITE\DATA\1.MDF',SIZE=5MB) LOG ON (NAME='LOG',FILENAME='D:\NOLIMITE\LOG\NOLOMITE.LDF') GO --PASSO 3 --CRIAÇÃO DE DE 32766 ARQUIVOS DECLARE @SQL VARCHAR(MAX) DECLARE @NAME VARCHAR(5) = 2 WHILE @NAME < 32767 BEGIN SET @SQL = 'ALTER DATABASE NOLIMITE ADD FILE (NAME='''+@NAME+''',FILENAME=''D:\NOLIMITE\DATA\'+@NAME+'.NDF'',SIZE=1MB)' SET @NAME = @NAME + 1 EXEC (@SQL) PRINT @SQL END -- ACRÉSCIMO DE UM ARQUIVO PARA QUE SEJA SIMULADO O ERRO ALTER DATABASE NOLIMITE ADD FILE (NAME='32767',FILENAME='D:\NOLIMITE\DATA\32767.NDF',SIZE=1MB) --NESTE PONTO JÁ DEVE SER POSSÍVEL PERCEBER O ERRO. -- VERIFICAÇÃO DE TEMPOS PARA ALTERAÇÃO DE STATUS ONLINE E OFFLINE --CRIAÇÃO DE BANCO DE DADOS VAZIO COM O PADRÃO (2 ARQUIVOS) CREATE DATABASE NOLIMITE2 GO --EXECUTE CADA BATCH SEPARADAMENTE SET STATISTICS TIME ON ALTER DATABASE NOLIMITE2 SET OFFLINE WITH ROLLBACK IMMEDIATE GO ALTER DATABASE NOLIMITE SET OFFLINE WITH ROLLBACK IMMEDIATE GO ALTER DATABASE NOLIMITE2 SET ONLINE GO ALTER DATABASE NOLIMITE SET ONLINE GO --CONSULTA ÀS PÁGINAS EM MEMÓRIA DO BANCO "NOLIMITE" SELECT page_type, COUNT(*) 'QTD PÁGINAS', COUNT(*)*8/1024 'SIZE' FROM SYS.dm_os_buffer_descriptors GROUP BY database_id,page_type HAVING database_id = DB_ID('NOLIMITE')