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

James Jenkins's questions

Martin Hope
James Jenkins
Asked: 2020-01-01 05:00:11 +0800 CST

Palavra-chave não suportada: 'statslog_on'

  • 1

Estou tentando me conectar a uma instância do SQL 2017 via SSMS 18.2 com os 'Parâmetros de conexão adicionais'

StatsLog_On=Yes;StatsLogFile=C:\Temp\TestODBC.txt

A documentação em Usando palavras-chave de cadeia de conexão com o SQL Server Native Client não é perfeita, mas indica fortemente que deve funcionar. Eu sei de outras fontes que as palavras-chave StatsLog_On& StatsLogFileprecisam ser usadas juntas.

Recebo esta mensagem de erro quando tento conectar

===================================

Não é possível conectar ao sandbox.

===================================

Palavra-chave não suportada: 'statslog_on'. (System.Data)


Local do Programa:

em System.Data.Common.DbConnectionOptions.ParseInternal(Hashtable analisable, String connectionString, Boolean buildChain, sinônimos de Hashtable, Boolean firstKey)

em System.Data.Common.DbConnectionOptions..ctor(String connectionString, sinônimos de Hashtable, Boolean useOdbcRules)

em System.Data.SqlClient.SqlConnectionString..ctor(String connectionString)

em System.Data.SqlClient.SqlConnectionFactory.CreateConnectionOptions(String connectionString, DbConnectionOptions anterior)

em System.Data.ProviderBase.DbConnectionFactory.GetConnectionPoolGroup(chave DbConnectionPoolKey, DbConnectionPoolGroupOptions poolOptions, DbConnectionOptions& userConnectionOptions)

em System.Data.SqlClient.SqlConnection.ConnectionString_Set(chave DbConnectionPoolKey)

em System.Data.SqlClient.SqlConnection.set_ConnectionString(valor da string)

em Microsoft.SqlServer.Management.UI.ConnectionDlg.SqlServerType.Microsoft.SqlServer.Management.UI.ConnectionDlg.IServerType.GetConnectionObject(UIConnectionInfo ci)

em Microsoft.SqlServer.Management.SqlStudio.Explorer.ObjectExplorerService.ValidateConnection(UIConnectionInfo ci, servidor IServerType)

em Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()

Nota: "Sandbpx" é o nome da instância SQL

Como uma verificação da realidade, o uso Server=sandbox;MultiSubnetFailover=Truefunciona bem

sql-server connectivity
  • 1 respostas
  • 283 Views
Martin Hope
James Jenkins
Asked: 2019-12-31 04:31:45 +0800 CST

O SSMS usa ODBC?

  • 7

Estou executando o SSMS V18.2 e conectando-me às instâncias do SQL 2008 - 2019.

Estou pesquisando vários cenários de conexão de várias sub-redes. Aprendi que o ODBC 13.1+ inclui TransparentNetworkIPResolutiono que altera a maneira como as conexões são feitas com várias sub-redes.

Meu computador tem vários drivers diferentes nele.

Captura de tela de 5 drivers diferentes

Eu quero saber qual ( se houver ) desses SSMS está usando para conexões diretas com instâncias SQL na minha rede.

Eu olhei para ferramentas > opções e não vejo nada que me dê uma opção para alterar qual driver é usado para conectar.

Quando eu Google, recebo resultados sobre o uso de ODBC para servidores vinculados.

O SSMS usa ODBC para conexões diretas?

Se sim, posso selecionar qual ele usa?

Editar Há um comentário e uma resposta indicando que o SSMS não usa ODBC, com base em minha pesquisa contínua, acho que usa o SQL Server Native Client 11.0na captura de tela acima.

Olhando para o uso de palavras-chave de cadeia de conexão com o SQL Server Native Client , parece que você pode se conectar com o driver de sua escolha usando a palavra-chave Driverque ainda estou pesquisando como isso pode funcionar.

Edit2 Na verdade, parece que ( veja relacionado ) o driver não é um daqueles na captura de tela, nem você pode usar a palavra-chave driverpara alterar os drivers.

sql-server ssms
  • 1 respostas
  • 5034 Views
Martin Hope
James Jenkins
Asked: 2019-12-24 08:02:57 +0800 CST

Registrar o valor MultiSubnetFailover na conexão?

  • 3

Com AlwaysOn, existem 3 opções para a palavra-chaveMultiSubnetFailover

  • Verdade (sim)
  • Falso (não) ( exemplo )
  • Não enviado/usado

Nem todos os aplicativos suportam seu uso em cadeias de conexão. Nem todos os contatos do fornecedor entendem a importância do desempenho no failover.

Como DBA, gostaria de poder validar qual propriedade está sendo usada pela conexão do aplicativo. Se eu não tiver feito a alteração de configuração apropriada, RegisterAllProvidersIPisso pode causar problemas. Consulte: Acompanhamento: depois de criar um ouvinte de grupo de disponibilidade

Não parece ser capturado em sys.dm_exec_sessionsnenhumsys.dm_exec_connections

Como posso capturar quais valores de palavra-chave ( se houver ) foram usados ​​para criar uma conexão com uma das minhas instâncias?

sql-server availability-groups
  • 1 respostas
  • 253 Views
Martin Hope
James Jenkins
Asked: 2019-12-20 07:31:47 +0800 CST

A recuperação pseudo-simples do SQL Server é uma coisa real?

  • 4

"Recuperação pseudo-simples do SQL Server" é termo e cenário, acabei de tomar conhecimento em um comentário (agora excluído) para a nova pergunta SQL Server trunca logs de transações com backups somente de cópia

Eu fui para o post Pseudo-Simple SQL Server Recovery Model 7 de outubro de 2019 por Rajendra Gupta e usando parte do código lá e alguns dos meus próprios fiz alguns testes.

Crie o banco de dados (código de Rajendra)

CREATE DATABASE RecoveryModel;

e Valide se está na íntegra (código de Rajendra)

SELECT name, 
    recovery_model_desc
FROM sys.databases
WHERE name = 'RecoveryModel';

Faça algum trabalho (código de Rajendra, ligeiramente modificado)

Use RecoveryModel
CREATE TABLE test(id INT);
GO 
INSERT INTO test
VALUES(1);
GO 5000

Veja quanto espaço de log é usado (meu código)

select file_id
, type_desc
, name
, substring([physical_name],1,3) AS [Drive]
, physical_name
, state_desc
, size / 128 as 'AllocatedSizeMB'
, FILEPROPERTY([name],'SpaceUsed') /128 AS 'SpaceUsedMB'  --Addapted from https://sqlperformance.com/2014/12/io-subsystem/proactive-sql-server-health-checks-1
, (1- (FILEPROPERTY([name],'SpaceUsed') / CAST (size AS MONEY))) *100 AS 'PercentFree'
, growth / 128 as 'GrowthSettingMB'

 from sys.database_files
 order by type_desc Desc, name

Descobrimos que o log está sendo preenchido. Execute o trabalho novamente e verifique o tamanho, o log cresce, sem surpresa.

Tente executar o t-log (meu código)

BACKUP LOG [RecoveryModel] TO  
DISK = N'E:\SQLBackups\RecoveryModel.trn' WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD 
GO

Ele falha com a mensagem:

Msg 4214, Nível 16, Estado 1, Linha 8

BACKUP LOG não pode ser executado porque não há backup de banco de dados atual.

Msg 3013, Nível 16, Estado 1, Linha 8

BACKUP LOG está terminando de forma anormal.

Nada remotamente simples sobre isso, se você tentar fazer backup de um banco de dados em recuperação simples. você recebe a mensagem

Msg 4208, Nível 16, Estado 1, Linha 19

A instrução BACKUP LOG não é permitida enquanto o modelo de recuperação for SIMPLE. Use BACKUP DATABASE ou altere o modelo de recuperação usando ALTER DATABASE.

Execute um backup somente de cópia (meu código)

BACKUP DATABASE [RecoveryModel] TO  
DISK = N'E:\SQLBackups\RecoveryModel.bak' WITH NOFORMAT, INIT, COPY_ONLY,  
NAME = N'RecoveryModel-Full Database Backup', SKIP, NOREWIND, NOUNLOAD
GO

Funciona bem, verifique o espaço de log e não encolheu. Execute a carga de trabalho por mais algum tempo e o espaço de log continua a crescer. Execute um backup t-log e ele continua a falhar.

Execute um backup diferencial (Meu código)

BACKUP DATABASE [RecoveryModel] TO  
DISK = N'E:\SQLBackups\RecoveryModel.dif' WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  
NAME = N'RecoveryModel-Diff Database Backup', SKIP, NOREWIND, NOUNLOAD
GO

Ele falha assim como o t_log

Msg 3035, Level 16, State 1, Line 13 Não é possível realizar um backup diferencial para o banco de dados "RecoveryModel", porque não existe um backup de banco de dados atual. Execute um backup completo do banco de dados emitindo novamente BACKUP DATABASE, omitindo a opção WITH DIFFERENTIAL.

Então, o que é "Pseudo-Simples" sobre isso? Os logs crescem, os backups t-log e diferentes falham. Você tem um banco de dados em recuperação completa, sem backup completo.

Edit , parece que há algo específico para servidores na minha compilação que está causando resultados diferentes do que todos os outros estão vendo. Eu aceitei a resposta de Josh.

sql-server backup
  • 3 respostas
  • 391 Views
Martin Hope
James Jenkins
Asked: 2019-11-14 08:59:28 +0800 CST

Variável para selecionar banco de dados na consulta SQL

  • 2

Se eu quiser usar uma variável na FROMcláusula de uma consulta SQL, preciso usar SQL dinâmico. O que pode ser uma dor se a consulta for longa e complexa.

Existem algumas maneiras diferentes de executar uma consulta de um banco de dados ao qual você não está conectado no momento. Os dois métodos que eu uso com mais frequência são esses ..

Select * from msdb..sysjobs_view

ou

USE MSDB
Select * from sysjobs_view

Se você iniciar no banco de dados mestre, ambos os itens acima fornecerão os mesmos resultados.

Quando coloco os dois no SQL dinâmico um funciona e o outro não

A partir do mestre, isso funciona

DECLARE @DBN SYSNAME 
SET @DBN = 'msdb'
DECLARE @Sql NVARCHAR(MAX)
SET @Sql = N'Select * from ' + @DBN + '..sysjobs_view'

EXEC (@Sql)

Mas isso não

DECLARE @DBN SYSNAME 
SET @DBN = 'msdb'
DECLARE @Sql NVARCHAR(MAX)
SET @Sql = N'USE ' + @DBN 

EXEC (@Sql)
Select * from sysjobs_view

eu recebo o erro

Msg 156, Level 15, State 1, Line 14 Sintaxe incorreta perto da palavra-chave 'EXEC'.

Minha razão para isso: uma linha de SQL dinâmico em uma consulta grande e complexa será menos dolorosa para codificar do que tentar transformar toda a consulta em SQL dinâmico. Minha pergunta aqui é apenas sobre por que não está funcionando com a USEcláusula.

Por que não posso usar SQL dinâmico com a USEcláusula para alterar o contexto do banco de dados?

NOTA: O abaixo funciona e seria fácil de codificar. Mas minha pergunta sobre o porquê permanece.

DECLARE @DBN SYSNAME 
SET @DBN = 'msdb'
DECLARE @Sql NVARCHAR(MAX)
SET @Sql = N'USE ' + @DBN  +'
Select * from sysjobs_view
'

EXEC (@Sql)
sql-server sql-server-2017
  • 1 respostas
  • 2310 Views
Martin Hope
James Jenkins
Asked: 2019-10-26 09:29:28 +0800 CST

Por que sp_replmonitorhelpsubscription não funciona sem parâmetros?

  • 2

Estou apenas começando a brincar com todas as ferramentas legais de replicação para monitorar programaticamente a replicação

Uma das primeiras descobertas é sp_replmonitorhelpsubscription

Quando eu executo como

 sp_replmonitorhelpsubscription

eu recebo

Msg 20587, Level 16, State 1, Procedure sp_replmonitorhelpsubscription, Line 77 [Batch Start Line 16]

Valor '@publication_type' inválido para o procedimento armazenado 'sp_replmonitorhelpsubscription'.

De acordo com os documentos do MS, deve ser válido com um padrão nulo

NULL (padrão)

Se eu executá-lo com o parâmetro funciona bem.

sp_replmonitorhelpsubscription  @publication_type = '0' 

Eu o uso com replicação transacional, em um único servidor ( Reporting Copy ) Eu tentei e obtive os mesmos resultados no SQL 2017 e 2016. Estou executando-o no banco de dados de distribuição

Não tenho certeza se estou fazendo algo estúpido, se os documentos do MS estão errados ou o quê.

Por que sp_replmonitorhelpsubscription não funciona sem parâmetros?

sql-server sql-server-2017
  • 1 respostas
  • 338 Views
Martin Hope
James Jenkins
Asked: 2019-10-19 04:04:18 +0800 CST

Arquivo de log SQL 2TB não é suficiente, e agora?

  • 7

Esta é uma pergunta hipotética, que decorre da resposta por sepupic onde eles explicam que 2TB é o limite físico para o arquivo de log SQL.

se você precisar de mais de 2 TB, adicione o segundo arquivo de log.

Há muito tempo acredito que vários arquivos de log são ruins, conforme descrito na postagem Arquivos de log de várias transações e impacto no desempenho

Eu simplesmente não consigo imaginar um cenário em que ocorra 2 TB de arquivos de log, mas se isso acontecer, e por algum motivo backups de log mais frequentes não irão curá-lo ( vários cenários implícitos ), o que você faz?

Você adiciona um segundo arquivo de log ou há algo mais?

sql-server transaction-log
  • 3 respostas
  • 1626 Views
Martin Hope
James Jenkins
Asked: 2019-10-03 06:23:50 +0800 CST

Nunca alterando a senha para distribuidor_admin apenas para instância local?

  • 3

Per O distribuidor_admin precisa de sysadmin? distribuidor_admin precisa de SA e por O nome da conta de 'distributor_admin' pode ser alterado? o nome não pode ser alterado.

A senha é alterada com sp_changedistributor_passwordConsulte sp_changedistributor_password (Transact-SQL) para obter detalhes.

Quando o banco de dados de distribuição está contido em uma instância local, uma senha aleatória é gerada e configurada automaticamente. Fonte

O que tudo isso significa é que quando você tem replicação em uma instância local ( ou seja, banco de dados de relatórios ), ninguém sabe qual é a senha. Parece impossível comprometer a senha. Supondo que você esteja observando e relatando tentativas de login com falha, você saberia se alguém estava tentando forçar a senha com força bruta. Isso leva a um argumento em que não há uma boa razão para alterar a senha regularmente. Você pode querer alterá-lo no primeiro dia, se não confiar na geração de senha aleatória, mas mesmo isso pode adicionar mais risco do que remover, pois agora a senha foi vista e processada com contato humano.

Existe um bom motivo para alterar a senha de distribuidor_admin apenas para instância local?

sql-server replication
  • 1 respostas
  • 800 Views
Martin Hope
James Jenkins
Asked: 2019-09-18 06:33:28 +0800 CST

De onde veio o novo banco de dados 'BackupLocDb_###"?

  • 4

Ontem eu estava trabalhando em um grupo de instâncias AlwaysOn de 3 nós, SQL 2014 SP3, e esta manhã descobri que havia um banco de dados chamado BackupLocDb_1260a388-153d-4c86-a30b-0fd3feafb116no primário. Não criei o banco de dados, mas estou listado como proprietário.

De onde veio esse banco de dados?

As tentativas iniciais de pesquisar no Google me levaram a algumas postagens do AlwaysOn, mas não mencionaram o banco de dados claramente. Também não encontrei no DBA.SE.

sql-server sql-server-2014
  • 1 respostas
  • 3308 Views
Martin Hope
James Jenkins
Asked: 2019-08-29 09:51:27 +0800 CST

Exibir variável local no loop while

  • 4

Eu tenho um loop while que está em execução há dias (bydesign) consulte relacionado Existe um limite para quantos backups podem ser anexados a um único arquivo?

Tenho uma variável local que exibe a contagem de loops, quando executo em uma janela de consulta posso exibir a contagem comprint @counter

Agora estou executando o loop while em um trabalho e quero exibir o @countervalor. Depois de algumas pesquisas tentei RAISERROR (Transact-SQL) que deve ser exibido no log de erros do SQL, mas não está funcionando. Eu li Using RAISERROR acho que tenho o código correto, mas não tenho certeza se pode ser usado em loop While, com uma variável local.

Crie o banco de dados e prepare-o

USE [master]
GO
Create database T_test

USE [master]
GO
ALTER DATABASE [T_test] SET RECOVERY FULL WITH NO_WAIT
GO

BACKUP DATABASE T_test to disk= N'K:\Test\T_test.bak' with noinit --Create first full
GO

Tente executar em uma janela de consulta para testar

DECLARE @counter int
SET @counter = 0
WHILE 1=1
BEGIN 
BACKUP DATABASE [T_test] TO  
DISK = N'K:\Test\T_Test.diff' WITH  DIFFERENTIAL , NOFORMAT, NOINIT,  
NAME = N'T_Test-Diff Database Backup', SKIP, NOREWIND, NOUNLOAD, COMPRESSION
SET @counter = @counter + 1;
RAISERROR(N'Count equals :%d', 16, 1, @counter );
print @counter 
END

Pare após alguns loops e verifique os logs SQL e a mensagem de consulta

T_Test ponto jpeg

O erro não está nos logs SQL, mas é exibido na mensagem de consulta.

Eu não acho que você possa usar GO 5000000com uma variável local, pelo menos nas minhas tentativas, ela é redefinida toda vez que é declarada novamente.

Como posso exibir a variável local em um loop while, em tempo real?

sql-server sql-server-2017
  • 2 respostas
  • 135 Views
Martin Hope
James Jenkins
Asked: 2019-08-08 09:15:05 +0800 CST

Existe um limite para quantos backups podem ser anexados a um único arquivo?

  • 7

Uma pergunta recente me fez olhar para o MS Documents e me perguntar.

Existe um limite para quantos backups podem ser anexados a um único arquivo?

Por padrão, o SQL Server usa NOINITpara anexar novos backups ao arquivo de backup antigo.

{ NOINIT | INIT } Controla se a operação de backup anexa ou substitui os conjuntos de backup existentes na mídia de backup. O padrão é anexar ao conjunto de backup mais recente na mídia (NOINIT). Fonte

Os documentos dizem claramente que a falta de espaço livre em disco fará com que um backup anexado falhe.

Se um arquivo de disco for preenchido enquanto uma operação de backup estiver anexando um backup ao conjunto de mídia, a operação de backup falhará. O tamanho máximo de um arquivo de backup é determinado pelo espaço livre em disco disponível no dispositivo de disco; portanto, o tamanho apropriado para um dispositivo de disco de backup depende do tamanho de seus backups. Fonte

A resposta em SQL Recover from .bak file with NOINIT indica que o Positionfrom RESTORE HEADERONLYindica o backup individual no arquivo. Que é um campo "pequeno", que deve ter no máximo 32.767

Na maioria das vezes, ao pesquisar no Google, você encontra pessoas que estão anexando acidentalmente seus backups e não conseguem entender por que os backups são tão grandes.

Não encontro referências claras sobre quantos backups podem ser anexados, assumindo espaço em disco suficiente. O limite é 32.767 ou algo totalmente diferente?

sql-server backup
  • 3 respostas
  • 922 Views
Martin Hope
James Jenkins
Asked: 2019-07-17 07:09:15 +0800 CST

Como faço para consultar exibições do sistema em um banco de dados SQL Server?

  • 2

Tenho algumas consultas que são executadas no Query Store, a exibição sys.query_store_wait_statsnão está no SQL Server 2016, mas está no SQL Server 2017. Quero que minhas consultas funcionem no SQL Server 2016 e no SQL Server 2017+.

Para fazer isso eu usei IF EXISTScomo abaixo

EXEC sp_query_store_flush_db;

SELECT * INTO Admin.dbo.query_store_runtime_stats FROM sys.query_store_runtime_stats;
SELECT * INTO Admin.dbo.query_store_runtime_stats_interval FROM sys.query_store_runtime_stats_interval;
SELECT * INTO Admin.dbo.query_store_plan FROM sys.query_store_plan;
SELECT * INTO Admin.dbo.query_store_query FROM sys.query_store_query;
SELECT * INTO Admin.dbo.query_store_query_text FROM sys.query_store_query_text;
IF EXISTS(select * FROM sys.views where name = 'query_store_wait_stats') -- View not in SQL Server 2016
    Begin
    SELECT * INTO Admin.dbo.query_store_wait_stats FROM sys.query_store_wait_stats; 
    End
SELECT * INTO Admin.dbo.query_context_settings FROM sys.query_context_settings;

O que parece uma boa solução, EXCETO que, o abaixo não retorna nenhum resultado no banco de dados SQL Server 2017 com o Query Store ativo

select * FROM sys.views where name = 'sys.query_store_wait_stats'

A Microsoft tem esta resposta: Como faço para encontrar todas as exibições em um banco de dados?

USE <database_name>;  
GO  
SELECT name AS view_name   
  ,SCHEMA_NAME(schema_id) AS schema_name  
  ,OBJECTPROPERTYEX(object_id,'IsIndexed') AS IsIndexed  
  ,OBJECTPROPERTYEX(object_id,'IsIndexable') AS IsIndexable  
  ,create_date  
  ,modify_date  
FROM sys.views;  

Mas ele só retorna as visualizações do usuário, NÃO as visualizações do sistema.

Alguns testes simples também não retornam a visualização do sistema, que está presente. Você pode experimentá-los sem um WHEREe não obter nenhuma visualização do sistema.

select * FROM sys.views where name = 'sys.query_store_wait_stats'

SELECT *
   -- DISTINCT NAME 
FROM SYS.OBJECTS
WHERE TYPE IN ('U','V')
AND NAME= 'query_store_wait_stats'

sys.query_store_wait_stats

Eu poderia testar a versão do SQL Server, mas se a exibição for adicionada ao SQL Server 2016 em um Service Pack, quero que minha consulta tenha verificado apenas a presença da exibição.

Como faço para encontrar (ou testar) a presença de uma visualização do sistema?

sql-server sql-server-2016
  • 3 respostas
  • 1321 Views
Martin Hope
James Jenkins
Asked: 2019-04-19 08:23:30 +0800 CST

Como você pode ter uma taxa de acerto de cache de buffer de 100% com PLE de 103? [duplicado]

  • 2
Essa pergunta já tem respostas aqui :
Pressão de memória do SQL Prove - alta taxa de acertos do cache de buffer, mas baixa expectativa de vida da página (2 respostas)
Fechado há 3 anos .

Encontrei O que significa uma "taxa de acertos do cache do buffer" de 9990? ( Eu estava obtendo resultado de 9000+ de um blog que estava errado ) e usei a solução de LowlyDBA/Denis Gobo combinada com o verificador PLE de Denis Gobo e obtive uma taxa de acerto de cache de buffer de 100% com PLE de 103, como é isso possível?

A taxa de acerto do buffer chache de 100% está dizendo que 100% das páginas necessárias estão sendo encontradas na memória, mas o PLE está dizendo que as páginas estão ficando na memória apenas por alguns minutos.

Talvez haja algum valor de PLE, abaixo do qual a taxa de acerto de cache de buffer não agrega valor?

SELECT (a.cntr_value * 1.0 / b.cntr_value) * 100.0 as BufferCacheHitRatio
FROM sys.dm_os_performance_counters  a
JOIN  (SELECT cntr_value, OBJECT_NAME 
    FROM sys.dm_os_performance_counters  
    WHERE counter_name = 'Buffer cache hit ratio base'
        AND OBJECT_NAME = 'SQLServer:Buffer Manager') b ON  a.OBJECT_NAME = b.OBJECT_NAME
WHERE a.counter_name = 'Buffer cache hit ratio'
AND a.OBJECT_NAME = 'SQLServer:Buffer Manager'

SELECT *
FROM sys.dm_os_performance_counters  
WHERE counter_name = 'Page life expectancy'
AND OBJECT_NAME = 'SQLServer:Buffer Manager'

PLE 103

Por que eu me importo:

Minha instância é SQL 2017 CU13, OLTP pesado, com 4 GB de RAM para a instância SQL ( instância única, 6 GB de RAM no servidor ).

Eu sei que mais de 1,5 GB de RAM é dedicado ao Plan Cache, de acordo com algumas fontes dos 4 GB de RAM aqui, o Plan Cache deve ser capaz de usar 3 GB ( encontrei detalhes semelhantes em vários lugares, mas todos são antigos e nenhum é Microsoft )

Select ( SUM(size_in_bytes)) /1024 /1024 AS size_in_MB FROM sys.dm_exec_cached_plans

Ainda não usei nenhum xevents para medir o despejo do plano, apenas tentando entender as coisas.

sql-server performance
  • 1 respostas
  • 915 Views
Martin Hope
James Jenkins
Asked: 2019-03-09 10:10:04 +0800 CST

O que é 'memória de log' no Query Store 2017

  • 4

No SQL 2017 existe uma nova métrica de execução, 'memória de log' diferente da que foi adicionada em 2017 não estou encontrando nada a respeito.

Métrica de execução: (SQL 2017)

Tempo de CPU, duração, contagem de execução, leituras lógicas, gravações lógicas, consumo de memória, leituras físicas, tempo de CLR, grau de paralelismo (DOP), contagem de linhas, memória de log, memória TempDB e tempos de espera

Acredito que entendo quais são todas as outras métricas e por que devo me importar.

Executei todas as métricas para as 5 principais consultas de consumo de recursos, durante vários períodos específicos. Gravei e agora estou examinando os resultados. Eu sei que os valores ( muito grandes ) para 'memória de log' estão em KB.

O que exatamente é a métrica 'memória de log'?

Editar, tendo recebido duas respostas que verifiquei

A resposta do LowlyDBA sugere que é uma combinação de 5 campos relacionados desys.query_store_runtime_stats

Usando o código para validar fornecido por jadarnel27 em sua resposta

Criei o banco de dados '231682' e executei a consulta de teste para os 5 campos, obtive resultados muito semelhantes

231682-Dados

Eu somei ( usado =SUM()no Excel ) meus valores e obtive 1.383.040 (bytes)

Eu olhei no Query Store, para Log memory used (KB), ele mostra um valor de 354.058.240 (KB), esse número é ordens de magnitude maior, também é KB em comparação com bytes, em bytes seria 354.058.240.000 (bytes)

231682-QS

Eu somei os totais de todos os campos e obtive apenas 1.655.236 (byte)

SELECT *
FROM sys.query_store_runtime_stats qsrs
WHERE qsrs.avg_log_bytes_used > 0;

Suspeito que a resposta à minha pergunta é que a métrica 'memória de log' no SQL 2017 não é nenhum valor real. O valor apresentado neste pequeno experimento seria de 354 GB, um valor irrealisticamente alto.

sql-server sql-server-2017
  • 2 respostas
  • 481 Views
Martin Hope
James Jenkins
Asked: 2019-03-09 04:49:33 +0800 CST

Como posso exportar dados do Repositório de Consultas?

  • 7

Eu tenho o Query Store (QS) em execução em uma instância do SQL 2017. Atualmente em RTM, com RTM CU13 atualmente em teste, para ser aplicado em prod na janela de patch do próximo mês.

Embora a maioria das consultas e relatórios retornem resultados rapidamente com pouco ou nenhum impacto, qualquer coisa que eu tento analisar espera é problemática. O uso da CPU sobe de 20 para 80 por cento e permanece lá por minutos até que eu o mate. Este é um sistema de produção 24 horas por dia, 7 dias por semana, portanto, se eu realmente quiser ver as esperas do QS, precisarei fazê-lo em outro lugar.

O banco de dados tem 150 GB com 1000 MB de espaço para QS. Eu tenho uma sandbox com 10 GB de espaço, então se eu pudesse obter os dados do QS, eu poderia brincar com eles lá.

Dei uma olhada e não estou achando como fazer isso. O melhor que encontrei foi este post sql.sasquatch 2016 com uma resposta de 2016 de Erin Stellato

No momento, não há opção para exportar e/ou importar dados do Query Store, mas há um item Connect para votar: https://connect.microsoft.com/SQLServer/feedback/details/2620017/export-query-store -tables-separately-from-the-database-tables

Nota: O link vai para um redirecionamento "Microsoft Connect Has Been Retired" Parece que o link real deve ser para https://feedback.azure.com/forums/908035-sql-server/suggestions/32901670-export-query-store -tabelas-separadamente-dos-dados

Olhando para a Microsoft, acho que quase tudo que você pode usar para acessar os dados é uma exibição, procedimento armazenado ou relatório. Não estou vendo uma maneira de extrair todas as coisas do QS do banco de dados.

Exemplos de consultas diretas, use as visualizações Exemplo de Kendra Little Eu brinquei com a ideia de apenas fazer um Select *a partir das visualizações e exportar os resultados para minha sandbox. Mas como não encontrei ninguém falando sobre isso, não tenho certeza se é uma boa ideia.

Relacionado

  • Prática recomendada com o repositório de consultas
  • Como o Repositório de Consultas Coleta Dados
  • Exibições do Catálogo do Repositório de Consultas
  • Procedimentos armazenados do repositório de consultas
  • Monitorando o desempenho usando o Repositório de Consultas

Além disso , gostaria de poder manter os resultados do Repositório de Consultas de pré-CU13 para usar como linha de base para comparar pós-CU13.

Editar após a primeira resposta e edições na mesma As edições recentes da resposta de jadarnel27 adicionam boas informações, mas não me importo com a interface do usuário, quero poder consultar os dados sem alterar o banco de dados ou afetar o desempenho. Como objetivo secundário, gostaria de poder arquivar os dados do QS, para que eu possa revisar o desempenho anterior (ou seja, antes e atualizar, mas depois que os dados antigos do QS forem removidos)

sql-server sql-server-2017
  • 3 respostas
  • 3927 Views
Martin Hope
James Jenkins
Asked: 2019-01-10 08:07:04 +0800 CST

Como visualizar os dados do event_file xEvent

  • 0

Eu tenho um pequeno xEvent que está enviando os resultados como .xel para um event_file em G:\XEvents e quero explorar os dados com SSMS. Andei procurando uma solução e encontrei vários posts sobre a leitura do XML criado por ring buffers. Mas não consigo fazê-lo funcionar no meu event_file.

Eu li o post de Jes Schultz Borland Como consultar o XML de destino de eventos estendidos , mas não está funcionando para mim. Não fiz nada significativo com XML e, quando abro o event_file com o word, não parece XML.

Posso exibi-lo usando o SSMS; > Instância > Gerenciamento > Eventos estendidos > Sessões > [MeuEvento] > Pacote > Exibir dados de destino, mas não consigo consultá-los.

sql-server ssms
  • 2 respostas
  • 3250 Views
Martin Hope
James Jenkins
Asked: 2018-12-13 06:28:37 +0800 CST

É possível saber se uma conexão de entrada está usando um alias do SQL Server?

  • 0

Usar o SQL Server Configuration Manager para criar um alias de servidor para uso por um cliente é uma ferramenta legal usada em muitos casos quando funciona

Na minha posição de DBA, não tenho acesso ao servidor de aplicativos, para ver se o SQL Server Configuration Manager ou o SQL Server Client Network Utility (não tenho certeza se este é o link correto) foi usado para criar um alias.

Existe alguma maneira de usar o SSMS ou quaisquer logs, eventos etc. para identificar que uma conexão de entrada está se conectando a um Alias?

sql-server alias
  • 1 respostas
  • 127 Views
Martin Hope
James Jenkins
Asked: 2018-10-25 07:35:41 +0800 CST

Por que o encadeamento de propriedade de banco de dados cruzado está ativado por padrão para o banco de dados do sistema

  • 1

Estou lendo sobre a opção de configuração do servidor de encadeamento de propriedade de banco de dados cruzado

Ele fala sobre como e por que usar (ou não) essa opção e diz

Definir o encadeamento de propriedade entre bancos de dados como 1 não é recomendado, a menos que todos os bancos de dados hospedados pela instância do SQL Server devam participar do encadeamento de propriedade entre bancos de dados e você esteja ciente das implicações de segurança dessa configuração.

Ele também oferece este código para verificar.

SELECT is_db_chaining_on, name FROM sys.databases;

De acordo com as opções de configuração do servidor (SQL Server) , o valor padrão para 'encadeamento de propriedade de banco de dados cruzado' é 0 (zero)

Quando eu o executo em meus servidores, antigo, novo ou o que quer que pareça, ele está habilitado no master, tempdb e msdb. Verifiquei alguns do SQL 2012 ao SQL 2017, edições Enterprise e Standard.

Eu descobri que ele está definido como padrão, mas não por quê.

  • configurações do tempdb Não podem ser alteradas
  • configurações principais Não podem ser alteradas
  • configurações do msdb Podem ser alteradas

Se estiver ruim, por que está ativado por padrão nos bancos de dados do sistema?

Por que não estou encontrando nada falando sobre por que está ativado por padrão nos bancos de dados do sistema?

sql-server configuration
  • 1 respostas
  • 681 Views
Martin Hope
James Jenkins
Asked: 2018-09-08 04:50:03 +0800 CST

Como parar o Agendador de Trabalho do SQL Server Agent com T-SQL?

  • 1

Eu tenho um trabalho que inicio manualmente em períodos de tempo coordenados que faz um monte de trabalho pesado ( principalmente restaurando backups e configurando para um servidor diferente )

Há vários trabalhos programados para serem executados com incrementos de minutos a dias. Eu quero "desligar" o agendador para que nada seja executado dentro do cronograma até que meu trabalho manual seja concluído. Percebo que os trabalhos perdidos não serão executados novamente até o próximo horário agendado, depois que o agendador for reiniciado.

  • Primeiro passo: parar o agendador
  • Várias etapas de levantamento pesado: faça o trabalho duro
  • Último passo: iniciar agendador

Encontrei um comando Oracle , mas sou 100% Microsoft SQL Server

Eu sei que se eu desligar o agente SQL, os trabalhos não serão executados, mas não é isso que estou procurando.

Os empregos que existem hoje, não devem ser os mesmos empregos da próxima vez. Desabilitar trabalhos com EXEC dbo.sp_update_job não é uma solução viável.

Informações adicionais: Também pode haver trabalhos em vigor que foram desativados intencionalmente por algum motivo e que desejam ser reativados. Parar o agendador parece ser a melhor escolha.

sql-server sql-server-2014
  • 2 respostas
  • 6030 Views
Martin Hope
James Jenkins
Asked: 2018-08-23 07:14:19 +0800 CST

Como pesquisar no Query Store por uma palavra ou comando específico em uma consulta?

  • 2

Tenho uma Enterprise Edition do SQL 2016 SP1, que possui um banco de dados com Query Store ativo.

Desejo pesquisar uma palavra ou comando específico nas consultas salvas. Já pesquisei e não vi nada. Nesse caso, quero encontrar 'SHRINK', mas a mesma abordagem deve ser usada para qualquer texto na consulta armazenada.

Antecipando o "por quê?" Comente. Eu tenho um aplicativo de fornecedor que faz muito trabalho e reduz o banco de dados e os arquivos de log. Estou tentando encontrar a consulta que faz isso.

Como pesquisar no Query Store por uma palavra ou comando específico em uma consulta?

sql-server sql-server-2016
  • 1 respostas
  • 273 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