AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / user-1782

Michael J Swart's questions

Martin Hope
Michael J Swart
Asked: 2024-11-26 23:45:27 +0800 CST

Como adicionar uma restrição de verificação confiável rapidamente

  • 9

Estou adicionando uma restrição de verificação a uma tabela grande porque quero prepará-la para transformá-la em uma tabela particionada usando a alternância de partições.

A verificação é uma verificação de desigualdade simples em uma coluna e há um índice nessa coluna. Mas quando adiciono a restrição, o SQL Server ainda executa uma varredura de toda a tabela. É possível adicionar a restrição rapidamente e mantê-la confiável? Eu esperava que fosse possível por causa do índice.

Aqui está uma reprodução que mostra essa digitalização:

USE tempdb;
GO

SELECT * 
INTO MY_MESSAGES
FROM sys.messages;

CREATE CLUSTERED INDEX IX_MY_MESSAGES ON dbo.MY_MESSAGES(message_id);

SET STATISTICS IO ON;
ALTER TABLE dbo.MY_MESSAGES
    ADD CONSTRAINT CK_mymessages CHECK (message_id < 50000);
SET STATISTICS IO OFF;

DROP TABLE IF EXISTS dbo.MY_MESSAGES;

Isso é mostrado na aba de mensagens:

Table 'MY_MESSAGES'. Scan count 1, logical reads 10955
sql-server
  • 3 respostas
  • 64 Views
Martin Hope
Michael J Swart
Asked: 2023-08-15 01:32:28 +0800 CST

Posso ativar o controle de versão do sistema (tabelas temporais) em uma tabela grande sem verificar a tabela?

  • 10

Atualmente, os documentos da Microsoft fornecem um exemplo de como habilitar tabelas temporais em tabelas existentes em ALTER TABLE, exemplos de controle de versão do sistema: A. Adicionar controle de versão do sistema a tabelas existentes

Usando a sintaxe lá, mas especificando um padrão constante, tenho:

ALTER TABLE InsurancePolicy
ADD PERIOD FOR SYSTEM_TIME (ValidFrom, ValidTo),
ValidFrom datetime2 GENERATED ALWAYS AS ROW START HIDDEN NOT NULL
--    DEFAULT SYSUTCDATETIME(), /* default specified in the docs */
    DEFAULT CONVERT(DATETIME2, '2023-08-14') /* use a constant default */
ValidTo datetime2 GENERATED ALWAYS AS ROW END HIDDEN NOT NULL
    DEFAULT CONVERT(DATETIME2, '9999-12-31 23:59:59.99999999') ;

Quando executo esta instrução, posso observar um evento SP:StatementStartingcom TextData:SELECT [ValidFrom],[ValidTo] FROM [dbo].[InsurancePolicy]

Isso me diz que o SQL Server está olhando para esses dados (provavelmente para determinar que ValidTo e ValidFrom estão em conformidade com algumas restrições).

O bloqueio de modificação do esquema + a verificação da tabela está me incomodando.

Em teoria, a varredura é desnecessária porque os valores são constantes. Nos documentos da Microsoft, exemplo B, eles mencionam "(um certo conjunto de verificações de dados ocorre em segundo plano)" Mas talvez essas verificações sejam desnecessárias quando as colunas são novas. Então:

Existe alguma maneira de habilitar tabelas temporais online? Sem colocar um cadeado sch-m na mesa enquanto a mesa é digitalizada?

sql-server
  • 1 respostas
  • 156 Views
Martin Hope
Michael J Swart
Asked: 2019-04-18 11:16:14 +0800 CST

Existe algo como um gatilho de failover do Grupo de Disponibilidade?

  • 6

Existe algo como um gatilho para failovers do Grupo de Disponibilidade?

Eu quero que uma determinada ação aconteça quando um AG falha. Especificamente, quero ativar uma configuração de banco de dados (ativando o RCSI). Quero fazer isso em um failover para minimizar a interrupção das cargas de trabalho 24 horas por dia, 7 dias por semana, e as janelas de manutenção programada são difíceis de encontrar.

Eu sei que sp_procoptionpode ser usado para marcar procedimentos como procedimentos de inicialização. Isso parece funcionar para clusters de failover, mas não para grupos de disponibilidade.

Eu considerei adicionar um alerta ( sp_add_alert) em message_id=26069 para responder a ações de failover com um trabalho de agente sql. Mas isso parece menos direto e na prática parece lento

sql-server
  • 2 respostas
  • 1028 Views
Martin Hope
Michael J Swart
Asked: 2019-02-15 13:28:56 +0800 CST

Por que meus índices não clusterizados usam mais espaço quando excluo linhas?

  • 26

Eu tenho uma tabela grande com 7,5 bilhões de linhas e 5 índices. Quando excluo aproximadamente 10 milhões de linhas, percebo que os índices não clusterizados parecem aumentar o número de páginas em que estão armazenados.

Eu escrevi uma consulta dm_db_partition_statspara relatar a diferença (depois - antes) nas páginas:

dm_db_partition_stats deltas

O índice 1 é o índice clusterizado, o índice 2 é a chave primária. Os outros são não agrupados e não exclusivos.

Por que as páginas estão aumentando nesses índices não agrupados?
Eu esperava que os números, na pior das hipóteses, permanecessem os mesmos.
Vejo que os contadores de desempenho relatam um aumento nas divisões de página durante a exclusão.

Ao excluir, o registro fantasma precisa ser movido para outra página? Isso tem a ver com "singulares"?

Estamos no meio do lançamento do RCSI, mas agora o RCSI está desativado.

É um nó primário em um grupo de disponibilidade. Eu sei que o instantâneo é usado de alguma forma em secundários. Eu ficaria surpreso se isso fosse relevante. Eu pretendo investigar isso (procurando a saída da página dbcc) para saber mais. Aqui está esperando que alguém tenha visto algo semelhante.

sql-server sql-server-2014
  • 1 respostas
  • 2804 Views
Martin Hope
Michael J Swart
Asked: 2018-07-20 07:40:42 +0800 CST

Posso criar uma nova coluna com padrão e uma chave estrangeira como uma operação somente de metadados?

  • 4

É possível criar uma nova coluna com um valor padrão como uma operação somente de metadados (não uma operação de tamanho de dados):

ALTER TABLE dbo.MyReallyBigTable
ADD MyThingId INT NOT NULL 
    DEFAULT 0;

Mas é possível também criar uma coluna que faça referência a outra tabela como uma operação somente de metadados?

ALTER TABLE dbo.MyReallyBigTable
ADD MyThingId INT NOT NULL 
    DEFAULT 0 
    REFERENCES dbo.MyThing(MyThingId);

Em teoria é possível porque deve haver apenas um valor para verificar na tabela referenciada. No entanto, no meu exemplo, a criação da chave estrangeira parece ser uma operação de tamanho de dados.

sql-server
  • 1 respostas
  • 455 Views
Martin Hope
Michael J Swart
Asked: 2016-08-13 09:37:30 +0800 CST

Por que o sql_text "select @@trancount" está em uma transação aberta, mas adormecida?

  • 3

Usando o SQL Server Management Studio, abra uma janela de consulta e execute

BEGIN TRAN

Em outra janela execute

select [text],
from sys.sysprocesses
cross apply sys.dm_exec_sql_text(sql_handle)
where status = 'sleeping'
and open_tran = 1

Eu vejoselect @@trancount

O que há com isso? Quem está contando as transações? Isso é coisa do Management Studio?

sql-server sql-server-2014
  • 3 respostas
  • 2226 Views
Martin Hope
Michael J Swart
Asked: 2015-07-02 08:46:07 +0800 CST

Como soluciono o erro 26: "Erro ao localizar o servidor/instância especificado"

  • 6

Estou tentando configurar o acesso TCP à minha instância nomeada do SQL Server (chamada SQL2012). Eu uso o estúdio de gerenciamento para conectar ao mecanismo de banco de dados. Eu digito o nome do servidor: "tcp:localhost\SQL2012" e recebo esta mensagem de erro:

(provedor: SQL Network Interfaces, erro: 26 - Erro ao localizar o servidor/instância especificado)

Este post da equipe do SQL Server parece ser muito útil, nele eles sugerem testar o serviço SqlBrowser usando PortQry. Quando faço isso, recebo esta informação:

Querying target system called:

 localhost

Attempting to resolve name to IP address...


Name resolved to 127.0.0.1

querying...

UDP port 1434 (ms-sql-m service): LISTENING or FILTERED

Sending SQL Server query to UDP port 1434...

Server's response:

ServerName MSWART7
InstanceName SQL2012
IsClustered No
Version 11.0.5058.0
tcp 52329

   ♥K   K P☺K 5 - 2 1 qK 1 4  rK 8 7 0☺    1 qK

==== End of SQL Server query response ====

E com certeza, consigo me conectar ao banco de dados quando especifico o nome do servidor "tcp:localhost,52329"

Não tenho certeza do que estou perdendo. O SQL Browser parece estar funcionando e as portas e firewalls parecem estar abertas ou irrelevantes (estou tentando me conectar ao localhost).

Onde eu olho em seguida?

sql-server sql-server-2012
  • 1 respostas
  • 33904 Views
Martin Hope
Michael J Swart
Asked: 2014-11-01 07:06:51 +0800 CST

Uma consulta que lista todos os usuários mapeados para um determinado login

  • 26

Ao observar as propriedades de um determinado login, é possível ver uma lista de usuários mapeados para esse login: insira a descrição da imagem aqui

Criei o perfil do SQL Server Management Studio (SSMS) e vejo que o SSMS se conecta a todos os bancos de dados um de cada vez e recupera informações de sys.database_permissions

É possível escrever uma única consulta que recupere as informações de mapeamento do usuário mostradas acima ou sou forçado a usar um cursor ou sp_MSforeachdb ou algo parecido?

sql-server sql-server-2008
  • 8 respostas
  • 90570 Views
Martin Hope
Michael J Swart
Asked: 2014-10-08 06:22:33 +0800 CST

Como faço para continuar após uma falha no SSIS

  • 14

Eu quero implementar algo como o seguinte: insira a descrição da imagem aqui

Neste pacote, desejo percorrer uma lista de nomes de bancos de dados, modificando dinamicamente as configurações do gerenciador de conexões.

No entanto, a primeira falha em "Test Connection" interromperá e falhará na execução do pacote.

Mas eu gostaria de continuar meu loop Foreach. Tenho a sensação de que isso deve ser possível (caso contrário, qual é o caso de uso dessas setas vermelhas de falha?)

As coisas que tentei incluem mexer com "MaximumErrorCount".

ssis-2012
  • 2 respostas
  • 17120 Views
Martin Hope
Michael J Swart
Asked: 2013-11-07 09:43:16 +0800 CST

Posso criar um tipo de tabela definido pelo usuário e usá-lo na mesma transação?

  • 14

Quando executo o seguinte (no estúdio de gerenciamento, o GO separa os comandos em lotes)

use tempdb

begin tran
go

CREATE TYPE dbo.IntIntSet AS TABLE(
    Value0 Int NOT NULL,
    Value1 Int NOT NULL
)
go

declare @myPK dbo.IntIntSet;
go

rollback

Recebo uma mensagem de erro de impasse. Meu processo entrou em um impasse consigo mesmo. Eu vi esse comportamento em 2008, 2008R2 e 2012.

Existe uma maneira de usar meu tipo recém-criado dentro da mesma transação em que foi criado?

sql-server sql-server-2012
  • 3 respostas
  • 12141 Views
Martin Hope
Michael J Swart
Asked: 2013-09-06 11:16:27 +0800 CST

Qual será o tamanho inicial do(s) meu(s) arquivo(s) de dados tempdb após a reinicialização?

  • 4

sys.database_filese sys.sysfilesrelatar o tamanho, mas esse é apenas o tamanho atual do arquivo. Existe uma maneira de descobrir qual será o tamanho inicial dos arquivos de dados tempdb após sua recriação durante a reinicialização do sistema?

sql-server sql-server-2008
  • 2 respostas
  • 8334 Views
Martin Hope
Michael J Swart
Asked: 2013-04-02 07:07:08 +0800 CST

Como posso demonstrar a atividade do log de transações?

  • 6

Digamos que eu tenha a seguinte configuração:

use tempdb
go

set nocount on
go

create table MyTest
(
    Column1 varchar(100),
    Column2 text 
)
go

insert mytest (Column1, Column2)
select REPLICATE('a', 100), REPLICATE('a', 100)
from sys.syscolumns a, sys.syscolumns b

Eu gostaria de converter cada uma das colunas para varchar(max) assim:

-- processes every page:
alter table mytest
alter column Column1 varchar(max)

-- processes only metadata:
alter table mytest
alter column Column2 varchar(max)

Como posso demonstrar que o primeiro comando processa toda a tabela enquanto o segundo comando processa apenas metadados. Eu estava pensando em usar SET STATISTICS IO, que relata milhares de leituras lógicas para o primeiro comando e nada para o outro. Eu também estava pensando em usar DBCC LOG ou fn_dblog. Mas eu não tinha certeza de como interpretar ou vincular os resultados às consultas que fiz.

sql-server
  • 2 respostas
  • 364 Views
Martin Hope
Michael J Swart
Asked: 2012-10-16 06:32:36 +0800 CST

Como encontro estatísticas de IO (por índice) para consultas em andamento

  • 5

Ao executar SET STATISTICS IO ON antes de executar uma consulta SQL, posso ter uma ideia do número de leituras lógicas executadas em cada índice após a conclusão da consulta.

Olhando para a exibição sys.dm_exec_requests, posso ter uma ideia do número de leituras lógicas (total) que foram executadas até agora para qualquer consulta em andamento.

Como posso ter uma ideia de quantas leituras lógicas foram realizadas em cada índice até agora para consultas em andamento?

sql-server sql-server-2008
  • 3 respostas
  • 504 Views
Martin Hope
Michael J Swart
Asked: 2012-03-21 11:31:16 +0800 CST

Como posso adicionar uma coluna rowversion a uma tabela grande com tempo de inatividade mínimo

  • 24

Usando o SQL Server 2008 e posterior, desejo adicionar uma coluna de versão de linha a uma tabela grande, mas quando simplesmente

ALTER TABLE [Tablename]
ADD Rowversion [Rowversion] NOT NULL

Então a tabela fica indisponível para atualizações por muito tempo.

Quais estratégias posso usar para reduzir esse tempo de inatividade? Vou considerar qualquer coisa. Quanto mais simples melhor, claro, mas vou considerar qualquer estratégia.

Meu pensamento é que, como último recurso, eu poderia manter uma tabela de preparação de cópia mantida por gatilhos e, em seguida, sp_renomear a tabela de preparação para a tabela original. Mas espero algo mais simples/fácil.

sql-server sql-server-2008
  • 3 respostas
  • 18642 Views

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve