Um banco de dados no SQL Server é composto de uma coleção de tabelas que armazena um conjunto específico de dados estruturados. Uma tabela contém uma coleção de linhas, também chamada de registros ou tuplas, e colunas, também chamadas de atributos. Cada coluna da tabela é projetada para armazenar um determinado tipo de informação, por exemplo, datas, nomes, quantias em dólares e números. Uma instância de SQL Server pode oferecer suporte a muitos bancos de dados. Cada banco de dados pode armazenar dados interrelacionados ou não relacionados de outros bancos de dados. Por exemplo, uma instância do SQL Server pode ter um banco de dados que armazena dados pessoais e outro banco de dados que armazena dados relacionados aos produtos. Como alternativa, um banco de dados pode armazenar dados atuais de pedidos de clientes, e outro banco de dados relacionado pode armazenar o histórico de pedidos de clientes usado para relatório anual. Cada instância exibe uma instalação separada, por exemplo, produção rodando sql server 2008 e testes rodando sql server 2012. Banco de dados mestre O banco de dados mestre registra todas as informações de nível de sistema para um sistema do SQL Server. Isto inclui metadados de ampla instância como contas de logon, pontos de extremidade, servidores vinculados e parâmetros de configuração de sistema. Além disso, mestre é o banco de dados que registra a existência de todos os outros bancos de dados e o local desses arquivos de bancos de dados, e registra as informações de inicialização para o SQL Server. Portanto, o SQL Server não poderá iniciar se o banco de dados mestre não estiver disponível. No SQL Server, os objetos de sistema não são mais armazenados no banco de dados mestre; em vez disso, eles são armazenados no Banco de dados de recurso. Prof. Rogério Rocha, 2015 Página 1 de 5
Propriedades físicas do bd master A tabela a seguir lista os valores iniciais de configuração dos dados mestre e dos arquivos de log. Os tamanhos desses arquivos talvez variem ligeiramente para diferentes edições do SQL Server. Arquivo Nome lógico Nome físico Primary data master master.mdf Log mastlog mastlog.ldf O SQL Server mapeia um banco de dados de um conjunto de arquivos do sistema operacional. As informações de log e dados nunca ficam misturadas no mesmo arquivo, e os arquivos individuais são usados apenas por um banco de dados. Os grupos de arquivos são conhecidos como coleções de arquivos e são usados para ajudar no posicionamento de dados e em tarefas administrativas, como operações de backup e restauração. Os bancos de dados do SQL Server têm três tipos de arquivos: Arquivos de dados primários O arquivo de dados primário é o ponto de partida do banco de dados e aponta para os outros arquivos no banco de dados. Todo banco de dados tem um arquivo de dados primário. A extensão de nome de arquivo indicada para arquivos de dados primários é.mdf. Arquivos de dados secundários Arquivos de dados secundários compõem todos os arquivos de dados, menos o arquivo de dados primário. Alguns bancos de dados podem não ter nenhum arquivo de dados secundário, enquanto outros têm vários arquivos de dados secundários. A extensão de nome de arquivo indicada para arquivos de dados secundários é.ndf. Arquivos de log Os arquivos de log mantêm todas as informações de log usadas para recuperar o banco de dados. Deve haver pelo menos um arquivo de log para cada banco de dados, embora possa haver mais de um. A extensão de nome de arquivo indicada para arquivos de log é.ldf. O SQL Server não impõe as extensões de nome.mdf,.ndf e.ldf, mas essas extensões ajudam a identificar os tipos diferentes de arquivos e seus usos. No SQL Server, os locais de todos os arquivos de um banco de dados são registrados no arquivo primário do banco de dados e no banco de dados mestre. O Mecanismo de banco de dados do SQL Server usa as informações de local de arquivo do banco de dados mestre a maior parte do tempo. Nomes de arquivo lógico e físico Os arquivos do SQL Server têm dois nomes: logical_file_name O nome logical_file_name é usado para se referir ao arquivo físico em todas as instruções Transact-SQL. O nome de arquivo lógico deve estar de acordo com as regras de identificadores SQL Server e deve ser exclusivo entre os nomes de arquivos lógicos no banco de dados. Prof. Rogério Rocha, 2015 Página 2 de 5
os_file_name O nome os_file_name denomina o arquivo físico que inclui o caminho de diretório. Ele deve seguir as regras dos nomes de arquivo de sistema operacional. Os arquivos de log e os dados SQL Server podem ser colocados em sistemas de arquivos FAT ou NTFS. Recomendamos o uso do sistema de arquivos NTFS devido aos aspectos de segurança do NTFS. Os grupos de arquivos de dados de leitura/gravação e os arquivos de log não podem ser colocados em um sistema de arquivos compactados NTFS. Só podem ser colocados bancos de dados somente leitura e grupos de arquivos secundários somente leitura em um sistema de arquivos compactados NTFS. Para obter mais informações, consulte Grupos de arquivos somente leitura e compactação. Quando são executadas várias instâncias do SQL Server em um único computador, cada instância recebe um diretório padrão diferente para manter os arquivos dos bancos de dados criados na instância. Para obter mais informações, consulte Locais de arquivos para instâncias padrão e nomeadas do SQL Server. Páginas de arquivo de dados As páginas de um arquivo de dados do SQL Server são numeradas em sequência, iniciando com zero (0) para a primeira página do arquivo. Cada arquivo em um banco de dados tem um número de ID de arquivo exclusivo. Para identificar de forma exclusiva uma página em um banco de dados, são necessários ID do arquivo e número de página. O exemplo a seguir mostra os números de página em um banco de dados que tem um arquivo de dados primário de 4 MB e um arquivo de dados secundário de 1 MB. A primeira página de cada arquivo é uma página de cabeçalho de arquivo que contém informações sobre os atributos do arquivo. Várias outras páginas do início do arquivo também têm informações de sistema, como mapas de alocação. Uma das páginas de sistema armazenada no arquivo de dados primário e no primeiro arquivo de log é uma página de inicialização de banco de dados que contém informações sobre os atributos do banco de dados. Para obter mais informações sobre essas páginas e os tipos de páginas, consulte Compreendendo páginas e extensões. Os arquivos do SQL Server podem aumentar automaticamente a partir do tamanho original especificado. Ao definir um arquivo, você poderá definir um incremento de crescimento específico. Sempre que o arquivo estiver cheio, seu tamanho aumentará com base no incremento de crescimento. Se houver vários arquivos em um grupo de arquivos, eles não crescerão automaticamente até que todos os arquivos estejam cheios. O crescimento acontece na forma de rodízio. Cada arquivo também pode ter um tamanho máximo especificado. Se um tamanho máximo não for especificado, o arquivo continuará crescendo até usar todo o espaço disponível no disco. Esse recurso é muito útil quando o SQL Server é usado como um banco de dados incorporado em um aplicativo em que o usuário não tem acesso conveniente a um administrador de sistema. O usuário pode deixar o crescimento automático de arquivos conforme exigido para reduzir a carga administrativa de monitoramento do espaço livre do banco de dados e de alocação manual de espaço adicional. O formulário do arquivo usado por um instantâneo do banco de dados para armazenar seus dados de cópia-na-gravação depende de o instantâneo ser criado por um usuário ou usado internamente: O exemplo a seguir cria um banco de dados em uma instância do SQL Server. O banco de dados tem um arquivo de dados primário, um grupo de arquivos definido pelo usuário e um arquivo de log. O arquivo de dados primário está no grupo de arquivos primário e o grupo de arquivos definido pelo usuário tem dois arquivos de dados secundários. Uma instrução ALTER DATABASE torna padrão o grupo de arquivos definido pelo usuário. Depois, é criada uma tabela que especifica o grupo de arquivos definido pelo usuário. Prof. Rogério Rocha, 2015 Página 3 de 5
USE master; CREATE DATABASE MyDB ON PRIMARY ( NAME='MyDB_Primary', FILENAME= 'c:\program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\MyDB_Prm.mdf', SIZE=4MB, MAXSIZE=10MB, FILEGROWTH=1MB), FILEGROUP MyDB_FG1 ( NAME = 'MyDB_FG1_Dat1', FILENAME = 'c:\program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\MyDB_FG1_1.ndf', SIZE = 1MB, MAXSIZE=10MB, FILEGROWTH=1MB), ( NAME = 'MyDB_FG1_Dat2', FILENAME = 'c:\program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\MyDB_FG1_2.ndf', SIZE = 1MB, MAXSIZE=10MB, FILEGROWTH=1MB) LOG ON ( NAME='MyDB_log', FILENAME = 'c:\program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\data\MyDB.ldf', SIZE=1MB, MAXSIZE=10MB, FILEGROWTH=1MB); ALTER DATABASE MyDB MODIFY FILEGROUP MyDB_FG1 DEFAULT; -- Create a table in the user-defined filegroup. USE MyDB; CREATE TABLE MyTable ( cola int PRIMARY KEY, colb char(8) ) ON MyDB_FG1; Prof. Rogério Rocha, 2015 Página 4 de 5
Prof. Rogério Rocha, 2015 Página 5 de 5