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 / dba / 问题

All perguntas(dba)

Martin Hope
nam
Asked: 2025-02-25 10:01:28 +0800 CST

Por que a função SUM retorna 4 casas decimais, mas a função AVG retorna 6 casas decimais

  • 17

Pergunta : Por que SUMo retorno é com 4 casas decimais (como esperado), mas o Avgretorno é com 6 casas decimais?

CREATE TABLE #t(Col DECIMAL(19,4))
INSERT #t VALUES (123456.1200),(654321.3400)
SELECT SUM(Col), AVG(Col) FROM #t
SomaQuantia Valor médio
777777.4600 388888.730000

Observações : Observe que a questão NÃO é sobre como podemos exibir AverageAmountcom 4 decimais, mas por que AverageAmountestá retornando com 6 casas decimais. Isso é um bug ou há algum motivo válido por trás disso? Estou usando a versão mais recente do SQL Server 2022 no Windows 11

sql-server
  • 2 respostas
  • 840 Views
Martin Hope
J.D.
Asked: 2023-06-03 00:32:57 +0800 CST

Existe uma maneira confiável de verificar se um gatilho disparado foi o resultado de uma ação DML de outro gatilho *específico*?

  • 17

Existe alguma maneira de saber de dentro de um gatilho, quando ele é acionado, que está sendo acionado como resultado de uma ação DML que ocorreu em outro gatilho específico ?

Alguma chance de qualquer informação sobre a pilha de chamadas ser exposta na EVENTDATA()função? Ou outra função? Eu preferiria não ter que destruir XML. ?

O ideal é obter o nome do gatilho original que executou o DML que causou o disparo do segundo gatilho, dentro do escopo desse segundo gatilho. Mas também estou aberto a maneiras semelhantes de identificar a fonte.

Tenho total controle sobre o código de ambas as triggers em questão.

sql-server
  • 1 respostas
  • 361 Views
Martin Hope
jwize
Asked: 2020-10-16 12:12:50 +0800 CST

O colega diz para nunca usar uma instrução OR no SQL, isso é verdade?

  • 17

Meu colega agora responsável pelo desenvolvimento de SQL diz que eu nunca deveria usar uma ORinstrução porque isso atrapalharia o otimizador de consultas e ignoraria índices de tabela produzindo consultas lentas. Não consegui encontrar nenhum exemplo disso enquanto pesquisava no Google. A alternativa para a consulta a seguir se torna realmente feia com uma dúzia de blocos de código que parecem quase idênticos (ao exemplo) usando instruções if else para cada estado de variável. Observe as variáveis ​​que estão marcadas para curto-circuito e retornam todos os resultados se o valor for 2 ou então filtre pelo campo.

Solicitei alguns recursos contendo essas afirmações sobre por que não usar uma ORdeclaração e recebi os seguintes links (estamos usando o MS SQL Server).

  • https://stackoverflow.com/questions/5639710/union-all-vs-or-condition-in-sql-server-query
  • https://bertwagner.com/2018/02/20/or-vs-union-all-is-one-better-for-performance/
  • http://sqlserverplanet.com/optimization/using-union-instead-of-or

Nenhum desses exemplos parece se assemelhar à implementação atual, conforme abaixo. Acho difícil acreditar que este código é problemático, mas por favor, deixe-me saber se é. Eu também gostaria de mais algumas informações onde o comentário feito sobre não usar ORpode realmente ser verdade e por que, para entender melhor o problema.

SELECT
    e.EmployeeName,
    e.DepartmentName,
    crs.Title,
    c.Name as CompanyName
FROM Employee E
Left Outer Join Company c ON c.Id = @companyId
    INNER JOIN Department d on e.DepartmentId = d.Id 
WHERE   
    c.Id = @companyId           
    AND (@Active = 2 OR  crs.IsActive = @Active)
    AND (@Dot = 2 OR IsDot = @Dot)
    AND crs.CompanyId = @companyId
    AND d.CompanyId = @companyId
ORDER BY EmployeeName, Title, PassedDate

Acredito que duplicar código é sempre ruim, a menos que haja uma boa razão. Depois de testar a consulta, confirmei que os índices adequados estavam sendo usados. Depois de mencionar isso, me disseram que ele usaria as melhores práticas. Não vi nenhuma prática recomendada me dizendo para não usar OR. Alguém pode me levar a esses?


Aqui está a abominação antes de eu atualizá-la há muito tempo. Se você pegou o @Departmente está se perguntando sobre isso, não é um erro. Um componente de relatório da Telerik está fazendo algo com esse código e expandindo uma matriz em segundo plano antes de chegar ao servidor.

IF @Active = 2
BEGIN
--ACTIVE AND INACTIVE
    IF 0 IN (@Department)
    BEGIN
        IF @DOT = 1 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE   A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND C.DotCourse = 1 

            ORDER BY EmployeeName, Title, PassedDate
        END

        IF @DOT = 0 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,           
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE   A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    
            ORDER BY EmployeeName, Title, PassedDate
        END

        IF @DOT = 2 
            BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,           
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D       ON @companyId = D.Id

            WHERE   A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND C.DotCourse = 0 
                    
            ORDER BY EmployeeName, Title, PassedDate
        END 
    END
    ELSE
    BEGIN
        IF @DOT = 1 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE   A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND C.DotCourse = 1
                    AND A.DepartmentId IN (@Department)

            ORDER BY EmployeeName, Title, PassedDate
        END

        IF @DOT = 0 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE   A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND A.DepartmentId IN (@Department)
                    
            ORDER BY EmployeeName, Title, PassedDate
        END

        IF @DOT = 2 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE   A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND C.DotCourse = 0 
                    AND A.DepartmentId IN (@Department)
                    
            ORDER BY EmployeeName, Title, PassedDate
        END 
    END
END
ELSE
BEGIN
--ACTIVE OR INACTIVE
    IF 0 IN (@Department)
    BEGIN
        IF @DOT = 1 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE  A.IsActive = @Active 
                    AND A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND C.DotCourse = 1 

            ORDER BY EmployeeName, Title, PassedDate
        END

        IF @DOT = 0 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE  A.IsActive = @Active 
                    AND A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    
            ORDER BY EmployeeName, Title, PassedDate
        END

        IF @DOT = 2 
            BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D       ON @companyId = D.Id

            WHERE  A.IsActive = @Active 
                    AND A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND C.DotCourse = 0 
                    
            ORDER BY EmployeeName, Title, PassedDate
        END 
    END
    ELSE
    BEGIN
        IF @DOT = 1 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE  A.IsActive = @Active
                    AND A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND C.DotCourse = 1
                    AND A.DepartmentId IN (@Department)

            ORDER BY EmployeeName, Title, PassedDate
        END

        IF @DOT = 0 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE  A.IsActive = @Active 
                    AND A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND A.DepartmentId IN (@Department)
                    
            ORDER BY EmployeeName, Title, PassedDate
        END

        IF @DOT = 2 
        BEGIN
            Select 
            A.LastName + ', ' + A.FirstName as EmployeeName,
            A.DepartmentName,
            C.Title,
            ISNULL(B.Comments, ' ') as Remarks,
            CONVERT(varchar, B.PassedDate, 101) as DateOut,
            D.Name as CompanyName

            FROM Employee A
            Left Outer Join EmployeeCourse B    ON A.Id = B.EmployeeId
            Left Outer Join CompanyCourse C     ON B.CompanyCourseId = C.Id
            Left Outer Join Company D           ON @companyId = D.Id

            WHERE  A.IsActive = @Active 
                    AND A.CompanyId = @companyId 
                    AND B.PassedDate IS Not NULL 
                    AND C.DotCourse = 0 
                    AND A.DepartmentId IN (@Department)
                    
            ORDER BY EmployeeName, Title, PassedDate
        END 
    END
END

NOTA: Eu removi alguns no exemplo de código inicial para simplificar.

De acordo com sua explicação, links e minhas pesquisas, acho difícil acreditar que minha solução atual não seja a melhor para desempenho e legibilidade. Aceito que pode haver alguns casos por aí que arrisquem a degradação do desempenho, mas duvido muito que esse seja o caso da minha implementação. Não gosto da ideia de que ORnunca deve ser usada quando não vi nenhuma documentação que diga isso.

Quando mostrei a consulta, me disseram como uma generalização para nunca usar o OR. Agora estou fazendo minha lição de casa para ver se esta é uma informação válida. Eu realmente odiaria usar o código anterior, pois está errado de muitas maneiras.

sql-server query-performance
  • 3 respostas
  • 3516 Views
Martin Hope
Paul White
Asked: 2019-08-30 14:54:29 +0800 CST

Planos forçados em secundários legíveis

  • 17

Se um plano for forçado no primário em um Grupo de Disponibilidade, ele será aplicado a consultas executadas em um secundário?

Estou procurando respostas que cubram as duas possibilidades de forçar o plano:

  • Guias de plano
  • Plano forçado do repositório de consultas

Eu li o seguinte que sugere que os planos forçados de QS não são transferidos, mas não consigo encontrar nada oficial na documentação ou nada sobre guias de planos.

  • Repositório de consultas e grupos de disponibilidade por Erin Stellato
  • Comportamento do plano forçado do armazenamento de dados de consulta no secundário legível AlwaysOn por Vikas Rana

Evidência conclusiva de forçamento seria a presença de Use Planou PlanGuideNamee PlanGuideDBpropriedades no plano de execução do secundário.

sql-server availability-groups
  • 1 respostas
  • 823 Views
Martin Hope
Erik Darling
Asked: 2019-01-03 10:16:12 +0800 CST

Quando os predicados SARGable podem ser inseridos em uma CTE ou tabela derivada?

  • 17

Saco de areia

Enquanto trabalhava no Top Quality Blog Posts® , me deparei com alguns comportamentos do otimizador que achei muito interessantes. Eu não tenho uma explicação imediatamente, pelo menos não uma com a qual eu esteja feliz, então estou colocando aqui caso alguém inteligente apareça.

Se você quiser acompanhar, você pode pegar a versão 2013 do despejo de dados do Stack Overflow aqui . Estou usando a tabela Comentários, com um índice adicional.

CREATE INDEX [ix_ennui] ON [dbo].[Comments] ( [UserId], [Score] DESC );

Consulta Um

Quando eu consulto a tabela assim, recebo um plano de consulta estranho .

WITH x
    AS
     (
         SELECT   TOP 101
                  c.UserId, c.Text, c.Score
         FROM     dbo.Comments AS c
         ORDER BY c.Score DESC
     )
SELECT *
FROM   x
WHERE  x.Score >= 500;

NOZES

O predicado SARGable em Score não é inserido no CTE. Está em um operador de filtro muito mais tarde no plano.

NOZES

O que eu acho estranho, já que o ORDER BYestá na mesma coluna que o filtro.

Consulta Dois

Se eu alterar a consulta, ela é enviada.

WITH x
    AS
     (
         SELECT   c.UserId, c.Text, c.Score
         FROM     dbo.Comments AS c
     )
SELECT TOP 101 *
FROM   x
WHERE  x.Score >= 500
ORDER BY x.Score DESC;

O plano de consulta também muda e é executado muito mais rápido, sem derramamento no disco. Ambos produzem os mesmos resultados, com o predicado na varredura de índice não clusterizado.

NOZES

NOZES

Consulta três

Isso é o equivalente a escrever a consulta assim:

SELECT   TOP 101
         c.UserId, c.Text, c.Score
FROM     dbo.Comments AS c
WHERE c.Score >= 500
ORDER BY c.Score DESC;

Consulta Quatro

O uso de uma tabela derivada obtém o mesmo plano de consulta "ruim" que a consulta CTE inicial

SELECT *
FROM   (   SELECT   TOP 101
                    c.UserId, c.Text, c.Score
           FROM     dbo.Comments AS c
           ORDER BY c.Score DESC ) AS x
WHERE x.Score >= 500;

As coisas ficam ainda mais estranhas quando...

Eu altero a consulta para ordenar os dados em ordem crescente e o filtro para <=.

Para evitar fazer essa pergunta muito longa, vou colocar tudo junto.

Consultas

--Derived table
SELECT *
FROM   (   SELECT   TOP 101
                    c.UserId, c.Text, c.Score
           FROM     dbo.Comments AS c
           ORDER BY c.Score ASC ) AS x
WHERE x.Score <= 500;


--TOP inside CTE
WITH x
    AS
     (
         SELECT   TOP 101
                  c.UserId, c.Text, c.Score
         FROM     dbo.Comments AS c
         ORDER BY c.Score ASC
     )
SELECT *
FROM   x
WHERE  x.Score <= 500;


--Written normally
SELECT   TOP 101
         c.UserId, c.Text, c.Score
FROM     dbo.Comments AS c
WHERE c.Score <= 500
ORDER BY c.Score ASC;

--TOP outside CTE
WITH x
    AS
     (
         SELECT   c.UserId, c.Text, c.Score
         FROM     dbo.Comments AS c
     )
SELECT TOP 101 *
FROM   x
WHERE  x.Score <= 500
ORDER BY x.Score ASC;

Planos

Link do plano .

NOZES

Observe que nenhuma dessas consultas tira proveito do índice não clusterizado -- a única coisa que muda aqui é a posição do operador de filtro. Em nenhum caso o predicado é enviado para o acesso ao índice.

Aparece uma pergunta!

Existe uma razão pela qual um predicado SARGable pode ser empurrado em alguns cenários e não em outros? As diferenças dentro das consultas classificadas em ordem decrescente são interessantes, mas as diferenças entre aquelas e as que são ascendentes são bizarras.

Para quem estiver interessado, aqui estão os planos com apenas um índice em Score:

  • DESC
  • ASC
sql-server optimization
  • 1 respostas
  • 717 Views
Martin Hope
Beginner
Asked: 2018-09-17 22:57:23 +0800 CST

Erro ao iniciar o serviço SQL Server 2017. Código de erro 3417

  • 17

Tenho o SQL Server 2017 instalado no meu computador. Isto é o que SELECT @@VERSIONretorna:

Microsoft SQL Server 2017 (RTM-GDR) (KB4293803) - 14.0.2002.14 (X64) 21 de julho de 2018 07:47:45 Copyright (C) 2017 Microsoft Corporation Enterprise Edition (64 bits) no Windows 10 Enterprise 10.0 (Build 17134: )`

Estava funcionando bem até ontem. De repente SQL SERVER Servicenão correu. Quando eu queria executar o serviço manualmente, ele mostrava 3417 error. Quando verifiquei o log de eventos, vi este erro:

A atualização de nível de script para o banco de dados 'master' falhou porque a etapa de atualização 'msdb110_upgrade.sql' encontrou o erro 200, estado 7, gravidade 25. Esta é uma condição de erro grave que pode interferir na operação regular e o banco de dados será colocado offline. Se o erro ocorreu durante a atualização do banco de dados 'mestre', ele impedirá que toda a instância do SQL Server seja iniciada. Examine as entradas anteriores do log de erros em busca de erros, execute as ações corretivas apropriadas e reinicie o banco de dados para que as etapas de atualização do script sejam concluídas.`

Depois de pesquisar no Google, descobri que posso executá-lo /T902 switche tentar corrigir o problema. Mas nenhuma solução funcionou para mim. Então, instalei outra instância dos mesmos SQL SERVER 2017bancos de dados e restaurei. Agora a nova instância instalada tem o mesmo problema.

Qual poderia ser o problema?

UPDATE Aqui está o log de erros completo do SQL Server.

2018-09-17 13:06:47.29 spid6s A opção de configuração 'mostrar opções avançadas' mudou de 1 para 1. Execute a instrução RECONFIGURE para instalar.

2018-09-17 13:06:47.29 spid6s A opção de configuração 'mostrar opções avançadas' mudou de 1 para 1. Execute a instrução RECONFIGURE para instalar.

2018-09-17 13:06:47.29 spid6s A opção de configuração 'Agent XPs' mudou de 1 para 1. Execute a instrução RECONFIGURE para instalar.

2018-09-17 13:06:47.29 spid6s A opção de configuração 'Agent XPs' mudou de 1 para 1. Execute a instrução RECONFIGURE para instalar.

2018-09-17 13:06:47.29 spid6s Criando pastas SSIS...

17/09/2018 13:06:47.30 spid6s Eliminando procedimento [dbo].[sp_syscollector_get_instmdw]

2018-09-17 13:06:47.30 spid6s Criando procedimento [dbo].[sp_syscollector_get_instmdw]...

17/09/2018 13:06:47.30 spid6s Eliminando procedimento [dbo].[sp_syscollector_upload_instmdw]

2018-09-17 13:06:47.30 spid6s Criando procedimento [dbo].[sp_syscollector_upload_instmdw]...

2018-09-17 13:06:47.30 spid6s Carregando pacote do coletor de dados do disco: c:\Program Files\Microsoft SQL Server\MSSQL14.SQL2017\MSSQL\Install\SqlTraceCollect.dtsx

2018-09-17 13:06:47.30 spid6s Carregando pacote do coletor de dados do disco: c:\Program Files\Microsoft SQL Server\MSSQL14.SQL2017\MSSQL\Install\SqlTraceCollect.dtsx

2018-09-17 13:06:47.30 spid6s Erro: 2775, Gravidade: 17, Estado: 12.

2018-09-17 13:06:47.30 spid6s A página de código 65001 não é suportada pelo servidor.

2018-09-17 13:06:47.30 spid6s Erro: 912, Gravidade: 21, Estado: 2.

2018-09-17 13:06:47.30 spid6s A atualização de nível de script para o banco de dados 'mestre' falhou porque a etapa de atualização 'msdb110_upgrade.sql' encontrou o erro 200, estado 7, gravidade 25. Esta é uma condição de erro grave que pode interferir na operação regular e o banco de dados será colocado offline. Se o erro ocorreu durante a atualização do banco de dados 'mestre', ele impedirá que toda a instância do SQL Server seja iniciada. Examine as entradas anteriores do log de erros em busca de erros, execute as ações corretivas apropriadas e reinicie o banco de dados para que as etapas de atualização do script sejam executadas até a conclusão.

2018-09-17 13:06:47.30 spid6s Erro: 3417, Gravidade: 21, Estado: 3.

2018-09-17 13:06:47.30 spid6s Não é possível recuperar o banco de dados mestre. O SQL Server não pode ser executado. Restaure o mestre de um backup completo, repare-o ou reconstrua-o. Para obter mais informações sobre como reconstruir o banco de dados mestre, consulte os Manuais Online do SQL Server.

2018-09-17 13:06:47.30 spid6s O desligamento do SQL Server foi iniciado

2018-09-17 13:06:47.30 spid6s SQL Trace foi interrompido devido ao desligamento do servidor. ID de rastreamento = '1'. Esta é apenas uma mensagem informativa; Não é necessária nenhuma ação do usuário.

UPDATE Esta linha tem algo a dizer. The code page 65001 is not supported by the server.Meu windows recentemente atualizado para Version 1803 (OS Build 17134.285). Após esta atualização, alguns textos de aplicativos foram alterados para caracteres desconhecidos. Essa pode ser a causa do problema?

Imagem de registro para página de código

sql-server sql-server-2017
  • 1 respostas
  • 8837 Views
Martin Hope
James
Asked: 2018-06-14 05:49:15 +0800 CST

Como fazer um LIKE que não diferencia maiúsculas de minúsculas em um banco de dados que diferencia maiúsculas de minúsculas?

  • 17

Meu fornecedor exige que o banco de dados do data warehouse faça distinção entre maiúsculas e minúsculas, mas preciso fazer consultas que não diferenciam maiúsculas de minúsculas.

Em um banco de dados com distinção entre maiúsculas e minúsculas, como você escreveria isso para não diferenciar maiúsculas de minúsculas?

    Where Name like '%hospitalist%'
sql-server collation
  • 4 respostas
  • 81534 Views
Martin Hope
yrushka
Asked: 2018-05-10 05:37:24 +0800 CST

Pergunta de backup/restauração de banco de dados de 10 TB

  • 17

Temos um banco de dados de produção muito grande que é de 10 TB. Estamos pensando em migrá-lo para um serviço em nuvem, mas preciso entender os riscos e estimar a duração de todo o processo. Eu faço backup do banco de dados uma vez por mês usando a solução de backup Native SQL Server 2014 SP2. A duração é de quase 720 minutos - 12 h. A taxa de compactação é 5, o que significa que o tamanho do backup é de quase 2 TB. Não podemos arcar com backups diferenciais porque acumulados, eles ocupam tanto tempo e espaço quanto o Full, então fazemos backups T-log (~200 Mb cada) em vez de 10 minutos ~ 144 arquivos por dia. A GRANDE questão é ter todas essas estatísticas, alguém tem ideia de quanto tempo levaria para restaurar um backup de 2 TB contendo 10 TB de dados? Seria muito mais longo do que a duração do backup completo?

sql-server backup
  • 2 respostas
  • 6567 Views
Martin Hope
Kaji
Asked: 2011-01-04 19:44:05 +0800 CST

Protegendo senhas de banco de dados

  • 18

Olhando para a estrutura da maioria dos sites baseados em PHP/MySQL que já vi, parece que não é muito difícil discernir a senha do banco de dados se você cavar um pouco, pois há invariavelmente uma configuração ou arquivo de configuração em algum lugar que armazena as informações para registro no banco de dados. Além da precaução básica de garantir que os privilégios do meu banco de dados sejam adequadamente restritos para solicitações remotas, quais opções estão disponíveis que eu poderia implementar em meus próprios projetos para proteger essas informações?

mysql security
  • 6 respostas
  • 375 Views
Martin Hope
indyK1ng
Asked: 2011-01-04 14:34:34 +0800 CST

Atravessando dados semelhantes a árvores em um banco de dados relacional usando SQL

  • 18

Existe uma maneira de percorrer os dados da árvore no SQL? Eu conheço connect byno Oracle, mas existe outra maneira de fazer isso em outras implementações de SQL? Estou perguntando porque usar connect byé mais fácil do que escrever um loop ou função recursiva para executar a consulta para cada resultado.

Como algumas pessoas parecem estar confusas com a frase "dados de árvore", explicarei mais detalhadamente: O que quero dizer é com relação a tabelas que possuem um parent_idcampo ou similar que contém uma chave primária de outra linha na mesma tabela.

A dúvida vem de uma experiência em que estava trabalhando com dados armazenados dessa forma em um banco de dados Oracle e sabia que isso connect bynão é implementado em outros SGBDs. Se alguém usasse o SQL padrão, seria necessário criar um novo alias de tabela para cada pai que desejasse subir. Isso poderia facilmente sair do controle.

tree hierarchy
  • 4 respostas
  • 8426 Views
Prev
Próximo

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