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-1896

Jon of All Trades's questions

Martin Hope
Jon of All Trades
Asked: 2018-08-29 13:59:01 +0800 CST

Pode-se fazer o cluster MySQL em um índice exclusivo em vez de uma chave primária?

  • 2

A documentação do MySQL afirma que:

Quando você define uma PRIMARY KEY em sua tabela, o InnoDB a usa como o índice clusterizado.

Mas essa não é a única possibilidade, você pode agrupar um índice exclusivo:

Se você não definir uma PRIMARY KEY para sua tabela, o MySQL localiza o primeiro índice UNIQUE onde todas as colunas de chave são NOT NULL e o InnoDB o usa como o índice clusterizado.

Parece que se eu primeiro criar um índice exclusivo em uma tabela, ele será marcado como clusterizado; Posso então criar uma chave primária e ela não será agrupada:

CREATE TABLE Tmp_CUQTest
(
ID1 INT NOT NULL,  -- Desired clustering field
ID2 INT NOT NULL   -- Desired PK field
);

CREATE UNIQUE INDEX CUC_Tmp ON Tmp_CUQTest (ID1);
ALTER TABLE Tmp_CUQTest ADD CONSTRAINT PRIMARY KEY PK_Tmp (ID2);

No entanto, quando inspeciono a tabela resultante, minhas esperanças são frustradas:

Key      Type               Uni  Columns
PRIMARY  BTREE (clustered)  YES  ID2
ID1      BTREE              YES  ID1

Outra pergunta aqui no DBA.SE implica que criar um índice como parte do CREATE TABLEscript, e não depois, como uma CREATE INDEXdeclaração separada, pode fazer a diferença. No entanto, recebo o mesmo resultado.

Existe uma maneira de forçar o MySQL a agrupar em um índice exclusivo de minha escolha, que não seja a chave primária, ou essa "opção de fallback" se aplica apenas a tabelas sem chave primária?

mysql mysql-5.7
  • 2 respostas
  • 2040 Views
Martin Hope
Jon of All Trades
Asked: 2018-07-20 13:25:08 +0800 CST

Posso calcular ROW_NUMBER() apenas para registros consecutivos?

  • 8

Eu preciso calcular números de sequência para valores consecutivos. Isso soa como um trabalho para ROW_NUMBER()!

DECLARE @Data TABLE
    (
    Sequence    TINYINT NOT NULL PRIMARY KEY,
    Subset  CHAR(1) NOT NULL
    )
INSERT INTO @Data (Sequence, Subset) VALUES
    (1, 'A'),
    (2, 'A'),
    (3, 'A'),
    (4, 'B'),  -- New subset
    (5, 'B'),
    (6, 'A')   -- New subset

SELECT
    Sequence, Subset,
    ROW_NUMBER() OVER (PARTITION BY Subset ORDER BY Sequence) AS SeqWithinGroup
FROM
    @Data

Eu esperava que a PARTITIONcláusula redefinisse a contagem a cada alteração em Subset, mas, em vez disso, o SQL Server coleta todos os valores para um determinado Subsetvalor e os numera. Aqui está o que eu esperava e o que recebi:

Sequence Subset Expected Actual
-------- ------ -------- -----
1        A      1        1
2        A      2        2
3        A      3        3
4        B      1        1
5        B      2        2
6        A      *1*      *4*

Quando o SQL atinge a linha 6, ele retoma a numeração do subconjunto "A", enquanto eu o vejo como a primeira linha de um novo subconjunto que também é chamado de "A".

Existe uma maneira de fazer a ROW_NUMBER()partição estritamente, em vez do comportamento padrão?

Há várias perguntas aqui e em outros lugares sobre a contagem de valores consecutivos com SQL. No entanto, ainda não vi um que aborda valores repetidos no PARTITION BY(s) campo(s). A maioria lida apenas com valores crescentes, geralmente datas.

sql-server sql-server-2017
  • 3 respostas
  • 7162 Views
Martin Hope
Jon of All Trades
Asked: 2018-02-14 14:57:59 +0800 CST

O link do SQL Server para o MySQL relata "usando senha: não"

  • 1

Eu gostaria de acessar um banco de dados MySQL de dentro do SQL Server. Eu criei um DSN do sistema e ele testa OK. Eu criei um servidor vinculado no SQL Server:

  • Provedor = Provedor Microsoft OLE DB para Drivers ODBC
  • Nome do produto = MySQL
  • Fonte de dados = (o nome do DSN)
  • Segurança = uma entrada para cada um dos meus logins locais, com meu nome de usuário e senha do MySQL

No entanto, se eu tentar testá-lo, recebo esta mensagem de erro:

Cannot initialize the data source object of OLE DB provider "MSDASQL" for linked
server "X".
OLE DB provider "MSDASQL" for linked server "X" returned message "[MySQL][ODBC
5.3(w) Driver]Access denied for user 'me'@'localhost' (using password: NO)".
(Microsoft SQL Server, Error: 7303)

A senha é definitivamente definida e funciona muito bem no MySQL Workbench. É um administrador no MySQL. Ambas as máquinas são locais. Tentei adicionar meus creds como padrão ("para um login que não está na lista, use este contexto de segurança"); nenhuma mudança.

Configurei meu DSN como de 64 bits, correspondendo ao meu sistema operacional, usando o "MySQL ODBC 5.3 Unicode Driver", que eu suponho que foi instalado com o mecanismo MySQL e/ou MySQL Workbench. O aplicativo ODBC de 32 bits oferece os drivers usuais em português (por que português?!) - Access, dBase, Excel, Paradox, etc.

sql-server mysql
  • 2 respostas
  • 2208 Views
Martin Hope
Jon of All Trades
Asked: 2017-06-23 11:57:43 +0800 CST

Como faço para aumentar o armazenamento disponível para uma instância do SQL Server no AWS RDS?

  • 2

Os documentos da Amazon afirmam que você não pode aumentar o armazenamento alocado para uma instância do SQL Server RDS :

Observe que você não pode alterar a capacidade de armazenamento nem o tipo de armazenamento para uma instância de banco de dados do SQL Server devido a limitações de armazenamento distribuído anexado a um ambiente do Windows Server.

Bem, então acho que você tira um instantâneo e o restaura para uma nova instância com mais armazenamento ... exceto que parece ser impossível também:

O Amazon RDS não oferece suporte à alteração da configuração de armazenamento de uma instância de banco de dados do Microsoft SQL Server ao restaurar de um snapshot de banco de dados.

Essa citação pode se referir à alteração entre SSD geral e E/S provisionada, mas não há --allocated-storage parâmetro para restore-db-instance-from-db-snapshot, portanto, parece impossível ao restaurar um instantâneo. Nesse caso, simplesmente especificar um novo número de IOPS gera um erro:

Não é possível restaurar esta instância com base no sistema operacional Windows porque a solicitação tem um iops diferente do backup.

Qual é a maneira mais conveniente de aumentar o espaço de armazenamento alocado para uma instância do SQL Server? Não há nada melhor do que os Serviços de Migração de Banco de Dados nessa situação?


O suporte da Amazon confirmou que S3 e DMS são as únicas opções para SQL Server.


Esta questão foi levantada em SE . Abri esta questão provisoriamente; se houver um consenso no Meta de que não devemos duplicar as perguntas do DBA que existem em outros lugares no SO, excluirei esta.


2019: Algum tempo desde que levantei essa questão, parece que a Amazon levantou algumas restrições. Consegui redimensionar uma instância do SQL Server sem executar nenhuma etapa especial: basta editar a configuração e permitir que ela seja reinicializada.

aws amazon-rds
  • 1 respostas
  • 1965 Views
Martin Hope
Jon of All Trades
Asked: 2017-06-03 05:21:16 +0800 CST

No Amazon RDS, o que consome espaço de armazenamento além dos arquivos de banco de dados?

  • 3

Recentemente, dimensionei corretamente os dados e os arquivos de log para um banco de dados RDS, deixando apenas alguns GB de espaço não alocado. Pouco tempo depois, algo alocado, então desalocado, 1 GB da margem de erro. O que pode ter causado isso?

Todos os bancos de dados - incluindo tempdb - são minúsculos (MB) ou exatamente do tamanho que foram definidos; eles somam 197 GB, deixando 3 GB livres em uma instância de 200 GB. E ainda:

O espaço livre caiu de 3 para 1,5 GB e depois voltou

Claramente, se isso acontecer novamente em uma magnitude um pouco maior, haverá um problema. Por enquanto, posso simplesmente reduzir um dos arquivos do banco de dados para obter uma margem maior, mas gostaria de entender o que realmente aconteceu.

disk-space amazon-rds
  • 1 respostas
  • 2436 Views
Martin Hope
Jon of All Trades
Asked: 2016-07-21 14:52:04 +0800 CST

Como posso excluir um arquivo do grupo de arquivos primário?

  • 0

Ao lidar com espaço em disco fragmentado, adicionei um segundo arquivo de dados a um dos meus bancos de dados. A maioria dos dados agora está no segundo arquivo e gostaria de descartar o primeiro para simplificar as coisas. No entanto, é o arquivo de dados primário:

Msg 5020, Level 16, State 1, Line 3
The primary data or log file cannot be removed from a database.

Então, como faço para marcar o segundo arquivo como primário, para que eu possa excluir o primeiro arquivo?

Ao pesquisar esse problema no Google, vejo muitas pessoas tentando remover grupos de arquivos , mas estou apenas tentando descartar um arquivo de um grupo.

Mesma situação, mas sem o problema referente ao "arquivo de dados primário": https://stackoverflow.com/questions/2183742/remove-merge-sql-servers-database-secondary-data-file .

Semelhante, mas para arquivos de log com problemas diferentes: https://stackoverflow.com/questions/10839374/sql-server-database-has-2-log-files-and-i-want-to-remove-one-how . Estou interessado em remover um arquivo de dados.

Uma situação semelhante, mas aí o problema está em esvaziar o arquivo: http://www.sqlservercentral.com/Forums/Topic464326-5-1.aspx .

sql-server datafile
  • 1 respostas
  • 8255 Views
Martin Hope
Jon of All Trades
Asked: 2015-11-13 14:09:39 +0800 CST

Quanto tempo dura a saída de EncryptByPassPhrase (), em relação à entrada?

  • 4

Estou iniciando um projeto de criptografia, usando EncryptByPassPhrase(), principalmente em VARCHARvalores. Naturalmente, os valores criptografados são mais longos que os originais. Existe uma fórmula que posso usar para calcular quanto tempo preciso para criar os novos VARBINARYcampos, de modo a manter qualquer valor possível do VARCHARcampo original?

Por exemplo, o primeiro campo que examinei tem valores de até 37 caracteres de comprimento e os valores criptografados têm até 100 bytes; outro tem valores de até 50 caracteres e os valores criptografados são de até 124 bytes. No entanto, valores tão curtos quanto dois ou três caracteres podem criptografar até 76 bytes. Se eu dimensionar os novos campos como 75 + X bytes, terei espaço para armazenar a versão criptografada de qualquer valor de texto possível de comprimento X ou menos?

sql-server sql-server-2014
  • 3 respostas
  • 3447 Views
Martin Hope
Jon of All Trades
Asked: 2014-10-31 08:18:01 +0800 CST

O atalho Ctrl-F1 parou de funcionar no SSMS 2014

  • 3

Eu tenho o atalho de consulta vinculado Ctrlhá anos (essa técnica é descrita em Como atribuir CTRL+F1 a sp_whoisactive no ssms 2012? ). Há alguns dias parou de funcionar. Se eu pressionar - , o SQL Studio agora iniciará os Manuais Online no Internet Explorer. Alguém mais viu esse problema? Existe uma correção?F1sp_whoisactiveCtrlF1

Confirmei que o atalho ainda está definido. Alterar o atalho não corrige o problema Ctrl- F1ainda inicia o BoL. A alternância do SQL Studio não teve efeito.

FWIW, isso aconteceu depois que a TI reiniciou o servidor enquanto eu estava logado, então o SSMS não desligou de forma limpa.

É claro que posso usar outro atalho de teclado (embora, infelizmente, pareça Ctrl- 1está codificado para sp_help), apenas incomoda meu TOC usar um atalho diferente para o mesmo comando em máquinas diferentes.

ssms keyboard-shortcuts
  • 1 respostas
  • 3135 Views
Martin Hope
Jon of All Trades
Asked: 2014-09-23 12:28:05 +0800 CST

Como concedo o privilégio de conectar-se ao SSIS?

  • 16

Tentando executar pacotes SSIS usando dtexec.exe, recebi esta mensagem de erro:

Could not load package "D:\Filename.dtsx" because of error 0xC00160AE.
Description: Connecting to the Integration Services service on the computer "" failed
with the following error: "Access is denied."

By default, only administrators have access to the Integration Services service.  On
Windows Vista and later, the process must be running with administrative privileges in
order to connect to the Integration Services service. See the help topic for information
on how to configure access to the service.

Normalmente, para a Microsoft, não há esclarecimento sobre qual tópico de ajuda contém essas informações. Certamente a dtexec /?ajuda não.

A execução do dtexec a partir de um prompt de comando iniciado com privilégios de administrador ou de um aplicativo com privilégios de administrador não resolveu o problema.

ssis permissions
  • 2 respostas
  • 50239 Views
Martin Hope
Jon of All Trades
Asked: 2014-06-20 10:55:59 +0800 CST

Qual é a diferença entre ALL_PROCEDURES e DBA_PROCEDURES e outras tabelas de esquema?

  • 0

Recentemente, não consegui encontrar um procedimento conhecido ao pesquisar ALL_PROCEDURESe, por capricho, tentei DBA_PROCEDURES: ei, aí está. As páginas doc ( ALL_ ; DBA_ ) dizem "... lista todas as funções e procedimentos junto com suas propriedades associadas." A Oracle parece ter uma definição curiosa de "todos".

Estou postando isso em DBA em vez de SO, embora seja uma questão bastante básica, com base no fato de que o gerenciamento de esquema geralmente é uma função de DBA e não uma função de desenvolvedor.

oracle information-schema
  • 1 respostas
  • 533 Views
Martin Hope
Jon of All Trades
Asked: 2013-08-27 12:05:39 +0800 CST

Quais etapas são necessárias para reiniciar com segurança uma máquina que hospeda o Microsoft SQL Server?

  • 30

Existem etapas especiais necessárias para evitar a corrupção de dados ao reiniciar um servidor que hospeda uma instância do MS SQL Server?

Por exemplo, encontrei recentemente a recomendação de interromper o serviço SQL manualmente. Meu entendimento é que isso é tratado pelo shutdownprocesso do Windows.

Tenho certeza de que há um zilhão de passos que pessoas individuais podem recomendar, como o que acabei de mencionar, mas gostaria de evitar repetir práticas obsoletas ou supersticiosas . Existem recomendações da Microsoft ou padrões generalizados do setor?


Esta pergunta está relacionada ao procedimento de curto prazo de reinicialização de uma máquina. Há outra questão em relação ao procedimento de longo prazo de garantir que uma máquina não seja utilizada, antes de desligá-la permanentemente.

sql-server best-practices
  • 4 respostas
  • 75158 Views
Martin Hope
Jon of All Trades
Asked: 2013-04-10 12:02:23 +0800 CST

Posso delegar direitos do SQL Agent sem conceder direitos de sysadmin?

  • 5

Eu gostaria de dar a um usuário a capacidade de administrar trabalhos do SQL Agent. De acordo com a página do documento , posso fazer isso concedendo as funções "apropriadas" no msdb. Eu concedi todas as três funções SQLAgent%, mas o usuário recebe este erro quando (como um teste) tenta renomear um trabalho:

Only members of sysadmin role are allowed to update or delete jobs owned by a different login.
(Microsoft SQL Server, Error: 14525)

Esta pergunta é semelhante, mas nenhuma resposta aborda o SQL Agent. A função sysadmin é a única solução no MS SQL 2K8?

sql-server-2008 permissions
  • 3 respostas
  • 5222 Views
Martin Hope
Jon of All Trades
Asked: 2013-02-23 15:25:13 +0800 CST

Os dados recuperados do SQL Server são compactados para transmissão?

  • 24

Os dados recuperados do Microsoft SQL Server são compactados? Se isso for controlado pela string de conexão, existe alguma maneira simples de saber se algum aplicativo específico está usando?

Estou examinando as ferramentas de análise e o volume de dados pode levar minutos para ser transmitido pela nossa rede. Estou me perguntando se devo esperar um aumento de desempenho se extrairmos dados de um armazenamento de dados compactados no mesmo servidor remoto.

Já que estamos no assunto, estou curioso: os dados são transmitidos em binário ou ASCII? Por exemplo, se o valor 12345for consultado de uma INTcoluna, ele é transmitido como os cinco bytes 0x31, 0x32, 0x33, 0x34, 0x35; os dois bytes necessários para o valor; ou quatro bytes conforme necessário para a coluna?

Para ser claro, entendo que existem opções em relação ao armazenamento de dados com compactação e backup. Estou perguntando sobre como os dados são transmitidos.

sql-server-2008 compression
  • 4 respostas
  • 11068 Views
Martin Hope
Jon of All Trades
Asked: 2012-06-12 14:54:08 +0800 CST

Quais opções existem para copiar dados entre servidores regularmente?

  • 4

Minhas desculpas se isso já foi respondido. Pesquisei SO e, claro, aqui no DBA, e estou surpreso por não encontrar correspondências próximas. Especificamente, estou procurando uma solução que sobreviva às diferenças de esquema.


Finalmente consegui um servidor de desenvolvimento para sombrear um servidor de data warehouse de produção. Estarei testando mudanças de schema e sproc aqui, eventualmente publicando tais mudanças no servidor prod. Para isso, precisarei de dados razoavelmente atuais, mas não precisam ser atualizados em tempo real. Meu plano é copiar os dados de estado final do servidor principal para o servidor de desenvolvimento como a etapa final do ETL noturno. Qual é a melhor maneira de conseguir isso?

Parâmetros

Todas as cópias automáticas serão de prod para dev. Qualquer cópia de dev para prod será feita à mão e, geralmente, será apenas DDL.

Como o esquema do servidor de desenvolvimento deve mudar independentemente do servidor de produção, não quero que o processo de cópia falhe quando o esquema de destino for diferente (tudo bem se as tabelas específicas em fluxo não puderem ser mantidas em sincronia, é claro) . Caso contrário, eu apenas DROP DATABASErestauraria o backup da noite passada.

Manter o esquema, SPs, exibições e UDFs sincronizados não é necessário, nem mesmo desejável. Eles só devem mudar quando eu os mudar especificamente.

Os registros podem ser alterados retroativamente na maioria das tabelas, portanto atualizações incrementais provavelmente não serão práticas.

O volume de dados é de 14 GB para as tabelas mais críticas, mais cerca de 200 GB de dados menos importantes que podem ser atualizados semanalmente.

Meu objetivo é terminar o processo em duas horas. Os servidores são co-localizados e devem ter alta taxa de transferência. Copiar ( INSERT INTO..SELECT * FROM ProdServer..) uma única tabela com 600 MB de dados e 300 de índices levou 7,5 minutos; nada bom. Preocupante, outra tabela com 11 GB de dados e 8 GB de índices não terminou em 130 minutos, quando a cancelei. Vou testar isso novamente sem índices.

Colocar o banco de dados prod offline é aceitável se puder ser breve - não mais que 30 minutos. O banco de dados de desenvolvimento pode ficar offline por horas, se necessário.

Se eu puder excluir temporariamente uma tabela específica, mantendo-a estática por alguns dias durante o teste, isso seria valioso.

Opções

1: Replicação

Eu poderia criar um instantâneo diário após o término do ETL e publicá-lo no servidor de desenvolvimento. Eu não usei a replicação antes, mas este parece ser o tipo de cenário para o qual ela se destina. Hora de aprender uma nova faceta da tecnologia?

2: Cópia em massa e inserção em massa

Eu poderia escrever um script que percorre todas as tabelas no banco de dados prod e despeja o conteúdo em um arquivo com nome exclusivo. No lado do desenvolvedor, eu percorreria esses arquivos e TRUNCATE/ BULK INSERTna tabela de destino, com um TRY..CATCHbloco caso o esquema fosse alterado. Não tenho certeza se isso teria um desempenho aceitável, mas seria bastante simples de implementar.

3: INSERT do servidor vinculado

Posso executar um TRUNCATE/ INSERT..SELECTpara cada tabela, provavelmente puxando do lado do desenvolvedor. Isso seria simples e rápido, especialmente se alguém eliminar e recriar os índices. Para lidar com as mudanças de esquema, pode-se identificar a interseção das listas de campos para cada par de tabelas e apenas tentar copiar esses campos; isso ajudaria se muitos campos fossem NULLable.


Existem outras opções? Existe uma maneira mais fácil que estou ignorando? Há alguma pegadinha que você encontrou ao trabalhar em projetos semelhantes?

Esta questão descreve o lado da exportação, mas a saída desejada era CSV, portanto as opções são limitadas (e o BCP funciona muito bem, conforme respondido).

Esta questão fala sobre como copiar rapidamente um banco de dados inteiro, incluindo o esquema. Exclui especificamente a replicação.

Esta questão discute a sincronização bidirecional, para a qual a replicação é sugerida.

sql-server-2008 replication
  • 4 respostas
  • 3483 Views
Martin Hope
Jon of All Trades
Asked: 2012-06-05 11:59:11 +0800 CST

A consulta é pausada após retornar um número fixo de linhas

  • 9

Tenho uma exibição que é executada rapidamente (alguns segundos) para até 41 registros (por exemplo, TOP 41), mas leva vários minutos para 44 ou mais registros, com resultados intermediários se executado com TOP 42ou TOP 43. Especificamente, ele retornará os primeiros 39 registros em alguns segundos e parará por quase três minutos antes de retornar os registros restantes. Esse padrão é o mesmo ao consultar TOP 44ou TOP 100.

Esta visão originalmente derivou de uma visão base, adicionando à base apenas um filtro, o último no código abaixo. Parece não haver diferença se eu encadear a visão filho da base ou se eu escrever a visão filho com o código da base alinhado. A visualização base retorna 100 registros em apenas alguns segundos. Eu gostaria de pensar que posso fazer com que a visão infantil funcione tão rapidamente quanto a base, não 50 vezes mais devagar. Alguém já viu esse tipo de comportamento? Algum palpite sobre a causa ou resolução?

Esse comportamento tem sido consistente nas últimas horas enquanto eu testo as consultas envolvidas, embora o número de linhas retornadas antes que as coisas comecem a desacelerar tenha aumentado e diminuído ligeiramente. Isso não é novo; Estou olhando para ele agora porque o tempo total de execução foi aceitável (<2 minutos), mas vi essa pausa nos arquivos de log relacionados por meses, pelo menos.

Bloqueio

Nunca vi a consulta bloqueada e o problema existe mesmo quando não há outra atividade no banco de dados (conforme validado por sp_WhoIsActive). A visão base inclui NOLOCKtudo, pelo que vale a pena.

Consultas

Aqui está uma versão reduzida da visualização filho, com a visualização base alinhada para simplificar. Ele ainda exibe o salto no tempo de execução em cerca de 40 registros.

SELECT TOP 100 PERCENT
    Map.SalesforceAccountID AS Id,
    CAST(C.CustomerID AS NVARCHAR(255)) AS Name,
    CASE WHEN C.StreetAddress = 'Unknown' THEN '' ELSE C.StreetAddress                 END AS BillingStreet,
    CASE WHEN C.City          = 'Unknown' THEN '' ELSE SUBSTRING(C.City,        1, 40) END AS BillingCity,
                                                       SUBSTRING(C.Region,      1, 20)     AS BillingState,
    CASE WHEN C.PostalCode    = 'Unknown' THEN '' ELSE SUBSTRING(C.PostalCode,  1, 20) END AS BillingPostalCode,
    CASE WHEN C.Country       = 'Unknown' THEN '' ELSE SUBSTRING(C.Country,     1, 40) END AS BillingCountry,
    CASE WHEN C.PhoneNumber   = 'Unknown' THEN '' ELSE C.PhoneNumber                   END AS Phone,
    CASE WHEN C.FaxNumber     = 'Unknown' THEN '' ELSE C.FaxNumber                     END AS Fax,
    TransC.WebsiteAddress AS Website,
    C.AccessKey AS AccessKey__c,
    CASE WHEN dbo.ValidateEMail(C.EMailAddress) = 1 THEN C.EMailAddress END,  -- Removing this UDF does not speed things
    TransC.EmailSubscriber
    -- A couple dozen additional TransC fields
FROM
    WarehouseCustomers AS C WITH (NOLOCK)
    INNER JOIN TransactionalCustomers AS TransC WITH (NOLOCK) ON C.CustomerID = TransC.CustomerID
    LEFT JOIN  Salesforce.AccountsMap AS Map WITH (NOLOCK) ON C.CustomerID = Map.CustomerID
WHERE
        C.DateMadeObsolete IS NULL
    AND C.EmailAddress NOT LIKE '%@volusion.%'
    AND C.AccessKey IN ('C', 'R')
    AND C.CustomerID NOT IN (243566)  -- Exclude specific test records
    AND EXISTS (SELECT * FROM Orders AS O WHERE C.CustomerID = O.CustomerID AND O.OrderDate >= '2010-06-28')  -- Only count customers who've placed a recent order
    AND Map.SalesforceAccountID IS NULL  -- Only count customers not already uploaded to Salesforce
-- Removing the ORDER BY clause does not speed things up
ORDER BY
    C.CustomerID DESC

Esse Id IS NULLfiltro descarta a maioria dos registros retornados por BaseView; sem uma TOPcláusula, eles retornam 1.100 registros e 267K, respectivamente.

Estatisticas

Ao executar TOP 40:

SQL Server parse and compile time:    CPU time = 234 ms, elapsed time = 247 ms.
SQL Server Execution Times:   CPU time = 0 ms,  elapsed time = 0 ms.
SQL Server Execution Times:   CPU time = 0 ms,  elapsed time = 0 ms.

(40 row(s) affected)
Table 'CustomersHistory'. Scan count 2, logical reads 39112, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Orders'. Scan count 1, logical reads 752, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'AccountsMap'. Scan count 1, logical reads 458, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times:   CPU time = 2199 ms,  elapsed time = 7644 ms.

Ao executar TOP 45:

(45 row(s) affected)
Table 'CustomersHistory'. Scan count 2, logical reads 98268, physical reads 1, read-ahead reads 3, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Orders'. Scan count 1, logical reads 1788, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'AccountsMap'. Scan count 1, logical reads 2152, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

SQL Server Execution Times: CPU time = 41980 ms,  elapsed time = 177231 ms.

Estou surpreso ao ver o número de leituras pular ~ 3x para essa modesta diferença na saída real.

Comparando os planos de execução, eles são os mesmos exceto o número de linhas retornadas. Assim como nas estatísticas acima, as contagens reais de linhas para as primeiras etapas são muito mais altas na TOP 45consulta, não apenas 12,5% mais altas.

Em resumo, ele está digitalizando um índice de cobertura de Pedidos, buscando os registros correspondentes de Clientes de Armazém; loop-junção disso para TransactionalCustomers (consulta remota, plano exato desconhecido); e mesclando isso com uma varredura de tabela de AccountsMap. A consulta remota representa 94% do custo estimado.

Notas diversas

Anteriormente, quando eu executava o conteúdo expandido da exibição como uma consulta independente, ele rodava bem rápido: 13 segundos para 100 registros. Agora estou testando uma versão reduzida da consulta, sem subconsultas, e essa consulta muito mais simples leva três minutos para solicitar o retorno de mais de 40 linhas, mesmo quando executada como uma consulta autônoma.

A visualização filho inclui um número substancial de leituras (~1M por sp_WhoIsActive), mas nesta máquina (oito núcleos, 32 GB de RAM, 95% da caixa SQL dedicada) isso normalmente não é um problema.

Eliminei e recriei ambas as visualizações várias vezes, sem alterações.

Os dados não incluem nenhum campo TEXT ou BLOB. Um campo envolve um UDF; removê-lo não impede a pausa.

Os tempos são semelhantes, seja consultando no próprio servidor ou em minha estação de trabalho a 1.400 milhas de distância, portanto, o atraso parece ser inerente à própria consulta, em vez de enviar os resultados ao cliente.

sql-server-2008
  • 4 respostas
  • 2535 Views
Martin Hope
Jon of All Trades
Asked: 2012-05-02 12:44:46 +0800 CST

Por que vejo sp_OACreate, sp_OASetProperty em sp_WhoIsActive?

  • 1

Já vi isso acontecer algumas vezes: sp_WhoIsActive mostra vários sp_OA% sprocs, com meu nome de usuário, mas certamente não os estou executando diretamente. Isso reflete algum tipo de processo de reescrita de consulta? Parece estar correlacionado com consultas em servidores remotos.

sql-server sql-server-2008
  • 1 respostas
  • 1831 Views
Martin Hope
Jon of All Trades
Asked: 2011-05-25 10:50:05 +0800 CST

Por que essa consulta se torna drasticamente mais lenta quando agrupada em um TVF?

  • 19

Eu tenho uma consulta bastante complexa que é executada em apenas alguns segundos por conta própria, mas quando agrupada em uma função com valor de tabela, é muito mais lenta; Na verdade, não deixei terminar, mas é executado por até dez minutos sem terminar. A única alteração é a substituição de duas variáveis ​​de data (inicializadas com literais de data) por parâmetros de data:

Corre em Sete Segundos

DECLARE @StartDate DATE = '2011-05-21'
DECLARE @EndDate   DATE = '2011-05-23'

DECLARE @Data TABLE (...)
INSERT INTO @Data(...) SELECT...

SELECT * FROM @Data

Funciona por pelo menos dez minutos

CREATE FUNCTION X (@StartDate DATE, @EndDate DATE)
  RETURNS TABLE AS RETURN
  SELECT ...

SELECT * FROM X ('2011-05-21', '2011-05-23')

Eu já havia escrito a função como um TVF de várias instruções com uma cláusula RETURNS @Data TABLE (...), mas trocá-la pela estrutura inline não fez uma alteração perceptível. O tempo de execução longo do TVF é o SELECT * FROM Xtempo real; na verdade, criar o UDF leva apenas alguns segundos.

Eu poderia postar a consulta em questão, mas é um pouco longa (~ 165 linhas) e, com base no sucesso da primeira abordagem, suspeito que algo mais esteja acontecendo. Folheando os planos de execução, eles parecem ser idênticos.

Tentei dividir a consulta em seções menores, sem alteração. Nenhuma seção única leva mais do que alguns segundos quando executada sozinha, mas o TVF ainda trava.

Vejo uma pergunta muito semelhante, https://stackoverflow.com/questions/4190506/sql-server-2005-table-valued-function-weird-performance , mas não tenho certeza de que a solução se aplica. Talvez alguém tenha visto esse problema e conheça uma solução mais geral? Obrigado!

Aqui está o dm_exec_requests após vários minutos de processamento:

session_id              59
request_id              0
start_time              40688.46517
status                  running
command                 UPDATE
sql_handle              0x030015002D21AF39242A1101ED9E00000000000000000000
statement_start_offset  10962
statement_end_offset    16012
plan_handle             0x050015002D21AF3940C1E6B0040000000000000000000000
database_id                 21
user_id                 1
connection_id           314AE0E4-A1FB-4602-BF40-02D857BAD6CF
blocking_session_id         0
wait_type               NULL
wait_time                   0
last_wait_type          SOS_SCHEDULER_YIELD
wait_resource   
open_transaction_count  0
open_resultset_count    1
transaction_id              48030651
context_info            0x
percent_complete        0
estimated_completion_time   0
cpu_time                    344777
total_elapsed_time          348632
scheduler_id            7
task_address            0x000000045FC85048
reads                   1549
writes                  13
logical_reads           30331425
text_size               2147483647
language                us_english
date_format             mdy
date_first              7
quoted_identifier           1
arithabort              1
ansi_null_dflt_on       1
ansi_defaults           0
ansi_warnings           1
ansi_padding            1
ansi_nulls                  1
concat_null_yields_null 1
transaction_isolation_level 2
lock_timeout            -1
deadlock_priority           0
row_count                   105
prev_error              0
nest_level              1
granted_query_memory    170
executing_managed_code  0
group_id                2
query_hash              0xBE6A286546AF62FC
query_plan_hash         0xD07630B947043AF0

Aqui está a consulta completa:

CREATE FUNCTION Routine.MarketingDashboardECommerceBase (@StartDate DATE, @EndDate DATE)
RETURNS TABLE AS RETURN
    WITH RegionsByCode AS (SELECT CountryCode, MIN(Region) AS Region FROM Staging.Volusion.MarketingRegions GROUP BY CountryCode)
        SELECT
            D.Date, Div.Division, Region.Region, C.Category1, C.Category2, C.Category3,
            COALESCE(V.Visits,          0) AS Visits,
            COALESCE(Dem.Demos,         0) AS Demos,
            COALESCE(S.GrossStores,     0) AS GrossStores,
            COALESCE(S.PaidStores,      0) AS PaidStores,
            COALESCE(S.NetStores,       0) AS NetStores,
            COALESCE(S.StoresActiveNow, 0) AS StoresActiveNow
            -- This line causes the run time to climb from a few seconds to over an hour!
            --COALESCE(V.Visits,          0) * COALESCE(ACS.AvgClickCost, GAAC.AvgAdCost, 0.00) AS TotalAdCost
            -- This line alone does not inflate the run time
            --ACS.AvgClickCost
            -- This line is enough to increase the run time to at least a couple minutes
            --GAAC.AvgAdCost
        FROM
            --Dates AS D
            (SELECT SQLDate AS Date FROM Dates WHERE SQLDate BETWEEN @StartDate AND @EndDate) AS D
            CROSS JOIN (SELECT 'UK' AS Division UNION SELECT 'US' UNION SELECT 'IN' UNION SELECT 'Unknown') AS Div
            CROSS JOIN (SELECT Category1, Category2, Category3 FROM Routine.MarketingDashboardCampaignMap UNION SELECT 'Unknown', 'Unknown', 'Unknown') AS C
            CROSS JOIN (SELECT DISTINCT Region FROM Staging.Volusion.MarketingRegions) AS Region
            -- Visitors
            LEFT JOIN
                (
                SELECT
                    V.Date,
                    CASE    WHEN V.Country IN ('United Kingdom', 'Guernsey', 'Ireland', 'Jersey') THEN 'UK'
                        WHEN V.Country IN ('United States', 'Canada', 'Puerto Rico', 'U.S. Virgin Islands') THEN 'US'
                        ELSE 'IN' END AS Division,
                    COALESCE(MR.Region, 'Unknown') AS Region,
                    C.Category1, C.Category2, C.Category3,
                    SUM(V.Visits) AS Visits
                FROM
                             RawData.GoogleAnalytics.Visits        AS V
                    INNER JOIN Routine.MarketingDashboardCampaignMap AS C ON V.LandingPage = C.LandingPage AND V.Campaign = C.Campaign AND V.Medium = C.Medium AND V.Referrer = C.Referrer AND V.Source = C.Source
                    LEFT JOIN  Staging.Volusion.MarketingRegions     AS MR ON V.Country = MR.CountryName
                WHERE
                    V.Date BETWEEN @StartDate AND @EndDate
                GROUP BY
                    V.Date,
                    CASE    WHEN V.Country IN ('United Kingdom', 'Guernsey', 'Ireland', 'Jersey') THEN 'UK'
                        WHEN V.Country IN ('United States', 'Canada', 'Puerto Rico', 'U.S. Virgin Islands') THEN 'US'
                        ELSE 'IN' END,
                    COALESCE(MR.Region, 'Unknown'), C.Category1, C.Category2, C.Category3
                ) AS V ON D.Date = V.Date AND Div.Division = V.Division AND Region.Region = V.Region AND C.Category1 = V.Category1 AND C.Category2 = V.Category2 AND C.Category3 = V.Category3
            -- Demos
            LEFT JOIN
                (
                SELECT
                    OD.SQLDate,
                    G.Division,
                    COALESCE(MR.Region,   'Unknown') AS Region,
                    COALESCE(C.Category1, 'Unknown') AS Category1,
                    COALESCE(C.Category2, 'Unknown') AS Category2,
                    COALESCE(C.Category3, 'Unknown') AS Category3,
                    SUM(D.Demos) AS Demos
                FROM
                             Demos            AS D
                    INNER JOIN Orders           AS O  ON D."Order" = O."Order"
                    INNER JOIN Dates            AS OD ON O.OrderDate = OD.DateSerial
                    INNER JOIN MarketingSources AS MS ON D.Source = MS.Source
                    LEFT JOIN  RegionsByCode    AS MR ON MS.CountryCode = MR.CountryCode
                    LEFT JOIN
                        (
                        SELECT
                            G.TransactionID,
                            MIN (
                                CASE WHEN G.Country IN ('United Kingdom', 'Guernsey', 'Ireland', 'Jersey') THEN 'UK'
                                    WHEN G.Country IN ('United States', 'Canada', 'Puerto Rico', 'U.S. Virgin Islands') THEN 'US'
                                    ELSE 'IN' END
                                ) AS Division
                        FROM
                            RawData.GoogleAnalytics.Geography AS G
                        WHERE
                                TransactionDate BETWEEN @StartDate AND @EndDate
                            AND NOT EXISTS (SELECT * FROM RawData.GoogleAnalytics.Geography AS G2 WHERE G.TransactionID = G2.TransactionID AND G2.EffectiveDate > G.EffectiveDate)
                        GROUP BY
                            G.TransactionID
                        ) AS G  ON O.VolusionOrderID = G.TransactionID
                    LEFT JOIN  RawData.GoogleAnalytics.Referrers     AS R  ON O.VolusionOrderID = R.TransactionID AND NOT EXISTS (SELECT * FROM RawData.GoogleAnalytics.Referrers AS R2 WHERE R.TransactionID = R2.TransactionID AND R2.EffectiveDate > R.EffectiveDate)
                    LEFT JOIN  Routine.MarketingDashboardCampaignMap AS C  ON MS.LandingPage = C.LandingPage AND MS.Campaign = C.Campaign AND MS.Medium = C.Medium AND COALESCE(R.ReferralPath, '(not set)') = C.Referrer AND MS.SourceName = C.Source
                WHERE
                        O.IsDeleted = 'No'
                    AND OD.SQLDate BETWEEN @StartDate AND @EndDate
                GROUP BY
                    OD.SQLDate,
                    G.Division,
                    COALESCE(MR.Region,   'Unknown'),
                    COALESCE(C.Category1, 'Unknown'),
                    COALESCE(C.Category2, 'Unknown'),
                    COALESCE(C.Category3, 'Unknown')
                ) AS Dem ON D.Date = Dem.SQLDate AND Div.Division = Dem.Division AND Region.Region = Dem.Region AND C.Category1 = Dem.Category1 AND C.Category2 = Dem.Category2 AND C.Category3 = Dem.Category3
            -- Stores
            LEFT JOIN
                (
                SELECT
                    OD.SQLDate,
                    CASE WHEN O.VolusionCountryCode = 'GB' THEN 'UK'
                        WHEN A.CountryShortName IN ('U.S.', 'Canada', 'Puerto Rico', 'U.S. Virgin Islands') THEN 'US'
                        ELSE 'IN' END AS Division,
                    COALESCE(MR.Region,     'Unknown') AS Region,
                    COALESCE(CpM.Category1, 'Unknown') AS Category1,
                    COALESCE(CpM.Category2, 'Unknown') AS Category2,
                    COALESCE(CpM.Category3, 'Unknown') AS Category3,
                    SUM(S.Stores) AS GrossStores,
                    SUM(CASE WHEN O.DatePaid <> -1 THEN 1 ELSE 0 END) AS PaidStores,
                    SUM(CASE WHEN O.DatePaid <> -1 AND CD.WeekEnding <> OD.WeekEnding THEN 1 ELSE 0 END) AS NetStores,
                    SUM(CASE WHEN O.DatePaid <> -1 THEN SH.ActiveStores ELSE 0 END) AS StoresActiveNow
                FROM
                             Stores           AS S
                    INNER JOIN Orders           AS O   ON S."Order" = O."Order"
                    INNER JOIN Dates            AS OD  ON O.OrderDate = OD.DateSerial
                    INNER JOIN Dates            AS CD  ON O.CancellationDate = CD.DateSerial
                    INNER JOIN Customers        AS C   ON O.CustomerNow = C.Customer
                    INNER JOIN MarketingSources AS MS  ON C.Source = MS.Source
                    INNER JOIN StoreHistory     AS SH  ON S.MostRecentHistory = SH.History
                    INNER JOIN Addresses        AS A   ON C.Address = A.Address
                    LEFT JOIN  RegionsByCode    AS MR  ON MS.CountryCode = MR.CountryCode
                    LEFT JOIN  Routine.MarketingDashboardCampaignMap AS CpM ON CpM.LandingPage = 'N/A' AND MS.Campaign = CpM.Campaign AND MS.Medium = CpM.Medium AND CpM.Referrer = 'N/A' AND MS.SourceName = CpM.Source
                WHERE
                        O.IsDeleted = 'No'
                    AND OD.SQLDate BETWEEN @StartDate AND @EndDate
                GROUP BY
                    OD.SQLDate,
                    CASE WHEN O.VolusionCountryCode = 'GB' THEN 'UK'
                        WHEN A.CountryShortName IN ('U.S.', 'Canada', 'Puerto Rico', 'U.S. Virgin Islands') THEN 'US'
                        ELSE 'IN' END,
                    COALESCE(MR.Region,     'Unknown'),
                    COALESCE(CpM.Category1, 'Unknown'),
                    COALESCE(CpM.Category2, 'Unknown'),
                    COALESCE(CpM.Category3, 'Unknown')
                ) AS S ON D.Date = S.SQLDate AND Div.Division = S.Division AND Region.Region = S.Region AND C.Category1 = S.Category1 AND C.Category2 = S.Category2 AND C.Category3 = S.Category3
            -- Google Analytics spend
            LEFT JOIN
                (
                SELECT
                    AC.Date, C.Category1, C.Category2, C.Category3, SUM(AC.AdCost) / SUM(AC.Visits) AS AvgAdCost
                FROM
                    RawData.GoogleAnalytics.AdCosts AS AC
                    INNER JOIN
                        (
                        SELECT Campaign, Medium, Source, MIN(Category1) AS Category1, MIN(Category2) AS Category2, MIN(Category3) AS Category3
                        FROM Routine.MarketingDashboardCampaignMap
                        WHERE Category1 <> 'Affiliate'
                        GROUP BY Campaign, Medium, Source
                        ) AS C ON AC.Campaign = C.Campaign AND AC.Medium = C.Medium AND AC.Source = C.Source
                WHERE
                    AC.Date BETWEEN @StartDate AND @EndDate
                GROUP BY
                    AC.Date, C.Category1, C.Category2, C.Category3
                HAVING
                    SUM(AC.AdCost) > 0.00 AND SUM(AC.Visits) > 0
                ) AS GAAC ON D.Date = GAAC.Date AND C.Category1 = GAAC.Category1 AND C.Category2 = GAAC.Category2 AND C.Category3 = GAAC.Category3
            -- adCenter spend
            LEFT JOIN
                (
                SELECT Date, SUM(Spend) / SUM(Clicks) AS AvgClickCost
                FROM RawData.AdCenter.Spend
                WHERE Date BETWEEN @StartDate AND @EndDate
                GROUP BY Date
                HAVING SUM(Spend) > 0.00 AND SUM(Clicks) > 0
                ) AS ACS ON D.Date = ACS.Date AND C.Category1 = 'PPC' AND C.Category2 = 'adCenter' AND C.Category3 = 'N/A'
        WHERE
            V.Visits > 0 OR Dem.Demos > 0 OR S.GrossStores > 0
GO


SELECT * FROM Routine.MarketingDashboardECommerceBase('2011-05-21', '2011-05-23')
sql-server sql-server-2008
  • 5 respostas
  • 22523 Views
Martin Hope
Jon of All Trades
Asked: 2011-10-04 18:09:27 +0800 CST

Quais são as considerações de desempenho entre usar um PK amplo versus uma chave sintética separada e UQ?

  • 10

Eu tenho várias tabelas onde os registros podem ser identificados exclusivamente com vários campos de negócios amplos. No passado, usei esses campos como um PK, com os seguintes benefícios em mente:

  • Simplicidade; não há campos estranhos e apenas um índice
  • O agrupamento permite junções de mesclagem rápidas e filtros baseados em intervalo

No entanto, ouvi um caso feito para criar um IDENTITY INTPK sintético e, em vez disso, impor a chave de negócios com uma UNIQUErestrição separada. A vantagem é que o PK estreito resulta em índices secundários muito menores.

Se uma tabela não tiver índices além do PK, não vejo nenhuma razão para favorecer a segunda abordagem, embora em uma tabela grande seja provavelmente melhor assumir que os índices podem ser necessários no futuro e, portanto, favorecer o PK sintético estreito . Estou perdendo alguma consideração?

Aliás, não estou argumentando contra o uso de chaves sintéticas em data warehouses, estou apenas interessado em quando usar um único PK amplo e quando usar um PK estreito mais um UK amplo.

database-design primary-key
  • 4 respostas
  • 845 Views
Martin Hope
Jon of All Trades
Asked: 2011-09-07 12:43:45 +0800 CST

Por que o espaço de dados de uma tabela pode ocupar 4x o tamanho dos dados brutos?

  • 18

Eu tenho uma tabela com 490 M de linhas e 55 GB de espaço de tabela, ou seja, cerca de 167 bytes por linha. A tabela tem três colunas: a VARCHAR(100), a DATETIME2(0)e a SMALLINT. O comprimento médio do texto no VARCHARcampo é de cerca de 21,5, portanto, os dados brutos devem ter cerca de 32 bytes por linha: 22+2 para o VARCHAR, 6 para o DATETIME2e 2 para o inteiro de 16 bits.

Observe que o espaço acima é apenas para dados, não para índices. Estou usando o valor informado em Propriedades | Armazenamento | Geral | Espaço de dados.

Claro que deve haver alguma sobrecarga, mas 135 bytes por linha parece muito, especialmente para uma tabela grande. Por que isso pode ser? Alguém mais viu multiplicadores semelhantes? Que fatores podem influenciar a quantidade de espaço extra necessária?

Para comparação, tentei criar uma tabela com dois INTcampos e 1 milhão de linhas. O espaço de dados necessário foi de 16,4 MB: 17 bytes por linha, em comparação com 8 bytes de dados brutos. Outra tabela de teste com um INTe um VARCHAR(100)preenchida com o mesmo texto da tabela real usa 39 bytes por linha (44 K linhas), onde eu esperaria 28 mais um pouco.

Portanto, a tabela de produção tem consideravelmente mais sobrecarga. É porque é maior? Eu esperaria que os tamanhos dos índices fossem aproximadamente N * log(N), mas não vejo por que o espaço necessário para os dados reais não é linear.

Agradecemos antecipadamente por quaisquer ponteiros!

EDITAR:

Todos os campos listados são NOT NULL. A tabela real tem um PK agrupado no VARCHARcampo e no DATETIME2campo, nessa ordem. Para os dois testes, o primeiro INTfoi o PK (agrupado).

Se for importante: a tabela é um registro dos resultados do ping. Os campos são URL, data/hora do ping e latência em milissegundos. Os dados são constantemente anexados e nunca atualizados, mas os dados são excluídos periodicamente para reduzi-los a apenas alguns registros por hora por URL.

EDITAR:

Uma resposta muito interessante aqui sugere que, para um índice com muita leitura e escrita, a reconstrução pode não ser benéfica. No meu caso, o espaço consumido é uma preocupação, mas se o desempenho de gravação for mais importante, pode ser melhor usar índices flácidos.

sql-server-2008 disk-space
  • 3 respostas
  • 7357 Views
Martin Hope
Jon of All Trades
Asked: 2011-06-03 15:18:49 +0800 CST

Quais são as práticas recomendadas para excluir permanentemente um banco de dados com segurança?

  • 10

Temos um ambiente "orgânico", o que significa que as pessoas empilharam código após código por dez anos com o mínimo de supervisão ou documentação. O servidor que utilizo possui vários bancos de dados que acredito não estarem mais sendo utilizados; Eu adoraria excluí-los e deixar apenas os três que eu realmente uso.

No extremo imprudente, eu poderia desabilitar esses bancos de dados e esperar que alguém gritasse; no outro eu poderia deixá-los rodando para sempre "apenas no caso". Quais etapas você achou valiosas para identificar se um servidor está sendo usado e como?

Além disso, quais etapas você recomendaria para garantir que, à medida que avançamos na desativação de sistemas, eles permaneçam convenientemente reversíveis por um período de tempo (por exemplo, renomear objetos em vez de excluí-los completamente)?

Obrigado!

maintenance delete
  • 3 respostas
  • 2242 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