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

Zoinky's questions

Martin Hope
Zoinky
Asked: 2023-07-24 05:37:15 +0800 CST

copiar dados entre 2 bancos de dados com as mesmas tabelas, mas identidades diferentes

  • 6

Eu tenho tabelas Listingse Mediaque é uma tabela filha Listingse vinculada com base ListingIdno banco de dados "origem" e tenho as mesmas tabelas no banco de dados "destino".

copie todas as listagens para a tabela de destino Listagens e seus filhos para Mediaa tabela de destino lembrando que a Mediatabela de destino tem que pegar o ListingIdque foi inserido na Listingstabela de destino e isso é umidentity column

INSERT INTO Listings ( Title, ...)
SELECT  Title..
FROM [source].[dbo].Listings
WHERE ListingId IN (
    SELECT s.ListingId
    FROM [source].[dbo].Listings s
    LEFT JOIN Listings d ON s.ImportedReferenceNumber = d.ImportedReferenceNumber
    WHERE d.ListingId IS NULL
);

-- Insert corresponding media records into destination.Media table with new ListingIds.
INSERT INTO Media ( ListingId, Url, ThumbnailUrl, TypeId)
SELECT New.ListingID, Url, ThumbnailUrl, TypeId
FROM [source].[dbo].Media m
INNER JOIN (
    SELECT s.ListingId, d.ListingId AS NEW_ListingId
    FROM [source].[dbo].Listings s
    LEFT JOIN Listings d ON s.ImportedReferenceNumber = d.ImportedReferenceNumber
    WHERE d.ListingId IS NULL
) AS NEW ON m.ListingId = NEW.ListingId;

A primeira parte funciona bem, mas nada é inserido no destino Mediaporque a consulta que tenho quando executada, não há diferença entre a Listingstabela de origem e destino

sql-server
  • 1 respostas
  • 26 Views
Martin Hope
Zoinky
Asked: 2021-12-08 09:03:35 +0800 CST

Consulta ao comparar com vários registros filho

  • 0

Eu não consigo descobrir o que o tsql deve ser para fazer o seguinte.

Gostaria de consultar a tabela Tweets com todos os tweets que possuem categoria 1 e 2 (podem ser mais de 2 categorias passadas)

Portanto, a consulta deve retornar o tweet 1 e 3 para as seguintes inserções

USE tempdb
CREATE TABLE [dbo].[Tweets]([Id] [bigint] NOT NULL)
CREATE TABLE [dbo].[TweetCategories]([TweetId] [bigint] NOT NULL, [CategoryId] [int] NOT NULL)

INSERT INTO Tweets(Id) VALUES(1)
INSERT INTO Tweets(Id) VALUES(2)
INSERT INTO Tweets(Id) VALUES(3)
INSERT INTO Tweets(Id) VALUES(4)

INSERT INTO TweetCategories(TweetId, CategoryId) VALUES(1, 1)
INSERT INTO TweetCategories(TweetId, CategoryId) VALUES(1, 2)

INSERT INTO TweetCategories(TweetId, CategoryId) VALUES(2, 2)
INSERT INTO TweetCategories(TweetId, CategoryId) VALUES(2, 3)

INSERT INTO TweetCategories(TweetId, CategoryId) VALUES(3, 1)
INSERT INTO TweetCategories(TweetId, CategoryId) VALUES(3, 2)
INSERT INTO TweetCategories(TweetId, CategoryId) VALUES(3, 3)


DROP TABLE tweets
DROP TABLE TweetCategories

A eficiência é importante, pois meus tweets terão mais de 2 milhões de registros e as categorias também podem estar em alguns milhões

sql-server t-sql
  • 2 respostas
  • 73 Views
Martin Hope
Zoinky
Asked: 2021-12-07 09:54:44 +0800 CST

Cláusula where eficiente no campo que tem json

  • 0

Eu tenho a seguinte consulta que gostaria de adicionar uma cláusula where em um campo json, Abaixo está meu json que eu filtro com base em uma lista de categorias, no exemplo abaixo, existem 3 categorias e se eu passar em 7,9, Quero que o registro abaixo seja incluído na minha lista.

Acho que não tenho certeza de como seria minha cláusula where para json e seria eficiente

TSql

SELECT TOP 1 *
  FROM Tweets                                
  WHERE IsProcessed = 0 AND HasEvents = 1
  AND --Json filter
  ORDER BY TweetDate DESC

Json

{
   "Dates":{
      "DateTimeResults":[
         {
            "DateTime":"2014-03-20T00:00:00-04:00",
            "UtcOffsetMinutes":0,
            "Text":"today",
            "Timex":"2014-03-20"
         }
      ]
   },
   "Categories":[
      7,
      9,
      12
   ]
}
sql-server json
  • 1 respostas
  • 106 Views
Martin Hope
Zoinky
Asked: 2020-12-20 08:30:01 +0800 CST

Como adiciono Median a esta consulta?

  • 1

Eu gostaria de adicionar median à seguinte consulta, a mediana obviamente será para cada tipo de quarto, unittypeid (já no grupo por), tentei trabalhar com PERCENTILE_CONT, mas não consegui descobrir como fazê-lo funcionar.

CREATE TABLE #TempListings
(
    ListingId int,
    Price money,
    UnitTypeId int,
    BedroomsAvailable int
)
INSERT INTO #TempListings VALUES(1, 1000, 1, 1)
INSERT INTO #TempListings VALUES(2, 2000, 1, 1)
INSERT INTO #TempListings VALUES(3, 3000, 1, 1)

INSERT INTO #TempListings VALUES(4, 1000, 1, 2)
INSERT INTO #TempListings VALUES(5, 2000, 1, 2)
INSERT INTO #TempListings VALUES(6, 3000, 1, 2)

INSERT INTO #TempListings VALUES(7, 1000, 2, 1)
INSERT INTO #TempListings VALUES(8, 2000, 2, 1)
INSERT INTO #TempListings VALUES(9, 3000, 2, 1)

INSERT INTO #TempListings VALUES(10, 1000, 2, 2)
INSERT INTO #TempListings VALUES(11, 2000, 2, 2)
INSERT INTO #TempListings VALUES(12, 3000, 2, 2)
  
SELECT BedroomsAvailable, 
    COUNT(listingid) AS Count, 
    MIN(price) AS MinPrice, 
    MAX(price) AS MaxPrice, 
    AVG(price) AS AveragePrice,
    STDEV(price) as StandardDeviation,
    UnitTypeId
FROM #TempListings
GROUP BY BedroomsAvailable, UnitTypeId
ORDER BY UnitTypeId

DROP TABLE #TempListings

Estou usando o sqlserver 2019 se for importante

sql-server t-sql
  • 2 respostas
  • 52 Views
Martin Hope
Zoinky
Asked: 2019-10-05 12:22:53 +0800 CST

Consulta extremamente lenta ao juntar 2 visualizações

  • 2

Vou começar dizendo que não sou um DBA, apenas um dev que está tentando descobrir problemas de desempenho com a seguinte consulta que temos.

 SELECT
        OCCoverID as StaffID, FullName, SUM(OCWeight) AS Num
    FROM vuOCStaffAbsentExpandedMini
        INNER JOIN vuStaff ON OCCoverID = StaffID
    WHERE
        SADate = '2019-10-4'
        AND MIDent = 506
        AND SASupplyID IS NULL
        AND CoverStaffSupplyID IS NULL
        AND StaffMIDent <> 1
    GROUP BY
        OCCoverID, FullName

Demora cerca de 1 minuto para executar todas as vezes, verificamos duas vezes (achamos) todos os índices necessários, executamos o sintonizador de índice e ainda temos os mesmos problemas. Abaixo está o plano real que ele cria.

Qualquer ajuda seria apreciada, estamos usando o sql server 2012 express

https://www.brentozar.com/pastetheplan/?id=HJgOtXHur

sql-server t-sql
  • 1 respostas
  • 1140 Views
Martin Hope
Zoinky
Asked: 2019-09-20 08:16:35 +0800 CST

Maneira correta de restaurar dbs para o novo servidor

  • 0

Estamos migrando do sql server 2008 para 2017 e faremos o seguinte

  1. instale o sql server 2017 na nova máquina
  2. faça backups de todos os dbs no servidor antigo
RESTORE DATABASE DbName FROM DISK = 'C:\temp\Live\dbname.bak'
WITH
   MOVE 'DbName' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\DbName.mdf',
   MOVE 'DbName_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL14.MSSQLSERVER\MSSQL\DATA\DbName_log.ldf'

Eu gostaria de evitar a WITHparte, se possível, mas isso exige que eu crie um banco de dados em branco primeiro e defina sua versão para 2008 antes de poder restaurar corretamente.

Acho que estou perguntando qual é a melhor maneira de pegar um arquivo .bak e restaurá-lo como db em um servidor que não possui bancos de dados.

Prefere fazer isso sem anexar/desanexar

Eu tenho um grande número de bancos de dados, então vou criar um script para fazer todos eles de uma vez.

sql-server sql-server-2008
  • 1 respostas
  • 103 Views
Martin Hope
Zoinky
Asked: 2019-09-13 05:02:11 +0800 CST

Dados perdidos, como recuperar (servidor sql)

  • 1

Atualmente temos um db que o backup foi definido como Simples que está sendo copiado todas as noites (temos backups nos últimos 7 dias), é possível encontrar registros que foram excluídos em junho?

O banco de dados é totalmente funcional, portanto, não há corrupção nem nada, só queremos ver se podemos encontrar registros excluídos no arquivo de log atual. Eu usei o log do apexsql, mas isso mostra que não há nada, supondo que quando um backup é feito no modo simples, ele praticamente descarta o log.

Outra pergunta é, digamos que eu queira ter a capacidade de obter registros excluídos no futuro, devo configurar meu backup como "completo" e isso é bom o suficiente ou preciso também fazer backups de log em massa?

Eu acho que existe uma maneira simples de explicar o que significa o modo e que tipo de recuperação eu recebo. O artigo ms https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/recovery-models-sql-server?view=sql-server-2017 fala sobre isso, mas não ficou claro para mim o que precisa acontecer em cenários de diferenças quando é necessário obter registros específicos excluídos/alterados.

sql-server recovery
  • 3 respostas
  • 629 Views
Martin Hope
Zoinky
Asked: 2018-01-02 22:22:51 +0800 CST

o tamanho da tabela parece alto para a quantidade de registros em db

  • 1

tenho uma mesa simplesinsira a descrição da imagem aqui

e eu apaguei o twitterdetail e rawsource e configurei como null para que não haja dados neles, no entanto, o espaço para essa tabela é de 350mb. insira a descrição da imagem aqui

Existem 67k registros, portanto, se alguém fizer cálculos nos campos preenchidos, não deve ser tão alto.

Estou esquecendo de algo?

sql-server t-sql
  • 1 respostas
  • 50 Views
Martin Hope
Zoinky
Asked: 2017-02-19 06:48:55 +0800 CST

Como corrigir erros relatados por DBCC CHECKDB

  • 2

Estou recebendo muitos erros de DBCC CHECKDB, incluindo:

Msg 8939, Level 16, State 98, Line 1
Table error: ID do objeto 0, ID do índice -1, ID da partição 0, ID da unidade de alocação 3667181342891245568 (tipo Desconhecido), página (7791:-1694668604). Teste (IS_OFF (BUF_IOERR, pBUF->bstat)) falhou. Os valores são 133129 e -12.

Msg 8928, Level 16, State 1, Line 1
Object ID 405576483, index ID 73, partition ID 72057594049200128, alloc unit ID 72057594054246400 (tipo In-row data): A página (1:194923) não pôde ser processada. Veja outros erros para obter detalhes.

Msg 8976, nível 16, estado 1, linha 1
Erro de tabela: ID de objeto 405576483, ID de índice 73, ID de partição 72057594049200128, ID de unidade de alocação 72057594054246400 (digite dados em linha). A página (1:194923) não foi vista na verificação, embora seu pai (1:186194) e anterior (1:194922) se refiram a ela. Verifique quaisquer erros anteriores.

Msg 8980, nível 16, estado 1, linha 1
Erro de tabela: ID de objeto 405576483, ID de índice 73, ID de partição 72057594049200128, ID de unidade de alocação 72057594054246400 (digite dados em linha). Página do nó de índice (1:186194), slot 103 refere-se à página filho (1:194924) e filho anterior (1:194923), mas eles não foram encontrados.

Msg 8978, nível 16, estado 1, linha 1
Erro de tabela: ID de objeto 405576483, ID de índice 73, ID de partição 72057594049200128, ID de unidade de alocação 72057594054246400 (digite dados em linha). Página (1:194932) está faltando uma referência da página anterior (1:194931). Possível problema de ligação da corrente.

Mais importante ainda, no final, o seguinte é retransmitido:

CHECKDB encontrou 0 erros de alocação e 28 erros de consistência no banco de dados 'houseme'.

repair_allow_data_loss é o nível mínimo de reparo para os erros encontrados por DBCC CHECKDB (houseme).

O que eu faço?

sql-server dbcc-checkdb
  • 1 respostas
  • 11824 Views
Martin Hope
Zoinky
Asked: 2015-09-02 08:14:15 +0800 CST

Totais (somas/contagens) em várias tabelas filho otimização de consulta

  • 7

Temos 12 tipos de despesas em nosso banco de dados, algumas com dados bastante diferentes menos os campos Valor. Temos vários locais no aplicativo e relatórios que exigem totais de despesas únicas e múltiplas e contagens por tipo de despesa e totais gerais. No final, queremos uma View para todas essas chamadas, mas estamos abertos para usar um procedimento armazenado.

Analisamos várias alternativas para isso e descobrimos que um CTE nos permite obter todos os dados necessários sem o uso de tabelas temporárias. O uso de junções não funciona, pois vimos registros sendo replicados ou removidos, não importa o que tentamos.

Anexei um subconjunto das tabelas de despesas e a consulta que inclui o CTE. Alguém tem uma alternativa melhor que essa? Algo mais rápido? Estamos abordando esse 'achatamento' apropriadamente?

Observe que o plano de execução é o mesmo para esta consulta, seja uma View ou um Proc, e o Proc parece levar o dobro do tempo para ser executado.

Abaixo está o código

WITH pe AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM PettyExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
),hpe AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM HirePremisesExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
), ae AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM AdvertisingExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
), se AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM ServiceExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
), gse AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM GoodsSuppliedExpenses 
WHERE IsDisputed = 0 AND IsUndisputed = 0
group by EventRegistrationId
), thve AS
(
SELECT 
    EventRegistrationId
    ,sum(AmountPaid)            as AmountPaidTotal
    ,sum(CommercialValueAmount) as CommercialValueAmountTotal
    ,count(1) as ExpenseCount
FROM TravelHireVehicleExpenses 
WHERE IsDisputed = 0 AND 
IsUndisputed = 0
group by EventRegistrationId

)
select
distinct eer.EventRegistrationId
--Petty Expense
,ISNULL(pe.AmountPaidTotal,0) as PettyExpenseAmountPaid
,ISNULL(pe.CommercialValueAmountTotal,0) as PettyExpenseCommercial
,ISNULL(pe.ExpenseCount,0) as PettyExpenseCount
--Hire On Premise Expense
,ISNULL(hpe.AmountPaidTotal,0) as HireOnPremisesExpenseAmountPaid
,ISNULL(hpe.CommercialValueAmountTotal,0) as HireOnPremisesExpenseCommercial
,ISNULL(hpe.ExpenseCount,0) as HireOnPremisesExpenseCount
--Advertising Expense
,ISNULL(ae.AmountPaidTotal,0) as AdvertisingExpenseAmountPaid
,ISNULL(ae.CommercialValueAmountTotal,0) as AdvertisingExpenseCommercial
,ISNULL(ae.ExpenseCount,0) as AdvertisingExpenseExpenseCount
--Services Expense
,ISNULL(se.AmountPaidTotal,0) as ServiceExpenseAmountPaid
,ISNULL(se.CommercialValueAmountTotal,0) as ServiceExpenseCommercial
,ISNULL(se.ExpenseCount,0) as ServiceExpenseExpenseCount
--Goods Supplied Expense
,ISNULL(gse.AmountPaidTotal,0) as GoodsSuppliedExpenseAmountPaid
,ISNULL(gse.CommercialValueAmountTotal,0) as GoodsSuppliedExpenseCommercial
,ISNULL(gse.ExpenseCount,0) as GoodsSuppliedExpenseExpenseCount
--Travel and Vehicle Expense
,ISNULL(thve.AmountPaidTotal,0) as TravelVehicleExpenseAmountPaid
,ISNULL(thve.CommercialValueAmountTotal,0) as TravelVehicleExpenseCommercial
,ISNULL(thve.ExpenseCount,0) as TravelVehicleExpenseExpenseCount
--All Expenses
,ISNULL(pe.AmountPaidTotal,0) 
    + ISNULL(hpe.AmountPaidTotal,0)
    + ISNULL(ae.AmountPaidTotal,0) 
    + ISNULL(se.AmountPaidTotal,0)
    + ISNULL(gse.AmountPaidTotal,0) 
    + ISNULL(thve.AmountPaidTotal,0) as AllExpenseAmountPaidTotal
,ISNULL(pe.CommercialValueAmountTotal,0) 
    + ISNULL(hpe.CommercialValueAmountTotal,0)
    + ISNULL(ae.CommercialValueAmountTotal,0) 
    + ISNULL(se.CommercialValueAmountTotal,0)
    + ISNULL(gse.CommercialValueAmountTotal,0) 
    + ISNULL(thve.CommercialValueAmountTotal,0) as AllExpenseCommercialValueTotal
,ISNULL(pe.ExpenseCount,0) 
    + ISNULL(hpe.ExpenseCount,0)
    + ISNULL(ae.ExpenseCount,0) 
    + ISNULL(se.ExpenseCount,0)
    + ISNULL(gse.ExpenseCount,0) 
    + ISNULL(thve.ExpenseCount,0) as AllExpenseCount
from EventRegistrations eer
left join pe on pe.EventRegistrationId = eer.EventRegistrationId
left join hpe on hpe.EventRegistrationId = eer.EventRegistrationId
left join ae on ae.EventRegistrationId = eer.EventRegistrationId 
left join se on se.EventRegistrationId = eer.EventRegistrationId
left join gse on gse.EventRegistrationId = eer.EventRegistrationId
left join thve on thve.EventRegistrationId = eer.EventRegistrationId

ATUALIZAR:

Aqui está o esquema db com inserções para aqueles que estão interessados ​​em vê-lo ao vivo.

Esquema de banco de dados e inserções

Usando o SQL Server 2014 Standard, alterei o esquema/inserções db para um arquivo (muito grande para aqui) que contém mais inserções, bem como plano de execução e resultados carregados (2 imagens ficam lado a lado para mostrar todas as colunas retornadas)

plano de execução

resultados 1

resultados continuaram

sql-server sql-server-2014
  • 3 respostas
  • 216 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