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

user45867's questions

Martin Hope
user45867
Asked: 2024-10-06 05:55:09 +0800 CST

Como criar o menor backup compactado de bancos de dados do SQL Server destinados à exclusão?

  • 6

Preciso minimizar o armazenamento do SQL Server em preparação para migrar para a nuvem.

Há cerca de 10 bancos de dados que provavelmente são 99% lixo/necessários para exclusão. Talvez 100%. Bancos de dados de relatórios.

Qual é a melhor maneira de fazer algum tipo de "backup" compactado por apenas 6 meses? ... São cerca de 500 GB no total... os arquivos LDF e MDF seriam suficientes? (não economizaria em armazenamento, mas posso colocar em algum lugar barato).

É algo que é basicamente inútil, mas ocasionalmente algum caso marginal pode ser necessário para colocá-lo online. Não é provável, mas é possível.

Estou pensando que provavelmente há uma opção de backup suficiente. Não preciso de um ponto no tempo ou algo extravagante. Apenas "aqui estão os 10 dbs nesta data (digamos hoje) em caso de emergência". Esses são bancos de dados de relatórios amplamente autocontidos - não aplicativos complicados. Entendo que a corrupção pode ser possível de alguma forma, mas estou disposto a arriscar.

Esta também é uma versão vergonhosamente antiga do SQL Server, 2014, se isso for relevante.

sql-server
  • 1 respostas
  • 64 Views
Martin Hope
user45867
Asked: 2024-10-04 01:36:30 +0800 CST

É possível bifurcar um banco de dados SQL Server em unidades específicas?

  • 5

Tenho vários bancos de dados em uma instância do SQL Server hospedada localmente em um servidor, por exemplo, na unidade C.

A intenção é migrar uma pequena parte disso para um provedor de nuvem, a AWS.

Então, digamos que eu tenha 2 bancos de dados na instância. db_junk e db_migrate.

Um agente de TI -- para executar a migração -- quer que eu mova "db_migrate" da unidade C no servidor para a unidade D. Porque eles querem migrar a unidade inteira, e NÃO migrar db_junk (custa, e é lixo).

É possível fazer isso? ... Existe uma maneira mais fácil de fazer isso? Eu acho que talvez haja uma maneira mais fácil de levantar e deslocar um banco de dados específico do SQL Server --- do local para o SQL Server hospedado na AWS (mesma versão) -- sem fazer isso.

Mas, independentemente disso, como isso pode ser alcançado?

EDIT: O objetivo final é migrar o db_migrate da unidade C para a AWS.

No entanto, fui encarregado de implementar uma parte específica --- da unidade C para a unidade D no local, na mesma máquina, na verdade, pois acredito que a próxima pessoa prefere migrar "uma unidade inteira" para a AWS, como em sua área de atuação. ... Isso não é possível com a unidade C porque ela contém inchaço e outros componentes que não devem ser migrados.

sql-server
  • 1 respostas
  • 48 Views
Martin Hope
user45867
Asked: 2023-11-14 23:28:53 +0800 CST

Padrão SQL para obter "raiz/início" do conjunto de dados de hierarquia desigual

  • 5

Eu sinto que este é um problema comum e já vi isso em alguns desafios de SQL, mas pela minha vida, não consigo pensar claramente em uma solução.

Digamos que você tenha uma hierarquia desigual. Elementos que pertencem a outros elementos mas você não conhece o topo.

Digamos que seja um organograma da empresa para mantê-lo simples (na verdade, são dependências de tarefas, mas eh).

Então há uma mesa. Nome do funcionário e nome do chefe.

Employee name: Bob .... Boss Name: Dora
Employee name Dora .... Boss Name: Kim

E assim por diante. No meu caso, há uma informação adicional. Uma pessoa só se reporta a uma pessoa. Relacionamento um para um.

Existem N elementos no topo da cadeia que possuem Nome: Quem quer que seja Chefe: Nulo.

Então eu estava fazendo algo da seguinte forma:

select employee_name, boss_name
from boss_table b1
left join boss_table b2 on b1.boss_name = b2.employee_name
left join boss_table b3 on b2.boss_name = b3.employee_name

E assim por diante para tentar encontrar o 'Chefe Raiz' ou 'Chefe Superior' de cada funcionário. No entanto, alguns desses elementos aninhados são MUITO profundos - não quero fazer 20 junções ... ou pelo menos digitá-los - sinto que uma função recursiva é a resposta óbvia, mas não consigo descobrir - pensamentos?

join
  • 1 respostas
  • 29 Views
Martin Hope
user45867
Asked: 2020-12-02 08:14:26 +0800 CST

Clássico tolo que tem o modelo de backup completo padrão e arquivo de log fora de controle ---- como faço para controlar isso?

  • 1

Ei, geralmente sou mais um dba de desenvolvimento, mas o antigo dba saiu --- e ele saiu há cerca de um ano sem um substituto.

Eu finalmente estou olhando sob o capô de alguns desses servidores - não sou um dba de produção, mas executei alguns diagnósticos que encontrei on-line e eles dizem que tenho grandes problemas.

De qualquer forma, estou aprendendo essas coisas lentamente, mas isso parece um problema comum --- tenho o modo Full Recovery em um banco de dados específico, mas nunca faço backup - como resultado, o arquivo de log cresce exponencialmente - entendi?

Quais são minhas opções para me livrar disso?

Estou supondo:

  1. Se eu fizer um backup completo ou agendar um, o arquivo de log será limpo depois disso?

  2. Posso simplesmente mudar para o modelo de recuperação simples? Eu sei que isso tem implicações de recuperação - estou confortável com a perda de dados, pois este é um banco de dados de BI. Isso liberará o arquivo de log imediatamente também? Tenho que fazer algo ALÉM de mudar para o modelo de recuperação simples?

Existe alguma maneira de monitorar o progresso de qualquer uma dessas duas opções? Eu estou supondo que isso fará com que o banco de dados comece a consumir recursos fazendo uma coisa ou outra.

Obrigado!

sql-server backup
  • 2 respostas
  • 50 Views
Martin Hope
user45867
Asked: 2019-06-25 12:56:54 +0800 CST

Trabalho SSIS - como criar procedimento armazenado que repete trabalhos SSIS?

  • 0

Ei, percebo que provavelmente posso criar um pacote pai modular que repete trabalhos do SSIS no próprio Visual Studio .... mas sei que você pode executar pacotes SSIS usando um procedimento armazenado no SSMS -- 'exec ssisdb.catalog.create_execution @package_name=N 'myPackageName' ..... etc

Para uma maneira rápida e suja de executar um pacote SSIS como este, diga ... 'X' número de vezes ...

Existe maneira de fazer isso? Tipo... no final do pacote, repita... X vezes?

Ou ainda mais simples, se a duração do trabalho for conhecida/previsível... "executar tarefa, aguardar 5 minutos.... executar novamente... por X vezes?"

sql-server stored-procedures
  • 1 respostas
  • 378 Views
Martin Hope
user45867
Asked: 2019-03-02 08:00:38 +0800 CST

Prática recomendada do SSIS para permitir conexões de banco de dados facilmente trocáveis/seguras/acessíveis?

  • 2

Eu venho do Pentaho PDI.

Lá, aprendi a fazer scripts carregarem dados em um [VariableDB].

Dessa forma, posso iniciar esse VariableDB em tempo de execução para "ProdDB" ou até mesmo definir a variável para diferentes bancos de dados dentro do script, temporariamente, o que for.

O ponto é que eu não tenho que passar por toneladas de arquivos alterando nomes de banco de dados com muita frequência, a menos que algumas mudanças importantes na arquitetura.

A segunda coisa é a segurança. O Pentaho não é ótimo, mas você pode pelo menos armazenar algumas das credenciais do banco de dados no formato criptografado e elas são bloqueadas nas GUIs. Um 'cérebro' poderia decifrá-lo, mas eles precisariam de muito acesso de qualquer maneira.

SSIS --- bem, pode ser o oposto, talvez não. Prefiro não armazenar nenhuma senha de banco de dados em texto simples. Ao mesmo tempo, meu antecessor saiu --- e não tenho ideia de onde estão as credenciais. Eles estão "poof" desaparecidos - eu não sei. Se os scripts e trabalhos do SSIS estiverem sendo executados no mesmo servidor SQL DB, eles serão armazenados em algum lugar? Não tenho certeza.

Eles são criptografados para o nome de usuário dele, e agora que ele se foi, irrecuperável?

Isso não é tão importante, pois posso inserir novamente as credenciais do banco de dados, mas estou olhando para o futuro.

Eu sei que provavelmente existem algumas maneiras de fazer isso, mas qual é uma maneira simples para que, se eu tiver 5 pacotes apontando para "TheFinanceDatabase", eu possa trocar facilmente o servidor host do banco de dados, nome, usuário, senha, etc?

Eu tomo arquivos de configuração e/ou gerenciadores de conexão --- eles podem ser compartilhados entre pacotes dentro do mesmo "projeto?". Talvez os "projetos" possam compartilhar credenciais/ponteiros de conexão dentro da mesma "solução"? Apenas imaginando aqui - obrigado!

Quero evitar a reinserção/perda de credenciais no futuro.

sql-server ssis
  • 1 respostas
  • 890 Views
Martin Hope
user45867
Asked: 2019-02-02 14:10:23 +0800 CST

Os pacotes SSIS e o banco de dados SQL devem estar no mesmo servidor?

  • 3

Sou um pouco novo no SSIS. Eu tenho muito 'dev', construção, consulta, ajuste de desempenho no SQL Server, mas não sou o mestre da modelagem de desempenho geral/administrativa.

Então aqui está minha pergunta --- Os pacotes SSIS devem ser executados no mesmo servidor que o data warehouse (bancos de dados do servidor SQL?)

Por um lado, já recebo uma mensagem de erro enigmática de que certas tarefas de 'inserção em massa' no SSIS só podem ser executadas em bancos de dados locais. Talvez isso possa ser contornado. Talvez não possa e seja muito mais rápido, portanto, coloque o ETL na mesma caixa que o db.

Segundo --- mesmo que isso possa ser contornado, não seria mais rápido ter o ETL no mesmo servidor que o banco de dados em qualquer caso? Ou, tirando isso, o mais próximo geograficamente possível? (ou seja, não continentes diferentes).

Em particular, os ETL são executados durante a noite, e o banco de dados não é trabalhado durante a noite (possivelmente processos de backup, no entanto) - mas não prevejo muito tropeçar um no outro.

Se as tarefas de inserção em massa só puderem ser feitas em bancos de dados locais, o ambiente de teste/desenvolvimento também não precisaria ser configurado no servidor de banco de dados? Basta saber o que é sensato. É uma loja menor aqui, mas nós esticamos as coisas.

sql-server ssis
  • 1 respostas
  • 1766 Views
Martin Hope
user45867
Asked: 2018-11-28 15:29:49 +0800 CST

Como obter o valor da linha e a soma/agregação na mesma linha? (Servidor SQL)

  • 0

Gostaria de saber se tenho dados como

 name  score
    A    2
    B    5
    C    7

Eu gostaria de ter uma 3ª linha

     name  score  total
        A    2     14
        B    5     14
        C    7     14

Quero dizer, em última análise, quero encontrar 'z-scores' ou percentis de várias entradas de linha em vários totais. Só não tenho certeza se existe uma maneira simples de comparar valores de linha com valores agregados, exceto por uma subconsulta como

select A.name, A.score, B.total
from myTable A
left join
(select name, sum(score) from myTable group by name) B
on A.name = B.name

Isso pode funcionar, mas parece ineficiente consultar a mesma tabela duas vezes para saber o que é um cálculo. Existe alguma maneira mais simples de fazer isso que estou perdendo?

sql-server select
  • 1 respostas
  • 4165 Views
Martin Hope
user45867
Asked: 2018-11-10 09:26:05 +0800 CST

Como automatizar as exportações CSV de consultas no PL/SQL Developer (Oracle)?

  • 1

Não sou profissional em Oracle ou PL/SQL Developer (eu uso e administro principalmente mySQL e MS SQL Server).

Não sou administrador de nenhum tipo, mas tenho acesso de leitura a muitas tabelas no Oracle via PL/SQL Developer.

Eu preciso da capacidade de agendar uma exportação automática (digamos, diária) de algumas tabelas (bem, consultas) no formato CSV. Seja para meu computador local, rede, e-mail --- qualquer coisa.

Alguém sabe como isso pode ser alcançado?

oracle export
  • 1 respostas
  • 11151 Views
Martin Hope
user45867
Asked: 2018-03-07 17:02:55 +0800 CST

SQL Query de repente lento --- como testar se seu problema de rede ou hardware (memória)?

  • 0

Eu não sou um especialista em TI geral. Às vezes, com consultas SQL ... elas levam 10 segundos em cerca de 95% do tempo.

De vez em quando, a mesma consulta leva de 5 a 10 minutos. Assim como os outros. A constante é o computador host e a hora atual --- não a consulta em si.

Só estou me perguntando se há alguma maneira de testar ou verificar qual é o problema que está diminuindo a velocidade da consulta (e que, de fato, está diminuindo a velocidade da consulta). Eu iria remotamente para a máquina host e verificaria o uso/processos de memória? A máquina host também está em um país estrangeiro --- EUA para Alemanha. Novamente, 95% do tempo, isso não importa. Eu estou querendo saber se há problemas temporários de 'pico de rede'. Eu quero saber para que eu possa reclamar com a TI lá ... mas eu quero identificar exatamente o que está causando os problemas de consulta. Talvez isso esteja fora do escopo deste conselho... Eu sei que um showplan não indicaria nada... ou não? Os problemas de rede ou memória retardariam todas as etapas com a mesma duração? Existe uma maneira mais fácil de solucionar isso?

sql-server
  • 1 respostas
  • 789 Views
Martin Hope
user45867
Asked: 2018-02-16 12:39:13 +0800 CST

Consulta SQL - Como selecionar para exibir grupo, total de grupo, total geral?

  • 2

Eu vi alguns conselhos, mas quero saber a melhor maneira de selecionar um grupo, total de grupo, total geral de uma tabela de dados SEM usar uma subconsulta ou junção desnecessária.

Meu pensamento inicial foi algo assim:

select   product_family, 
         sum(widgets), 
         sum(widgets) over ()
from     table.widget
group by product_family

ou o seguinte:

select   product_family, 
         sum(widgets), 
         sum(widgets) over (partition by all_field)
from     table.widget
group by product_family

Obviamente nenhum desses trabalhos. Eu sei que uma partição pode ser de uma ordem mais alta do que as linhas/grupos reais, mas não como particionar por "todos" além de deixá-lo em branco como o primeiro exemplo. No entanto, rompe com o grupo por afirmação.

O melhor que consigo encontrar é algo assim:

select product_family, 
       family_sum, 
       sum(family_sum) over () as grand_sum 
from (
      select   product_family, sum(widgets)
      from     table.widget
      group by product_family
     ) as A

Isso ainda envolve uma subconsulta, o que é bom. Eu apenas sinto que estou perdendo uma função fácil aqui.

sql-server group-by
  • 2 respostas
  • 3978 Views
Martin Hope
user45867
Asked: 2017-10-18 14:00:37 +0800 CST

Por que "select *" é mais rápido que "select top 500 *" no SQL Server? [duplicado]

  • 20
Essa pergunta já tem respostas aqui :
Pergunta de desempenho 'SELECT TOP' (2 respostas)
Como (e por que) o TOP impacta um plano de execução? (2 respostas)
Fechado há 5 anos .

Eu tenho uma visão, complicated_view-- existem algumas junções e cláusulas where. Agora,

select * from complicated_view (9000 records)

é mais rápido, muito mais rápido , do que

select top 500 * from complicated_view

Estamos falando de 19 segundos contra mais de 5 minutos.

A primeira consulta retorna todos os 9.000 registros. Como só pegar o top 500 é ridiculamente mais longo?

Obviamente, vou examinar os planos de execução aqui ---- mas assim que descobrir por que o SQL Server está executando o "top 500" de maneira abaixo do ideal, como posso dizer a ele para executar o plano de maneira rápida, como tomar a mesa cheia?

Claro, eu posso ter que reescrever a visão inteiramente --- mas muito estranho.

Basicamente, estou conectando esta tabela de dados a um software de terceiros que pré-verifica tabelas com uma select top 500 *consulta padrão que não pode ser modificada. Então, além de despejar essa visão em uma tabela real (bastante desleixada) - também não consigo contornar o adendo "top 500".

Este é o SQL Server 2012.

EDIT: Discordo do sinalizador duplicado. A outra pergunta, o top foi mais rápido que todos. Este seria o comportamento ESPERADO, retornando menos linhas. Meu caso é o contrário. Além disso, meu entendimento é que o Top 100 é um algoritmo diferente do Top 100+. Eu nem acho que a pergunta duplicada tem a resposta correta. Ou seja, a consulta TOP X ordenará tabelas potencialmente massivas muito cedo, não DEPOIS de serem agregadas/filtradas/etc. O porquê é um mistério, mas o como está claramente lá.

sql-server performance
  • 1 respostas
  • 25154 Views
Martin Hope
user45867
Asked: 2017-10-06 13:57:06 +0800 CST

As colunas não relevantes afetam o tempo de consulta de instruções select?

  • 10

Eu só estou curioso.

Digamos que você tenha uma tabela de 1 milhão de registros/linhas.

select order_value from store.orders

Faz diferença se essa tabela tem 1 campo, 2 campos ou 100 campos, em tempo real de consulta? Quero dizer todos os campos diferentes de "order_value".

Agora estou enviando dados para um data warehouse. Às vezes eu despejo campos na tabela que "podem ser usados ​​no futuro, algum dia" - mas eles não estão sendo consultados agora, por nada. Esses campos 'estranhos' afetariam as instruções select que não as incluem, direta ou indiretamente (não * quero dizer)?

sql-server performance
  • 2 respostas
  • 1110 Views
Martin Hope
user45867
Asked: 2017-09-27 11:58:44 +0800 CST

Quais são os principais motivos para dividir um Data Warehouse em vários bancos de dados? [duplicado]

  • 9
Essa pergunta já tem respostas aqui :
Quando você deve dividir um banco de dados em 2-3 bancos de dados por motivos de desempenho? (3 respostas)
Fechado há 5 anos .

Estou trabalhando com um colega que propôs dividir nosso banco de dados de 1 instância em cerca de 7 bancos de dados (divididos por domínio de dados) para desenvolvimento e 7 bancos de dados idênticos para produção. Eu recebo a lógica de dualidade de produção de teste, mas em que caso ou quais são as vantagens de dividir nosso 1 banco de dados relativamente simples em 7 bancos de dados? Nosso data warehouse é consumido/usado apenas por UMA aplicação de inteligência de negócios, ponto final.

Estou preocupado com essa direção, então espero que você possa discutir as razões gerais propostas para essa divisão, e eu posso lhe dar um resumo das propriedades atuais do banco de dados.

1 banco de dados Data Warehouse: total de 352 GB, 203 tabelas, 170 visualizações

Divisão proposta:

A: 280 GB
B: 43 GB
C: 28 GB
D: 1 GB
E,F,G: < 1 GB combined

Como você pode ver, isso já é um problema em termos de benefícios propostos, pois o armazenamento não será nem remotamente dividido uniformemente, com 80% restantes em 1 banco de dados. Aparentemente, particionar nosso banco de dados por esquema não é possível (de uma perspectiva de hardware) porque não temos o SQL Server de nível empresarial.

Motivos apresentados para a divisão:

  1. O banco de dados atual é pouco otimizado, pouca documentação, tipos de dados sub-ótimos, índices sub-ótimos.

Meus pensamentos de novato: esses problemas não são irrelevantes para dividir o banco de dados? Eles são simplesmente problemas que precisam ser resolvidos por conta própria de qualquer maneira.

  1. Existem 372 objetos no banco de dados atual, o que o torna lento.

Meus pensamentos: Isso dificilmente parece grande na minha opinião.

  1. Um banco de dados é mais difícil de documentar e desenhar diagramas de esquema para mais de 7 bancos de dados (teremos visualizações que abrangerão vários bancos de dados).

Meus pensamentos: .... Isso me parece completamente ridículo, mas talvez eu esteja errado. Já organizamos nosso data warehouse por 13 esquemas de 'sistema de origem'.

  1. Um banco de dados levará a mais deadlocks de banco de dados.

-- Este problema também não é completamente irrelevante para ter vários bancos de dados? É meu entendimento que os deadlocks ocorrem no nível da tabela (na verdade, geralmente até mesmo no nível da linha, mas eh). Mesmo assim, todas as nossas inserções de dados acontecem à meia-noite, todos os nossos selects downstream para o BI acontecem às 2 da manhã. Ter dois processos atualizando a mesma tabela é irrelevante para vários bancos de dados, não é (o impasse aconteceria de qualquer maneira)? Além disso, pessoalmente, não vi nenhuma evidência de deadlocks de tabela ocorrendo durante operações normais.

  1. Propriedade técnica/propriedade do banco de dados.

Somos apenas nós dois que trabalhamos no banco de dados. É possível que ele queira realmente segregar nossos 'feudos'. Realmente, não foi um problema, mas as permissões do usuário não podem ser determinadas no nível do esquema de qualquer maneira?

Quais são os motivos válidos para dividir um Data Warehouse em vários bancos de dados?

Adoraria aprofundar meu conhecimento aqui sobre bancos de dados em geral. Sim, acontece que estou fazendo muito trabalho em um com lacunas no meu conhecimento, mas bem, o trabalho é o que é, o que fui empurrado. As coisas têm funcionado muito bem até agora (bater na madeira).

sql-server database-design
  • 2 respostas
  • 3598 Views
Martin Hope
user45867
Asked: 2017-08-30 14:20:09 +0800 CST

Junte a tabela de fatos ao SCD Tipo 2 ... como escrever a consulta? (Servidor SQL)

  • 0

Eu não consigo encontrar este simples fato em qualquer lugar.

Eu tenho uma tabela de fatos como tal no SQL Server.

fact_picked
Emp_Name     Date     Apples_Picked
John        May 1 17    100

E uma tabela de dimensão tipo 2 como esta

dim_company
Emp_Name   Company     Effective_Since
John      Blue_Apples      June 1 2015
John      Apple_N_Stuff    Jan 1 2016
John      Da_Big_Apple     March 17 2017
John      Big_Tech         October 20 2017

Como juntaria o fato à tabela de dimensões para saber qual "empresa" colheu as 100 maçãs?

Nesse caso, logicamente, dados os dados, é 'Da_Big_Apple' ... desde que John começou a trabalhar lá em 17 de março até outubro de 2017, em que sua tarefa de colheita de maçãs ocorreu.

Como faço para fazer uma junção dessas tabelas? (assumindo milhares de registros).

Eu só fico preso. Eu sei que deveria fazer algo como

Select fp.emp_name, fp.date, fp.apples_picked
from fact_picked fp
left join dim_company dc
on fp.emp_name = dc.emp_name
and fp.date > dc.effective_since .... ???

Acho que não tenho certeza. Acho que posso usar uma visão para converter o tipo 2 em um tipo 4 (com uma data de término na tabela). Então é mais simples. Certifique-se de que a data do fato seja maior que a data de início, mas antes da data de término. Mas essa é a solução mais elegante?

sql-server join
  • 1 respostas
  • 9042 Views
Martin Hope
user45867
Asked: 2016-11-01 13:40:29 +0800 CST

Encontre a string "segunda maior" em cada "grupo"

  • 1

Estou fazendo algumas análises de dados e quero encontrar uma maneira fácil de examinar todos os membros de cada "grupo" em um grupo por função.

Assim, 3 agentes podem estar envolvidos em um pedido. Quero examinar rapidamente os três agentes que foram 'agrupados' nesta ordem por vários motivos.

Normalmente, eu usaria group_concat para isso (maneira fácil de ver todas as strings agrupadas). No entanto, replicar isso usando um 'agrupar por' parece difícil e pesado por enquanto no servidor SQL.

No momento, bruto e sujo, eu usaria max(username) e min(username) para encontrar rapidamente 2 (e 90% dos pedidos provavelmente têm 2 ou menos pessoas. Existe uma maneira de fazer mid(username) ou 2nd- mais alto (nome de usuário) ou percentil (50º, nome de usuário)? Essa seria uma maneira excelente e rápida de encontrar esses dados relevantes. Por algum motivo, as respostas anteriores que vi descrevendo group_concat no SQL Server não parecem diretas para mim.

Dados de exemplo, por exemplo:

employee  purchase_id
bill        1
bob         1
chrissy     1
mike        2
bill        2
bob         3

Atualmente eu tenho isso:

purchase_id, employee_count, complicated metric
1                 3              blahblah
2                 2                dsflsajf
3                 1                98%

Eu gostaria de ver de relance:

purchase_id, employees, complicated metric
1            (bill,bob,chrissy)   blahblah

No entanto, o group_concat parece muito confuso para usar com um grupo por instrução - ou simulando group_concat com SQL Server. Então, em vez disso, que tal isso.

selecione max(funcionário), min(funcionário)

purchase_id,  max(employee), min(employee)
1              bill            chrissy

no exemplo, você vê que bob é omitido, já que max/min encontrará apenas os dois pontos finais. Se houvesse algum tipo de função para extrair o segundo valor mais alto, ou valor do 50º percentil, em strings, isso seria útil.

sql-server
  • 2 respostas
  • 82 Views
Martin Hope
user45867
Asked: 2016-07-07 07:05:29 +0800 CST

Se a visualização A for construída sobre outras visualizações e tabelas, o usuário precisa de permissão apenas para visualizar A ou tudo abaixo?

  • 2

Estou falando do SQL Server em particular. Suponho que um usuário tentou e obteve um erro (você não tem permissões de seleção na exibição subjacente oculta B não mencionada explicitamente na consulta). A exibição principal A une uma tabela e outra exibição (exibição B) juntas e elas não têm permissão para a exibição B.

Não sou responsável pelas permissões do banco de dados, mas estou curioso para saber como funciona.

Você precisa conceder permissões para cada objeto construído sob as exibições? Ou apenas a vista em si? Ou qualquer um?

Achei que um dos propósitos das visualizações era um instantâneo de objetos subjacentes aos quais você NÃO deseja conceder permissões totais. Isso é o que é incomum para mim.

sql-server permissions
  • 2 respostas
  • 2776 Views
Martin Hope
user45867
Asked: 2016-04-29 15:07:11 +0800 CST

Maneira fácil de fazer com que usuários não técnicos modifiquem o banco de dados?

  • 1

Estamos no processo de engenharia de uma solução de BI.

Um problema que temos é que, infelizmente, muitas informações de RH (data de início, departamento, data de mudança de departamento, horário de trabalho, etc etc) - me parecem mantidas manualmente em uma planilha do Excel. Desnecessário dizer que carece de padronização, validação, está sujeito a erros, falta de completude, etc. Não é bom.

Não tenho certeza da maneira mais direta de melhorar isso. Atualmente, usamos um software de RH que não possui uma API. E nem tenho certeza de que contém todos os campos de dados necessários ou validação de entrada.

Em um mundo ideal, eu poderia apenas exigir que encontrássemos um novo software que tivesse uma API e validação de dados. Mas não vejo isso acontecendo. Mas talvez seja a única solução.

Caso contrário, estou tentando pensar em uma solução simples onde os usuários possam visualizar o banco de dados atual (id, nome do funcionário, data de início, departamento, etc) ... e possivelmente fazer alterações diretas ou, pelo menos, propor alterações para serem aprovadas . Algum tipo de entrada que tenha pelo menos verificações e validações básicas, alterações de timestamps e quem as fez, etc.

Eu sei que esta é uma questão bastante aberta, mas o que é uma solução direta possível?

Idealmente, eu gostaria de não ter que montar algum aplicativo do zero, pelo menos não muito.

Não pode ser a primeira empresa aqui tentando rastrear o número de funcionários e os custos do departamento mês a mês.

No final das contas, muitas dessas coisas precisam ser inseridas por um humano em algum momento. Se alguém muda de departamento, isso é basicamente uma abstração. Um sistema de computador pode não saber se alguém passou do trabalho para marketing e agora está trabalhando com vendas. Um ser humano terá que inserir essa mudança em algum lugar (idealmente um aplicativo dedicado, mas não necessariamente) - a pessoa, a mudança, a data efetiva. O que é realmente necessário são melhores controles de validação e regras de negócios que um aplicativo, eu mesmo ou outro desenvolvedor, possa impor.

Por exemplo --- não duplicação de IDs de funcionários. (ambos não dando a Mark e John o mesmo ID, nem dando a Mark dois IDs diferentes). Um funcionário trabalhando apenas associado/em 1 departamento em um determinado momento. Fácil visualização e gerenciamento de alterações (ou seja, a data de saída estava incorreta, o histórico de alterações e o carimbo de data/hora das atualizações seriam úteis). Talvez algum software de folha de pagamento/contabilidade decente possa ser aproveitado. Quer dizer, isso não é reinventar a roda, eu me pergunto como as empresas maduras/da Fortune 500 administram isso. Provavelmente software dedicado, mas eh.

O problema é que o banco de dados precisa dessas informações. Atualmente ele recebe de uma planilha Excel lixo. Estou tentando encontrar maneiras de garantir que as informações não sejam lixo. Isso precisa ser feito na forma de uma restrição, ou alerta, ao usuário final antes que o lixo seja enviado para a cadeia. No mínimo, talvez eu possa enviar a eles uma planilha do Excel que tenha sua própria validação nas células, mas isso é comicamente inadequado a longo prazo.

data-validation
  • 1 respostas
  • 160 Views
Martin Hope
user45867
Asked: 2016-02-12 15:25:29 +0800 CST

Como criar uma exibição com linhas adicionadas para datas ausentes?

  • 4

Não tenho certeza de como formular com precisão essa pergunta.

Essencialmente, digamos que eu tenha vários vendedores em diferentes equipes de vendas. Tipo, a região azul, a região laranja, a região vermelha, tanto faz.

Agora, cada um desses vendedores está conectado a uma região de vendas, mas pode, ocasionalmente, mudar de região de vendas ao longo do tempo.

Digamos que Bob Jones esteve na Região Azul em janeiro de 2015, fevereiro de 2015, março de 2015, mas em abril de 2015, ele foi para a Região Verde.

Então, estou tentando criar um relatório que agregue a receita de vendas com base na região (mesmo que no nível técnico, seja registrado para o vendedor).

Assim teríamos os dados da transação (tabela:Employee_sales) da seguinte forma:

name           date                 sales
Bob Jones      February 18th, 2015   $50,000

etc etc.

Portanto, para agregar por região, eu precisaria de uma tabela de dimensão auxiliar da seguinte forma (lembre-se, a região pode mudar com o tempo) (tabela: employee_region)

name         region      month      year
Bob Jones    Blue        January    2015
Bob Jones    Blue        February   2015
Bob Jones    Blue        March      2015
Bob Jones    Green       April      2015

Então eu posso simplesmente fazer uma consulta:

select er.region, er.month, er.year, sum(es.sales)
from employee_sales es
inner join employee_region er
on es.name = er.name and month(es.date) = er.month and year(es.date) = er.year
group by er.region, er.month, er.year

Isso me daria os dados de que preciso.

NO ENTANTO, agora tenho um problema --- digamos que tenho 500 funcionários e os dados da REGIÃO são atualizados com um mês de atraso. Então, agora, fevereiro de 2016, só temos dados regionais de janeiro de 2016.

Gostaria de fazer, é... para o mês atual (fevereiro de 2016)... se faltar os dados da "tabela auxiliar" para região referente ao mês, pegue o último mês encontrado (que pode ser janeiro, mas às vezes até dezembro ou novembro potencialmente).

Não tenho certeza do que fazer aqui. Criar algum tipo de visualização?

Devo reestruturar a 'tabela auxiliar' para que seja mais uma declaração de desigualdade?

EDIT: Acho que este é um problema de dimensões que muda lentamente. Hmm, provavelmente terei que reorganizar a tabela de dimensões.

sql-server sql-server-2012
  • 2 respostas
  • 483 Views
Martin Hope
user45867
Asked: 2016-01-07 07:52:14 +0800 CST

SQL Server - concedendo permissões para um esquema inteiro vs. objeto?

  • 44

Eu sou muito verde quando se trata do mundo do gerenciamento de permissões de banco de dados no SQL Server.

Vamos manter um exemplo simples.

Digamos que a conta 'admin' seja a proprietária dos esquemas A, B e C.

Há outra conta 'servo' que você deseja ter direitos totais (atualizar/excluir/inserir/selecionar/alterar) em qualquer objeto (tabela/exibição) criado nos esquemas A, B e C.

Isso é possível? Ou você precisa executar uma instrução de concessão toda vez que adicionar uma tabela/visualização nesses esquemas? (me parece meio bobo).

sql-server permissions
  • 2 respostas
  • 164112 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