13
Fernando Amaral PMP CDIA+ MCP MCAD MCSD MCDBA MCT GSI M Home/ Busca/ Índice Geral/ RSS/ Pantanet/ Mais Lidos/ Sobre/ Destaque: Curso de ASP.NET 3.5 em VB.NET e C#, 200 páginas, em PDF. Configurando o SQL Server 2000 com T-SQL O SQL Server pode ser configurado em quatro diferentes níveis hierárquicos: Servidor, Ba dados, Sessão e Comandos (Hints). A configuração de um nível superior afeta todos os nív subordinados, porém na existência de diferentes configurações entre diferentes níveis, prevalecerá a de nível inferior. Por exemplo, se a configuração CONCAT_NULL_YIELDS_ do banco de dados estiver ativa (ON) e um usuário efetuar um logon no servidor e desativá (OFF) a nível se sessão, prevalecerá a configuração da sessão. Estudaremos tutorial configurações de servidor, de banco de dados e de sessão. Configurações de comandos normalmente tratam do nível de bloqueio de uma única instrução, e não serão estudadas n artigo. Configurações de Servidor As configurações de servidor estão armazenadas na tabela sysconfigures do banco Maste Alterações não devem ser feitas diretamente nesta tabela, ao invés disto devemos utilizar o a procedure de sistema sp_configure. Esta procedure recebe dois parâmetros: a configura novo valor. Executada apenas com o nome da configuração, exibe os valores atuais da me executada sem nenhum parâmetro, mostra todos os parâmetros e seus respectivos valore observe: Name é o nome da opção de configuração. Minimum e maximum mostram os valores míni máximos, respectivamente, com que a opção pode ser configurada. Config_value mostra o Página 1 de 13 http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Configurando o SQL Server 2000 com T-SQL

Embed Size (px)

DESCRIPTION

Mostra procedimentos para a configuração do SQL SERVER 2000

Citation preview

Page 1: Configurando o SQL Server 2000 com T-SQL

Fernando Amaral PMP CDIA+ MCP MCAD MCSD MCDBA MCT GSI MPS

Home/ Busca/ Índice Geral/ RSS/ Pantanet/ Mais Lidos/ Sobre/

Destaque: Curso de ASP.NET 3.5 em VB.NET e C#, 200 páginas, em PDF.

Configurando o SQL Server 2000 com T -SQLO SQL Server pode ser configurado em quatro diferentes níveis hierárquicos: Servidor, Banco de dados, Sessão e Comandos (Hints). A configuração de um nível superior afeta todos os níveissubordinados, porém na existência de diferentes configurações entre diferentes níveis, prevalecerá a de nível inferior. Por exemplo, se a configuração CONCAT_NULL_YIELDS_NULL do banco de dados estiver ativa (ON) e um usuário efetuar um logon no servidor e desativá(OFF) a nível se sessão, prevalecerá a configuração da sessão. Estudaremos tutorial configurações de servidor, de banco de dados e de sessão. Configurações de comandos normalmente tratam do nível de bloqueio de uma única instrução, e não serão estudadas nesteartigo.

Configurações de ServidorAs configurações de servidor estão armazenadas na tabela sysconfigures do banco Master.Alterações não devem ser feitas diretamente nesta tabela, ao invés disto devemos utilizar o EM ou a procedure de sistema sp_configure. Esta procedure recebe dois parâmetros: a configuração e o novo valor. Executada apenas com o nome da configuração, exibe os valores atuais da mesma, executada sem nenhum parâmetro, mostra todos os parâmetros e seus respectivos valores, observe:

Name é o nome da opção de configuração. Minimum e maximum mostram os valores mínimos e máximos, respectivamente, com que a opção pode ser configurada. Config_value mostra o valor

Página 1 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 2: Configurando o SQL Server 2000 com T-SQL

atual da configuração, enquanto run_value é o valor que esta em execução pelo servidor. Vamos ver uma breve descrição destas configurações:

• allow updates: Por questões de segurança e integridade, nenhum usuário pode lterar diretamente as tabelas de sistema. A configuração allow updates, se habilitada (valor 1), permite que valores em tabelas de sistema sejam alteradas diretamente.

• default language: Especifica o idioma padrão utilizado na criação de um novo usuário. Este valor é utilizado se um idioma não for informado na criação do usuário.

• max text repl size: Determina o tamanho máximo de um campo Text ou Image em umareplicada.

• nested triggers: Quando configurado como 1, gatilhos aninhados são permitidos remote access: Quando configurado como 0, logins remotos não são permitidos no servidor;

• remote login timeout(s): Determina o tempo máximo de espera em uma tentativa de login. O valor 0 determina que não há limite de tempo;

• remote proc trans: Quando configurada como 1, as propriedades de transação ACID são protegidas através de uma transação distribuída de DTC;

• remote query timeout(s): Determina o tempo limite de uma consulta;

• show advanced options: Quando configurado como 1, a procedure de sistema sp_configure mostra inclusive as opções avançadas de configuração (um total de 36). Observe no exemplo anterior onde esta opção estava configurada como 0, apenas os valores padrão foram exibidos (um total de 10);

• user options: Permite configurar opções padrão para as sessões dos usuários.

Estas configurações podem ser sobrepostas através de comandos SET, conforme veremos ao final do artigo. Para alterar o valor de uma configuração, primeiramente devemos executar sp_configure, passando como parâmetros a configuração que desejamos alterar e o novo valor.No exemplo a seguir alteramos o valor da configuração show advanced options para um:

Página 2 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 3: Configurando o SQL Server 2000 com T-SQL

Isto não é tudo, se solicitarmos os atributos de show advanced option após sua alteração, podemos verificar que o valor foi alterado em config_value, mas ainda não está em execução (run_value se encontra como 0):

Para efetivarmos de fato uma alteração, devemos executar reconfigure:

A partir de então a configuração show advanced options passa a estar ativa:

Página 3 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 4: Configurando o SQL Server 2000 com T-SQL

Se executarmos sp_configure novamente, vamos visualizar agora, além das configurações padrão, as configurações avançadas:

Página 4 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 5: Configurando o SQL Server 2000 com T-SQL

Reconfigure pode ainda receber o parâmetro WITH OVERRIDE, que deve ser utilizada apenas na alteração do parâmetro allow updates, é uma medida de segurança. Porém algumas configurações só se tornam ativas após o servidor ser reiniciado. Nestes casos, reconfigure não vai surtir efeito. Veja a relação de configurações que necessitam que o servidor seja reinciado: affinity mask, awe enabled, c2 audit mode, fill factor, lightweight pooling, locks,max worker threads, media retention, open objects, priority boost, remote access, scan for startup procs, set working set size e user connections. Opções avançadas normalmente não necessitam intervenção de usuário, por isso não vamos descrevê-las aqui, caso você necessite alterar algumas destas configurações, consulte o BOL.

Configurações de banco de dadosConfigurações de banco de dados afetam apenas o banco onde foram aplicadas. Para alteraralguma configuração a nível de banco de dados, devemos usar Alter Database, informando o nome do banco de dados, a configuração e o novo valor, por exemplo, no código abaixo alteramos a opção AUTO_SHRINK como OFF (desabilitada):

Página 5 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 6: Configurando o SQL Server 2000 com T-SQL

Para verificar o estado de uma especifica, utilizamos a função DATABASEPROPERTYEX,passando como parâmetros o banco de dados e um valor especifico referente a configuração, por exemplo, para verificarmos o estado da propriedade alterada anterior podemos executar:

Configurações cujos estados podem ser ON ou OFF, possuem sua constante de verificação iniciada com “Is” seguida da configuração. Veremos adiante todos os valores possíveis. Os comandos para tratar configurações de banco de dados não são tão intuitivos como o de servidor, onde com um único comando podemos verificar ou alterar uma configuração. Em nível de banco de dados, temos que utilizar comandos diferentes para ler e alterar as configurações. As constantes utilizadas para as duas operações também são diferentes, e para piorar só podemos verificar uma configuração de cada vez, não existem um comando que liste todas as configurações e seu valor atual. Na verdade o SQL Server dispõe de um comando semelhante asp_configure, é a procedure sp_dboptions, que permite ler uma ou todas as configurações bem como alterá-las.

Porém esta procedure só existe por compatibilidade com versões anteriores do SQL Server, além disso, ela não permite alterar ou ler todas as opções existentes, por estes motivos recomendanão utilizá-la.

As configurações de um banco de dados podem ser divididas em cinco categorias, são elas: Opções automáticas (Auto options), Opções de Cursor (Cursor options), Opções de Restauração (Recovery options), Opções de SQL (SQL options) e Opções de Estado (State options). Vamos ver todas as configurações possíveis em nível de banco de dados, divididas em suas respectivas categorias:

Opções AutomáticasAUTO_CLOSE

Com esta configuração ativa (ON), o banco de dados será fechado automaticamente sempre que não houverem usuários conectados. Default ON na edição MSDE, OFF para as demais.

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

Página 6 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 7: Configurando o SQL Server 2000 com T-SQL

IsAutoClose

AUTO_CREATE_STATISTICS

Quando ativa (ON), o SQL Server cria automaticamente estatísticas que são utilizadas pelootimizador de consultas. Default ON.

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsAutoCreateStatistics

AUTO_UPDATE_STATISTICS

Quando ativa (ON), as estatísticas de uma tabela são automaticamente atualizadas sempre quehouver alteração nos dados da mesma. Default: ON

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsAutoUpdateStatistics

AUTO_SHRINK

Com esta opção ativa (ON), o SQL Server automaticamente remove espaço inativo do banco de dados, sempre que este ultrapassar 25 % do tamanho do banco. Default: ON para a edição Personal, OFF para todas as demais.

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsAutoShrink

Opções de CursorCURSOR_CLOSE_ON_COMMIT

Com esta opção ativa (ON), um cursor é fechado automaticamente quando um transação éconfirmada, caso contrário o cursor continuara aberto até a o mesmo ser explicitamente fechado ou a conexão for encerrada. Default: OFF

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsCloseCursorsOnCommitEnabled

CURSOR_DEFAULT LOCAL | GLOBAL

Esta opção define o escopo default de um cursor, quando este escopo não for definido na sentença de criação do cursor.Default: GLOBAL

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsLocalCursorsDefault

Opções de RestauraçãoRECOVERY FULL | BULK_LOGGED | SIMPLE

Define o modo de restauração do Banco de dados, que pode ser FULL, BULK_LOGGED, SIMPLE Default: Simple para as edições Personal e MSDE, e FULL para as demais dições.

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

Recovery.

Página 7 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 8: Configurando o SQL Server 2000 com T-SQL

TORN_PAGE_DETECTION

Determina se o SQL Server deve detectar operações de entrada/saída incompletas, normalmentecausadas por falta de energia. Default: ON

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsTornPageDetectionEnabled

Opções de SQLANSI_NULL_DEFAULT

Na criação de uma tabela, a restrição NULL/NOT NULL determina se o campo deverá ou não aceitar valores nulos. ANSI_NULL_DEFAULT determina o valor default para esta propriedade, quando NULL ou NOT NULL não for especificado.

Default: NOT NULL

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsAnsiNullDefault

ANSI_NULLS

Quanto ativa (ON), a comparação com valores nulos resulta sempre em nulo. Default: OFF

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsAnsiNullsEnabled

ANSI_PADDING

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsAnsiPaddingEnabled

ANSI_WARNINGS

Quanto ativa (ON), erros de divisão por zero ou valores nulos em junções, são Reportados Default: OFF, porém ON para conexões via OLE DB ou ODBC

Valor utilizado para verificação com a função DATABASEPROPERTYEX: IsAnsiWarningsEnabled

ARITHABORT

Quanto ativa (ON), um erro de overflow ou divisão por zero causa o cancelamento do lote.

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsArithmeticAbortEnabled

NUMERIC_ROUNDABORT

Quando ativa (ON), a perda de precisão em uma operação matemática causa gera um erro.

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsNumericRoundAbortEnabled

CONCAT_NULL_YIELDS_NULL

Página 8 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 9: Configurando o SQL Server 2000 com T-SQL

Quando inativa (OFF), um valor null é tratado como vazio em operações de concatenação de caracteres Default: OFF, porém ON para conexões via OLE DB e ODBC Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsNullConcat

RECURSIVE_TRIGGERS

Quanto ativa (ON), a chamada recursiva de um trigger é permitida. Default: OFF

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

IsRecursiveTriggersEnabled

Opções de EstadoOFFLINE | ONLINE

Quando ONLINE, o banco de dados esta aberto, quando OFFLINE, o banco de dados esta fechado e não pode ser alterado. Default: ONLINE

Valor utilizado para verificação com a função DATABASEPROPERTYEX: Status

READ_ONLY | READ_WRITE

Quando READ_ONLY, os dados do banco podem apenas serem lidos, mas não alterados. Default: READ_WRITE

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

Updateability

SINGLE_USER | RESTRICTED_USER | MULTI_USER

Como SINGLE_USER, apenas um usuário pode se conectar ao banco de dados de cada vez.Com RESTRICTED_USER, apenas usuários membros dos papeis db_owner,dbcreator ou sysadmin podem conectar-se ao banco,sem restrições quanto ao número. Default: MULTI_USER

Valor utilizado para verificação com a função DATABASEPROPERTYEX:

UserAccess

WITH <termination>

Determina como as transações abertas serão encerradas quando um banco de dados alternar entre diferentes modos. As opções possíveis são ROLLBACK

AFTER integer [SECONDS]

Após o numero especificado de segundos, todas as transações de usuários que terão sua conexão encerrada pela mudança de estados, serão revertidas

(roolback)

ROLLBACK IMMEDIATE

As transações de usuários que terão sua conexão encerrada pela mudança de estados, serão revertidas (roolback) imediatamente;

NO_WAIT

Página 9 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 10: Configurando o SQL Server 2000 com T-SQL

A alteração do estado do banco falha se existirem usuários conectados, de acordo com o tipo de transição (SINGLE_USER ou RESTRICTED_USER)

Configurações de sessãoO mais baixo nível de configuração que iremos estudar é o de sessão, valido durante a conexão. A configuração de sessão sobrescrever uma configuração equivalente em nível de banco de dados. Algumas destas configurações são definidas pelo provedor OLE DB, sendo possível alterálas. Podemos ainda alterar nativamente uma configuração utilizando SET, por exemplo:

Observe que a sintaxe é simples e semelhante às configurações de banco de dados. Para ler a valores de configuração da sessão, devemos utilizar o comando DBCC (Database Console Command) USEROPTIONS, observe:

As configurações de sessão estão divididas nas seguintes categorias: Data e Hora (Date and TimeStatements), Bloqueio (Locking Statements), Diversos (Miscellaneous Statements), Execução de

Página 10 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 11: Configurando o SQL Server 2000 com T-SQL

consultas (Query Execution Statements), Configurações SQL-92 (SQL-92 Settings Statements), estatisticos (Statistics Statements), Transações (Transactions Statements). Vamos ver as principais configurações de cada categoria, para um lista completa consulte o BOL:

Data e HoraSET DATEFIRST

Determina qual o primeiro dia da semana, o valor pode ser de um 1 a 7, um equivale a segunda, dois a terça etc. Sete equivale a domingo (este é o valor default). Podemos usar a variável global @@DATEFIRST para verificar o valor corrente

SET DATEFORMAT

Determina a ordem do dia, Mês e ano na entrada de um valor do tipo data. Devemos utilizar Dpara dia, M para mês e Y para ano. Esta configuração afeta apenas a entrada de datas, são a saída.

BloqueioSET DEADLOCK_PRIORITY

Determina qual a prioridade da sessão no caso da ocorrência de um deadlock, os valores podem ser Low ou Normal. Se for determinado um valor Low, na ocorrência de um deadlock a transação é desfeita e uma mensagem de erro é retornada.

SET LOCK_TIMEOUT

Determina por quanto tempo, em milesegundos, a sessão vai aguardar pela resolução de um deadlock.

DiversosSET CONCAT_NULL_YIELDS_NULL

Sobrescreve a configuração de mesmo nome do banco de dados

SET CURSOR_CLOSE_ON_COMMIT

Sobrescreve a configuração de mesmo nome do banco de dados

SET IDENTITY_INSERT

Permite que um valor seja implicitamente inserido em uma coluna identity

SET LANGUAGE

Determina o idioma utilizado na sessão, o que influencia no formato da data e em

mensagens do sistema

SET QUOTED_IDENTIFIER

Sobrescreve a configuração de mesmo nome do banco de dados

Execução de consultasSET ARITHABORT

Sobrescreve a configuração de mesmo nome do banco de dados

Página 11 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 12: Configurando o SQL Server 2000 com T-SQL

SET ARITHIGNORE

Sobrescreve a configuração de mesmo nome do banco de dados

SET FMTONLY

Nenhuma linha de dados é retornada, apenas as definições dos campos.

SET NOCOUNT

O numero de linha afetada pela transação não é mais informada.

SET NOEXEC

Compila a consulta mas não a executa.

SET NUMERIC_ROUNDABORT

Sobrescreve a configuração de mesmo nome do banco de dados.

SET PARSEONLY

Faz uma checagem sintática do código, sem compilar ou executar.

SET ROWCOUNT

Provoca o fim da consulta quando um numero determinado de linha for atingido,

semelhante ao uso de TOP

SQL-92SET ANSI_PADDING

Sobrescreve a configuração de mesmo nome do banco de dados.

SET ANSI_WARNINGS

Sobrescreve a configuração de mesmo nome do banco de dados

EstatísticasSET FORCEPLAN

Faz com que o otimizador de consulta do sql server processe uma junção na mesma ordem em que as tabelas estão na clausula from da consulta

SET SHOWPLAN_ALL

Ao invés de executar a consulta, o SQL Server retorna informações da execução da consulta e dos recursos utilizados para tal

SET SHOWPLAN_TEXT

Ao invés de executar a consulta o SQL Server retorna informações da execução da mesma

SET STATISTICS IO

O SQL Server gera informações de entrada e saída em disco causado pela consulta

SET STATISTICS PROFILE

Página 12 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14

Page 13: Configurando o SQL Server 2000 com T-SQL

Mostra informações de perfil da consulta

TransaçõesSET IMPLICIT_TRANSACTIONS

Coloca a sessão em modo de transações implícitas.

SET TRANSACTION ISOLATION LEVEL Determina o tipo de bloqueio.

Últimos artigos relacionados:

Visual Studio Team System 2008 DataBase Edition Par te IV: Geração Automática de Dados

Visual Studio Team System 2008 DataBase Edition Par te III: Comparação de Dados

Visual Studio Team System 2008 DataBase Edition Par te II: Comparando Schemas

Visual Studio Team System 2008 DataBase Edition Par te I: Introdução

Transact SQL e controle de Fluxo

Fernando Amaral - Campo Grande - MS Copyright © 2008

Página 13 de 13http://www.fernandoamaral.com.br/Default.aspx?Artigo=14