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

A_V's questions

Martin Hope
A_V
Asked: 2019-02-08 18:33:28 +0800 CST

Otimização do Postgres CTE com json_build_object aninhado

  • 3

Estou tentando escrever uma consulta que retorna dados de várias tabelas e os agrega em um campo JSON aninhado. Eu sinto que isso teria um ótimo desempenho no SqlServer, mas, como Brent Ozar escreveu neste post, o otimizador do Postgres isola as consultas CTE juntas. Isso me força a usar uma WHEREinstrução no primeiro nível do CTE, pois, caso contrário, carregaria todo o conjunto de dados todas as vezes. Isso e as funções JSON específicas que eu realmente não estou acostumado a me fazer pensar se isso poderia ter um desempenho melhor.

Eu tentei escrever isso sem um CTE, mas não sabia como aninhar subconsultas.

Existe algum truque postgres que estou perdendo aqui? Esses índices são eficazes?

A saída se parece com isso:

[{
    "item_property_id": 1001010,
    "property_name": "aadb480d8716e52da33ed350b00d6cef",
    "values": [
        "1f64450fae03b127cf95f9b06fca4bca",
        "9a6883b8a87a5028bf7dfc27412c2de8"
    ]
},{
    "item_property_id": 501010,
    "property_name": "e870e8d81e16ee46c75493856b4c6b66",
    "values": [
        "a6bed25b407c515bb8a55f2e239066ec",
        "feb10299fd6408e0d37a8761e334c97a"
    ]
},{
    "item_property_id": 1010,
    "property_name": "f2d7b27c50a059d9337c949c13aa3396",
    "values": [
        "56674c1c3d66c832abf87b436a4fd095",
        "ff88fe69f4438a6277c792faaf485368"
    ]
}]

Aqui está o script para gerar o esquema e testar os dados

--create schema
drop table if exists public.items;
drop table if exists public.items_properties;
drop table if exists public.items_properties_values;
create table public.items(
    item_id integer primary key,
    item_name varchar(250));                      
create table public.items_properties(
    item_property_id serial primary key,
    item_id integer,
    property_name varchar(250));                      
create table public.items_properties_values(
    item_property_value_id serial primary key,
    item_property_id integer,
    property_value varchar(250));
CREATE INDEX items_index
    ON public.items USING btree
    (item_id ASC NULLS LAST,item_name asc nulls last)
    TABLESPACE pg_default; 
CREATE INDEX properties_index
    ON public.items_properties USING btree
    (item_property_id ASC NULLS LAST,item_id asc nulls last,property_name asc nulls last)
    TABLESPACE pg_default;
CREATE INDEX values_index
    ON public.items_properties_values USING btree
    (item_property_value_id ASC NULLS LAST,item_property_id asc nulls last,property_value asc nulls last)
    TABLESPACE pg_default;

--insert dummy data
insert into public.items                        
SELECT generate_series(1,500000),md5(random()::text);

insert into public.items_properties (item_id,property_name)
SELECT item_id,md5(random()::text) from public.items;
insert into public.items_properties (item_id,property_name)
SELECT item_id,md5(random()::text) from public.items;
insert into public.items_properties (item_id,property_name)
SELECT item_id,md5(random()::text) from public.items;


insert into public.items_properties_values (item_property_id,property_value)
select item_property_id,md5(random()::text) from public.items_properties;
insert into public.items_properties_values (item_property_id,property_value)
select item_property_id,md5(random()::text) from public.items_properties;

--Query returned successfully in 22 secs 704 msec.

Aqui está o comando SQL

Sem o where na terceira linha, leva ~ 15 segundos para carregar. Eu entendo que isso está carregando milhares de registros, então talvez esteja funcionando bem, mas eu REALMENTE gostaria de uma segunda opinião.

with cte_items as (
    select item_id,item_name from public.items  
    --where item_id between 1000 and 1010
),cte_properties as (
    select ip.item_id,ip.item_property_id,ip.property_name from public.items_properties ip
    inner join cte_items i on i.item_id=ip.item_id
),cte_values as (
    select ipv.item_property_value_id,ipv.item_property_id,ipv.property_value from public.items_properties_values ipv
    inner join cte_properties p on ipv.item_property_id=p.item_property_id
)
select i.item_id,i.item_name,json_agg(json_build_object('item_property_id',prop.item_property_id,'property_name',prop.property_name,'values',prop.values))
from cte_items i
left join (
    select cp.item_id,cp.item_property_id,cp.property_name,json_agg(to_json(cv.property_value)) "values"
    from cte_properties cp
    left join ( select val.item_property_id,val.property_value from cte_values val ) cv on cv.item_property_id=cp.item_property_id
    group by cp.item_id,cp.item_property_id,cp.property_name
) prop
on i.item_id=prop.item_id
group by i.item_id,i.item_name
postgresql postgresql-9.6
  • 2 respostas
  • 2479 Views
Martin Hope
A_V
Asked: 2018-11-10 06:29:52 +0800 CST

Remover caracteres nulos invisíveis do final de uma string

  • 3

Por um motivo desconhecido, muitas strings em uma das minhas colunas VARCHAR(1000) foram encerradas com caracteres invisíveis.

declare @BrokenString varbinary(max)=0x6D0079002000620075006700670065006400200073007400720069006E00670000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003F003F00;
select cast(@BrokenString as nvarchar(max)) -- returns 'my bugged string'
select cast(@BrokenString as nvarchar(max)) + ' is bugged' -- still returns 'my bugged string' !

declare @BrokenStringTable table (Brokey nvarchar(max));
insert into @BrokenStringTable
select cast(@BrokenString as nvarchar(max));
select * from @BrokenStringTable for json auto;

A saída da select * from @BrokenStringTable for json auto;instrução se parece com isso:

[{"Brokey":"my bugged string\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000??"}]

Como posso detectar quais registros na minha tabela contém esses caracteres? Parece que usar charindex, where+like e quaisquer outras soluções normais simplesmente não funcionam com elas.

sql-server sql-server-2016
  • 2 respostas
  • 4455 Views
Martin Hope
A_V
Asked: 2018-08-22 04:57:28 +0800 CST

Função de manipulação Sqlserver IPV6 ou conversão numérica

  • 3

Estou procurando maneiras de lidar com intervalos de endereços CIDR IPv6 no SqlServer.

Os dados que obtive estão formatados conforme abaixo e possuem estas colunas:

Int_IP_Start, Int_IP_End, CIDR_Range, ASN, Name

para IPv4

"2868826112","2868826623","170.254.208.0/23","265116","Wave Net"
"2868827136","2868828159","170.254.212.0/22","265381","Furtado & Furtado Provedores LTDA"
"2868828928","2868829183","170.254.219.0/24","264770","Leonir Remussi (KDMNET)"
"2868829184","2868829439","170.254.220.0/24","265373","NET TELECOMUNICACOES LTDA - ME"
"2868829440","2868829695","170.254.221.0/24","265373","NET TELECOMUNICACOES LTDA - ME"
"2868830208","2868831231","170.254.224.0/22","265382","TELECOM LTDA ME"
"2868831232","2868831487","170.254.228.0/24","27951","Media Commerce Partners S.A"

E isso é o mesmo, mas para IPv6

"58568835385568506466387976054061924352","58568835464796668980652313647605874687","2c0f:f288::/32","328039","JSDAAV-ZA-Telecoms-AS"
"58568842991472107835764385034281156608","58568842991473316761583999663455862783","2c0f:f2e8::/48","37182","TERNET"
"58568844892948008178108487279335964672","58568844892949217103928101908510670847","2c0f:f300::/48","37153","Hetzner"
"58568847428249208634567290272742375424","58568847507477371148831627866286325759","2c0f:f320::/32","37126","BELL-TZ"
"58568849329725108976911392517797183488","58568849408953271491175730111341133823","2c0f:f338::/32","327983","Interworks-Wireless-Solutions"

A representação numérica de um único IPv6 é bastante grande, pois o espaço de endereço é equivalente a um inteiro de 128 bits.

O objetivo aqui é ter uma maneira de uma consulta de banco de dados retornar se um IP faz ou não parte de um dos intervalos armazenados que vieram do CSV.

Para o IPv4 é fácil, você pega o IP e converte para seu equivalente INT32.

Como não há tipo de dados INT128 no SqlServer, tenho as seguintes perguntas:

-Existe uma maneira de criar um tipo personalizado que armazenaria um bigint de 128 bits? (Só precisa executar operações maiores ou menores que)

-Existe uma maneira de lidar adequadamente com intervalos de endereços IP no SqlServer?

EDITAR:

Aqui está o maior número que um endereço IPv6 pode representar:

    string LongestIp = "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff";
    var SerializedIp = IPNetwork.ToBigInteger(IPAddress.Parse(LongestIp));
    Console.WriteLine(SerializedIp.ToString());

Este código c# gera 340282366920938463463374607431768211455

Tentando inserir isso

declare @ipv6Decimals table (Ip decimal(38,0));

insert into @ipv6Decimals (Ip) values (58568844892949217103928101908510670847); --this is okay,
--When maximum precision is used, valid values are from - 10^38 +1 through 10^38 - 1
insert into @ipv6Decimals (Ip) values (99999999999999999999999999999999999999); --This is the largest numeric(38,0) will fit
insert into @ipv6Decimals (Ip) values (340282366920938463463374607431768211455);-- This is too large

Msg 1007, Level 15, State 1, Line 3 O número '340282366920938463463374607431768211455' está fora do intervalo para representação numérica (precisão máxima 38).

sql-server-2016 ipv6
  • 1 respostas
  • 1539 Views
Martin Hope
A_V
Asked: 2017-10-27 05:21:58 +0800 CST

Meu índice é muito caro para manter?

  • 0

Acabei de indexar uma visão que retorna 126 milhões de linhas.

Há um processo que usa essa visão para atualizar linhas usando um gatilho e é de longe o processo mais caro do meu banco de dados.

Estou monitorando esses novos DMVs de uso de índice e tenho uma forte sensação de que há muito poder de processamento envolvido na manutenção desse índice para equilibrar sua utilidade.

Executando a consulta abaixo, ele me diz que a cada 2-5 segundos há uma busca de usuário neste índice. Durante o mesmo período, haverá cerca de 250 a 1.000 atualizações de usuários. Desde sua criação há 15 minutos, USER_SEEKS=386 enquanto USER_UPDATES=102 876.

Existe uma proporção mágica em que você pode dizer com segurança que não vale a pena manter esse índice?

SELECT OBJECT_NAME(S.[OBJECT_ID]) AS [OBJECT NAME], 
       I.[NAME] AS [INDEX NAME], 
       USER_SEEKS, 
       USER_SCANS, 
       USER_LOOKUPS, 
       USER_UPDATES 
FROM   SYS.DM_DB_INDEX_USAGE_STATS AS S 
       INNER JOIN SYS.INDEXES AS I ON I.[OBJECT_ID] = S.[OBJECT_ID] AND I.INDEX_ID = S.INDEX_ID 
WHERE  OBJECTPROPERTY(S.[OBJECT_ID],'IsUserTable') = 1
       AND S.database_id = DB_ID()
       and I.NAME ='<index_name_goes_here>'
sql-server sql-server-2016
  • 1 respostas
  • 103 Views
Martin Hope
A_V
Asked: 2017-09-13 05:22:58 +0800 CST

selecione distinto em dados csv

  • 1

Uma tabela tem dados CSV e eu quero fazer um SELECT DISTINCT IDnessa tabela, como devo proceder?

+-----------+
| id        |
+-----------+
| 111,1487  |
+-----------+
| 462       |
+-----------+
| 2492      |
+-----------+
| 3184      |
+-----------+
| 3181,3184 |
+-----------+
| 3181      |
+-----------+
| 440       |
+-----------+
| 1436      |
+-----------+

Eu tenho uma função que eu costumo usar que pode dividir varchar csv string de INTs em uma tabela de uma coluna que eu uso da seguinte forma:

SELECT number from INTLIST_TO_TBL('123,234,345,4566')

Funciona bem, mas não posso usá-lo neste caso, pois há muitas linhas e retornará várias linhas em determinados casos.

Devo tentar usar um cursor que insere em uma tabela temporária e prosseguir para a próxima etapa consultando essa tabela temporária?

Já me disseram que os cursores são sinônimo de desempenho ruim, e é por isso que sempre recorro a perguntar aqui antes de seguir esse caminho.

sql-server sql-server-2008-r2
  • 1 respostas
  • 1143 Views
Martin Hope
A_V
Asked: 2017-09-02 04:50:39 +0800 CST

JDBC Sqlserver para pesquisa elástica: uma entrada para uma saída diferente?

  • 1

Eu tenho um banco de dados sqlserver2016 que desejo indexar no elasticsearch usando o logstash.

Aqui está o meu arquivo de configuração do logstash que funciona um pouco:

input {
jdbc {
jdbc_driver_library => "C:\elastic\Microsoft-JDBC-Driver-6.0-for-SQL-Server\sqljdbc_6.0\enu\jre8\sqljdbc42.jar"
jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
jdbc_connection_string => "jdbc:sqlserver://10.11.12.13:1433;databaseName=testdb1;integratedSecurity=false;user=ElasticExtractor;password=flyingweisels;"
jdbc_user => "ElasticExtractor"
jdbc_password => "flyingweisels"
statement => "select top 150000 Item_ID itemid,merchant_id merchantid,modelnumber,language_id from items order by Item_Id desc"
}
}
output {
elasticsearch {
hosts => "localhost:9200"
index => "testdata"
document_type => "testtype"
document_id => "%{itemid}"
}
}

Então, o que esse arquivo deve fazer, conforme configurado, é inserir 150 mil itens no elasticSearch. Um pouco importa apenas cerca de um terço disso, como 62 382 neste caso. Se eu tentar inserir 50k ele só insere cerca de 20k. Existe uma razão óbvia para fazer isso?

Aqui está o log de execução atual:

[2017-09-01T08:16:31,923][INFO ][logstash.outputs.elasticsearch] Elasticsearch pool URLs updated {:changes=>{:removed=>[], :added=>[http://localhost:9200/]}}
[2017-09-01T08:16:31,927][INFO ][logstash.outputs.elasticsearch] Running health check to see if an Elasticsearch connection is working {:healthcheck_url=>http://localhost:9200/, :path=>"/"}
[2017-09-01T08:16:32,006][WARN ][logstash.outputs.elasticsearch] Restored connection to ES instance {:url=>"http://localhost:9200/"}
[2017-09-01T08:16:32,007][INFO ][logstash.outputs.elasticsearch] Using mapping template from {:path=>nil}
[2017-09-01T08:16:32,042][INFO ][logstash.outputs.elasticsearch] Attempting to install template {:manage_template=>{"template"=>"logstash-*", "version"=>50001, "settings"=>{"index.refresh_interval"=>"5s"}, "mappings"=>{"_default_"=>{"_all"=>{"enabled"=>true, "norms"=>false}, "dynamic_templates"=>[{"message_field"=>{"path_match"=>"message", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false}}}, {"string_fields"=>{"match"=>"*", "match_mapping_type"=>"string", "mapping"=>{"type"=>"text", "norms"=>false, "fields"=>{"keyword"=>{"type"=>"keyword", "ignore_above"=>256}}}}}], "properties"=>{"@timestamp"=>{"type"=>"date", "include_in_all"=>false}, "@version"=>{"type"=>"keyword", "include_in_all"=>false}, "geoip"=>{"dynamic"=>true, "properties"=>{"ip"=>{"type"=>"ip"}, "location"=>{"type"=>"geo_point"}, "latitude"=>{"type"=>"half_float"}, "longitude"=>{"type"=>"half_float"}}}}}}}}
[2017-09-01T08:16:32,050][INFO ][logstash.outputs.elasticsearch] New Elasticsearch output {:class=>"LogStash::Outputs::ElasticSearch", :hosts=>["//localhost:9200"]}
[2017-09-01T08:16:32,053][INFO ][logstash.pipeline        ] Starting pipeline {"id"=>"main", "pipeline.workers"=>4, "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>500}
[2017-09-01T08:16:32,219][INFO ][logstash.pipeline        ] Pipeline main started
[2017-09-01T08:16:32,313][INFO ][logstash.agent           ] Successfully started Logstash API endpoint {:port=>9600}
[2017-09-01T08:16:32,643][INFO ][logstash.inputs.jdbc     ] (0.050000s) select top 150000 Item_ID itemid,merchant_id merchantid,modelnumber,language from items order by Item_Id desc
[2017-09-01T08:16:49,805][WARN ][logstash.agent           ] stopping pipeline {:id=>"main"}

A segunda coisa é, digamos que eu queira inserir uma linha do servidor SQL que vem dessa entrada, qual plugin posso usar para que se a linha tiver um “merchant_id” específico ela vá em um TYPE elástico nomeado com esse ID. Além disso, se tiver um “idioma” específico, ele vai em um ÍNDICE elástico com esse idioma como nome. Isso pode ser feito? Devo simplesmente criar vários arquivos de configuração do Logstash, um para cada uma dessas tarefas?

elasticsearch
  • 1 respostas
  • 1095 Views
Martin Hope
A_V
Asked: 2017-08-04 06:01:40 +0800 CST

Função com valor de tabela VS Procedimento armazenado

  • 2

Existe uma função que:

  • retorna apenas 1 linha
  • tem apenas 1 parâmetro
  • tem várias junções em tabelas diferentes, cada uma apenas para retornar um único valor escalar
  • é chamado apenas uma vez em cada login de uma aplicação web

Atualmente, é escrito em c# linq-to-sql e leva de 150 a 300 ms para ser executado.

Depois de reescrevê-lo em SQL usando uma SELECTinstrução muito simples, leva 30ms para ser executado.

Agora eu quero encapsular este select em uma função de banco de dados, qual é a melhor maneira (execução mais rápida) de fazer isso?

  1. Faça uma visualização e a cada chamada faça algo como select * from viewXX where id=123
  2. Faça um procedimento armazenado
  3. Faça uma função com valor de tabela

SSMS

Existem alguns truques que eu poderia aproveitar em tal caso?

Aqui está um exemplo de como a consulta se parece

declare @id int=162;
select top 1 i.id, i.name, itd.description,
(select top 1 case when count(*)>0 then '1' else '0' end from category where category_desc=itd.description) "HasCategory",
(select top 1 number from wheels where wheel_item_id=i.id) "WheelCount"
from items i left items_desc itd on i.id=itd.itemid where i.id=@id
sql-server select
  • 1 respostas
  • 1861 Views
Martin Hope
A_V
Asked: 2017-02-15 07:19:09 +0800 CST

O logshipping em espera falha quando o usuário está fazendo operações de leitura no banco de dados

  • 0

Eu tenho uma instância do SQLSERVER 2008 com uma configuração de espera usando o envio de logs.

O servidor de produção executa um trabalho LSBACKUP a cada 30 minutos, envia-o para o servidor em espera e o servidor em espera LSRESTORE o log enviado.

O problema que estou tendo é que o trabalho LSRESTORE falhará se alguma sessão de usuário estiver acessando o banco de dados, mesmo que não tenha transações ativas contendo nenhuma operação de gravação.

Os bancos de dados estão no (Standby / Read-Only)modo, portanto, não há operações de gravação que possam estar pendentes nele, simplesmente desenvolver as tabelas de banco de dados no SSMS bloqueará o trabalho LSRESTORE com o seguinte log de erros:

2017-02-14 09:29:22.87  *** Error: Exclusive access could not be obtained because the database is in use.
RESTORE LOG is terminating abnormally.(.Net SqlClient Data Provider) ***

A única solução que encontrei é quando isso acontece, posso definir o banco de dados como single_user e voltar para multi_user para limpar o erro. Eu também poderia colocar os comandos SQL no trabalho SQLAGENT em uma etapa antes da restauração, mas parece mais um hack do que uma correção!

ALTER DATABASE [db_name_goes_here] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE [db_name_goes_here] SET MULTI_USER

Meu modo de espera pode ser protegido desse problema de alguma forma?

sql-server sql-server-2008
  • 1 respostas
  • 514 Views
Martin Hope
A_V
Asked: 2016-11-11 07:33:40 +0800 CST

Alterando a coluna WHAT de DBA_JOBS

  • 2

Estou usando um trabalho para atualizar uma visão materializada.

Descobri que o trabalho se bloquearia se exec dbms_refresh.refresh(''"<schema>"."<materialized_view_name>"'');não fosse confirmado e gostaria de alterar a coluna "o que" do trabalho para incluir um commit.

Eu enfrento duas soluções possíveis:

solução 1: uma maneira mais complicada é recriar totalmente o trabalho, o que gostaria de evitar

CorreSYS.DBMS_JOB.REMOVE(14133); COMMIT;

Recrie todo o trabalho para incluir agora o commit

DECLARE
  X NUMBER;
BEGIN
  SYS.DBMS_JOB.SUBMIT
  ( job       => X 
   ,what      => 'exec dbms_refresh.refresh(''"<schema>"."<materialized_view_name>"'');COMMIT;'
   ,next_date => to_date('11-11-2016 00:00:00','dd/mm/yyyy hh24:mi:ss')
   ,interval  => 'trunc(sysdate)+1   '
   ,no_parse  => FALSE
  );
  SYS.DBMS_OUTPUT.PUT_LINE('Job Number is: ' || to_char(x));
COMMIT;
END;
/

solução 2: atualize a visão DBA_JOBS diretamente executando uma instrução de atualização normal na visão

update dba_jobs set what=(
select what from dba_jobs 
where job in ( '1','2','3','<etc>')
)||'COMMIT;'  
where job in ( '1','2','3','<etc>');

Existe uma solução melhor do que essas duas, a solução dois é possível?

Eu gostaria de evitar a solução 1, pois vamos sugerir que não tenho o código para a exibição em mãos, isso levaria mais tempo e, além disso, vamos sugerir que tenho centenas para modificar.

oracle oracle-11g
  • 1 respostas
  • 3996 Views
Martin Hope
A_V
Asked: 2016-10-19 08:06:25 +0800 CST

Maneira mais rápida de restaurar o envio de logs de vários bancos de dados

  • 2

Procurando a maneira mais rápida de restaurar vários bancos de dados em espera do SQL Server que ficaram fora de sincronia.

  • O servidor A é um servidor de produção, possui 50 bancos de dados configurados com LSBACKUPjobs.

  • O servidor B é um servidor em espera, possui 50 bancos de dados em READONLY/STANDBYmodo de atualização LSCOPYe LSRESTOREtrabalhos.

O seguinte erro surge após uma longa manutenção*:

O log neste conjunto de backup começa em LSN 5286000000042100001, que é muito recente para ser aplicado ao banco de dados. Um backup de log anterior que inclui LSN 5286000000039400001 pode ser restaurado.

Obviamente, o LSN necessário não foi encontrado em nenhum lugar, portanto, a maneira de corrigir isso seria fazer um backup completo no banco de dados de produção NORECOVERYe restaurá-lo no modo de espera e, em seguida, reiniciar as tarefas de restauração.

A questão aqui é fazer isso um por um é um processo longo e tedioso:

Qual é a abordagem mais rápida para resolver esse problema? Não estou procurando tanto uma maneira de fazer os backups mais rápidos do que uma maneira de automatizar o todo.


* Rebaixamos de Enterprise para Standard e, de alguma forma, a cadeia de envio de toras foi interrompida no processo.

sql-server sql-server-2008-r2
  • 2 respostas
  • 1762 Views
Martin Hope
A_V
Asked: 2016-09-23 06:55:00 +0800 CST

Instantâneo do EXPDP monitoramento ao vivo muito antigo

  • 1

Os erros prováveis ​​que geram "instantâneos muito antigos" durante a exportação do datapump estão bem documentados em toda a Internet, como:

  • parâmetro undo_retention sendo muito curto
  • os grupos de redo logs são muito pequenos ou muito poucos
  • desfazer tablespace é muito pequeno

Existe uma maneira de monitorar esses casos de falha enquanto o trabalho está sendo executado?

O tipo de solução que estou procurando seria uma consulta que relatasse:

  • porcentagem total do uso do espaço de tabela de desfazer do instantâneo até que ele precise se estender automaticamente ou atingir o máximo
  • porcentagem total de uso de redo logs até que ele se sobrescreva
  • tempo restante até que a retenção de desfazer seja alcançada pelo instantâneo

Qualquer consulta que faça parte dessas coisas seria bem-vinda. Procurar essas informações requer pacotes analíticos do oracle? É possível consultar tal coisa?

oracle-11g-r2 oracle-12c
  • 1 respostas
  • 1291 Views
Martin Hope
A_V
Asked: 2016-06-24 09:25:32 +0800 CST

Arquivos .msi ausentes dão erro ao reparar o SQL Server 2008R2

  • 5

Eu tenho um banco de dados SQL Server 2008R2 SP1 instalado e estou tentando executar um reparo nele usando binários de instalação 2008R2.

No meio do carregamento do reparo, a janela desliga repentinamente e me dá essa mensagem de erro, alguém sabe o que fazer com isso? Minhas habilidades de busca me deixaram em paz a partir de agora.

http://i.stack.imgur.com/KVtM6.png

sql-server sql-server-2008-r2
  • 2 respostas
  • 9810 Views
Martin Hope
A_V
Asked: 2016-05-10 09:37:04 +0800 CST

Tarefa travada no estúdio de gerenciamento, como você lida com isso?

  • 17

Depois de clicar em "Tomar banco de dados offline" no estúdio de gerenciamento, esta mensagem fica travada e não será fechada se você clicar em fechar.

https://i.imgur.com/KD6AROv.png

Qual é uma boa maneira de lidar com trabalhos presos como esses no estúdio de gerenciamento? Você pode matá-los através do monitor de atividade? Devo procurar qual processo está impedindo que este trabalho seja concluído e encerrá-lo?

sql-server ssms
  • 3 respostas
  • 32835 Views
Martin Hope
A_V
Asked: 2016-05-04 07:17:26 +0800 CST

Monitore se o sqlserver estiver ativo em um servidor distante usando sqlcmd

  • 3

Eu quero monitorar se meu sqlserver está ativo de uma máquina distante.

Atualmente, envio uma consulta simples "select @@version" com sqlcmd e, em seguida, valido se essa consulta retornou a parte esperada do texto:

sqlcmd -S np:\\<servername>\pipe\sql\query -i version.sql | findstr /I "expected string"

então prossigo para validar as condições com base neste evento.

Existe uma maneira melhor de monitorar eventos db up e eventos db down?

Obrigado

sql-server sqlcmd
  • 1 respostas
  • 80 Views
Martin Hope
A_V
Asked: 2016-03-23 11:39:47 +0800 CST

Banco de dados em recuperação simples para economizar espaço

  • 1

Esta antiga instância do SQL Server 2000 possui um disco de 14 Gb para dados e um disco de 30 Gb para backups.

Mesmo sendo antigo, ainda tem muitos usuários fazendo transações, então o arquivo de log do único banco de dados que está neste servidor preenche a unidade de dados todos os dias.

Achei que deveria colocá-lo em recuperação simples e liberar o log de transações, mas me pergunto o que isso afeta.

Sem um T-log, você não pode usar seu backup para recuperar em qualquer outro ponto no tempo que não seja o backup completo, certo? Quais são os impactos mais importantes além disso que devo estar ciente ao fazer essa alteração em um banco de dados? O que mais do que perder um dia de dados (é backup diário em fita) pode acontecer quando não estou gerando t-logs?

desde já, obrigado

sql-server sql-server-2000
  • 2 respostas
  • 670 Views
Martin Hope
A_V
Asked: 2015-12-30 08:35:44 +0800 CST

Definições de forma normal

  • 0

Tive problemas para encontrar uma definição direta de formulários normais online.

Não quero nenhum exemplo ou metáfora, apenas o que cada forma é definida em um formato legal! Acredito que haja mais de 4 formulários normais, então seria muito apreciado se você pudesse fornecer informações extras.

Por favor, complete qualquer informação ausente que eu encontrei ou coloque-a em um formato melhor:

1FN:

  • Cada célula deve ser de valor único
  • As entradas em uma coluna devem ser do mesmo tipo
  • As linhas devem ser identificadas exclusivamente

2FN:

  • Todos os atributos devem ser dependentes da chave

3FN:

  • As linhas devem ser identificadas exclusivamente apenas pela chave

4FN:

  • Sem dependências de vários valores
normalization
  • 2 respostas
  • 741 Views
Martin Hope
A_V
Asked: 2015-11-24 08:46:09 +0800 CST

SQL Server - não é possível descartar trabalho ocioso

  • 5

Atualmente, estou fazendo a transição de um servidor de uma empresa para outra.

Eles querem manter o SQL Server instalado no servidor, então estamos limpando todos os bancos de dados, planos de manutenção e trabalhos.

Estou tentando excluir vários trabalhos do SQL Server Agent, mas, embora estejam desativados, ainda estão no modo "IDLE", portanto, ocorre o seguinte erro ao tentar excluí-los:

A queda falhou para o trabalho job_name.Subplan_1. ( Microsoft.SqlServer.Smo)

Ocorreu uma exceção durante a execução de uma instrução ou lote Transact-SQL. ( Microsoft.SqlServer.ConnectionInfo)

A DELETEinstrução entrou em conflito com a REFERENCErestrição FK_subplan_job_id. O conflito ocorreu no banco de dados "msdb", tabela dbo.sysmaintplan_subplans, coluna job_id.

A instrução foi encerrada. (Microsoft SQL Server, erro: 547)

Como posso remover o status IDLE do trabalho para que a exclusão ocorra?

sql-server sql-server-2005
  • 2 respostas
  • 8826 Views
Martin Hope
A_V
Asked: 2015-09-29 05:31:40 +0800 CST

Como apagar no sqlplus com backspace?

  • 3

Usando o SQL*PLUS, não consigo usar o botão backspace para apagar o conteúdo durante um comando de linha.

Quando aperto backspace, ao invés de apagar escreve ^H

Existe uma maneira de configurar o backspace para que funcione como pretendido?

oracle oracle-11g-r2
  • 2 respostas
  • 9197 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