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

Yano_of_Queenscastle's questions

Martin Hope
Yano_of_Queenscastle
Asked: 2025-01-29 15:45:56 +0800 CST

Ao criar um procedimento armazenado, os comentários antes da definição são sempre preservados?

  • 11

Quando escrevi alguns comentários antes do CREATE PROCEDUREcomando, esses comentários parecem ser preservados como parte da definição do procedimento.

Por exemplo, quando eu crio um procedimento como este

/*Comment header*/
CREATE OR ALTER PROCEDURE example_procedure
AS 
SELECT 1 AS Id

O /*Comment header*/é armazenado como parte da definição.

Violino

Esse é um comportamento documentado, posso sempre contar com isso? Ou é apenas uma peculiaridade não confiável do SQL Server?

Meu entendimento ingênuo é que a definição do procedimento começa com CREATEpalavra-chave, então hesito em confiar em comportamento que vai contra minha intuição.

sql-server
  • 1 respostas
  • 599 Views
Martin Hope
Yano_of_Queenscastle
Asked: 2025-01-10 08:18:11 +0800 CST

Por que BIT e não BOOLEAN?

  • 20

Existe algum significado para o SQL Server ter BITdatatype em vez de BOOLEAN? É apenas uma maneira estranha de chamar a mesma coisa, ou existe alguma diferença conceitual sutil?

A documentação sobre BITo tipo de dados menciona:

O tipo de dados bit pode ser usado para armazenar valores booleanos.

Isso parece sugerir que, na verdade, elas não são a mesma coisa.

Estou ciente de que [a coisa que a MS chama de boolean] e [a coisa que a MS chama de bit] são diferentes, MAS do ponto de vista do programador, bité a melhor aproximação do booleanconceito platônico que a linguagem T-SQL oferece. E eu luto para acreditar que seja apenas uma casualidade e não uma intenção. O tipo de dado numérico que aceita apenas 0 e 1 parece pouco prático para outros usos.

sql-server
  • 1 respostas
  • 2935 Views
Martin Hope
Yano_of_Queenscastle
Asked: 2024-11-24 15:51:20 +0800 CST

A atribuição recursiva de variáveis ​​é ruim mesmo se a atribuição recursiva de uma única linha for feita?

  • 6

Está documentado que a atribuição recursiva de variáveis ​​(como esta ↓↓↓↓) pode às vezes retornar resultados incorretos:

SELECT @var = @var + [Name]
FROM dbo.People
...

Mas isso se aplica mesmo no caso em que tenho certeza de que apenas uma linha será retornada?

Exemplo ( Fiddle ):

CREATE TABLE dbo.People
(
  Id INT IDENTITY PRIMARY KEY,
  [Name] varchar(50) NOT NULL
);

INSERT INTO dbo.People([Name]) VALUES ('Bob');

DECLARE @var varchar(50) = '';


/*Is this bad even if the query always returns only one row?*/
SELECT @var = @var + [Name]
FROM dbo.People
WHERE Id = 1;

SELECT [@var] = @var;

A documentação diz que " Nesse caso, não há garantia de que @Var seria atualizado linha por linha. " o que (para mim) sugere que a seleção de uma única linha deve ser suficiente, certo?

Outro exemplo em que se pode querer usar isso é ao calcular alguns valores agregados e adicioná-los a algum lugar:

SELECT @Total = @Total + SUM(InvoiceTotal) /*single row, aggregate of several values*/
FROM dbo.Invoice
WHERE ...;
/*Notice no GROUP BY*/
sql-server
  • 1 respostas
  • 30 Views
Martin Hope
Yano_of_Queenscastle
Asked: 2024-05-22 16:57:40 +0800 CST

Informando ao SQL Server sobre como mover os arquivos de backup

  • 5

Mudei alguns arquivos de backup para um novo destino. No entanto, o SQL Server parece pensar que ainda está no lugar antigo. (Ou seja, quando eu uso o assistente de restauração de banco de dados do SSMS, ele ainda apresenta um plano de restauração usando o local antigo.)

Existe uma maneira de mover os arquivos para que o SQL Server seja notificado sobre isso?

sql-server
  • 1 respostas
  • 76 Views
Martin Hope
Yano_of_Queenscastle
Asked: 2024-02-16 03:55:40 +0800 CST

SQL Server: Memória máxima igual à memória mínima?

  • 12

Atualmente estou dando uma olhada no Pro SQL Server 2019 Administration: A Guide for the Modern DBA e descobri uma coisa que me confunde um pouco.

No Capítulo 5: CONFIGURANDO A INSTÂNCIA , a seção Memória mínima e máxima do servidor (páginas 139-140) diz:

Em muitos ambientes, é provável que você deseje fornecer o mesmo valor para memória mínima e máxima do servidor. Isso evitará a sobrecarga do SQL Server gerenciando dinamicamente a quantidade de memória reservada.

No entanto, se você tiver várias instâncias, o gerenciamento dinâmico de memória poderá ser benéfico para que a instância com a carga de trabalho mais pesada em um determinado momento possa consumir mais recursos.

... Supondo que você tenha uma instância e nenhum outro aplicativo, como pacotes SSIS, em execução no servidor, normalmente você definiria as configurações de memória mínima e máxima como o valor mais baixo do

  • RAM - 2 GB
  • (RAM / 8) * 7

No entanto, o conselho para " fornecer o mesmo valor para memória mínima e máxima do servidor " está em contradição com a documentação , que diz:

Não é recomendado definir a memória máxima do servidor (MB) e a memória mínima do servidor (MB) como o mesmo valor ou próximo dos mesmos valores.

Em que situações seria uma boa ideia definir a memória máxima do servidor e a memória mínima do servidor com o mesmo valor (ish)?

Ou estou entendendo mal alguma coisa sobre o conselho?

sql-server
  • 1 respostas
  • 675 Views
Martin Hope
Yano_of_Queenscastle
Asked: 2024-01-03 21:07:04 +0800 CST

O que são system_seeks em sys.dm_db_index_usage_stats?

  • 8

A visualização do sistema sys.dm_db_index_usage_statspossui diversas colunas que refletem o uso do índice pelas consultas do sistema. Mas o que isso significa? Por que o sistema consulta minha tabela?

A documentação não é particularmente útil:

Nome da coluna Tipo de dados Descrição
sistema_seeks grande Número de buscas por consultas do sistema.
verificações_do_sistema grande Número de verificações por consultas do sistema.
pesquisas_de_sistema grande Número de pesquisas por consultas do sistema.
atualizações do sistema grande Número de atualizações por consultas do sistema.
sql-server
  • 2 respostas
  • 237 Views
Martin Hope
Yano_of_Queenscastle
Asked: 2023-12-20 19:13:19 +0800 CST

Como o SQL Server otimiza JOIN em hierarquiaid::IsDescendantOf()?

  • 11

Tenho uma tabela com estrutura em árvore (definida por hierarchyidcoluna) e quero selecionar todos os descendentes de um determinado registro. Para isso, estou usando hiearchyid.IsDescendantOf()o método.

Eu esperava que, como não estou fazendo comparações simples, mas estou executando operações (neste caso, estou chamando o IsDescendantOf()método), obterei um plano de execução terrível com varreduras de índice e outros enfeites.

Mesmo assim, o SQL Server o otimizou para uma pequena busca de índice.

Plano de execução

Estou intrigado por que e como.

A chamada de métodos em tipos CLR geralmente é otimizada? Presumi que o SQL Server vê os tipos CLR como uma caixa preta opaca e, portanto, não pode fazer sua mágica funcionar nele. (Uma vez que também não é possível fazer isso em funções SQL nativas.)

Ou isso é apenas para este método específico? (Como os hieararchyidvalores são ordenados em profundidade, eu poderia obter resultados semelhantes apenas fazendo comparações.)

Demonstração:

CREATE TABLE dbo.HierarchyExample (
    Id INT PRIMARY KEY,
    Hieararchy HIERARCHYID NOT NULL
);

INSERT INTO dbo.HierarchyExample(Id, Hieararchy)
VALUES
(1,  hierarchyid::Parse('/1/')),
(2,  hierarchyid::Parse('/1/1/')),
(3,  hierarchyid::Parse('/1/2/')),
(4,  hierarchyid::Parse('/1/3/')),
(5,  hierarchyid::Parse('/1/3/1/')),
(6,  hierarchyid::Parse('/1/3/2/')),
(7,  hierarchyid::Parse('/1/3/3/')),
(8,  hierarchyid::Parse('/1/4/')),
(9,  hierarchyid::Parse('/1/4/1/')),
(10, hierarchyid::Parse('/1/4/2/'));

CREATE INDEX IX_HierarchyExample_Hierarchy 
ON dbo.HierarchyExample (Hieararchy);

SELECT descendant.*
FROM HierarchyExample ancestor
    INNER JOIN HierarchyExample descendant
        ON descendant.Hieararchy.IsDescendantOf(ancestor.Hieararchy) = 1
WHERE ancestor.Id = 1

DROP TABLE IF EXISTS dbo.HierarchyExample;

O plano de execução

O violino

sql-server
  • 1 respostas
  • 407 Views
Martin Hope
Yano_of_Queenscastle
Asked: 2023-05-24 16:31:17 +0800 CST

Por que a coluna não existente de referência em lote falha completamente?

  • 7

Estou tentando entender esse comportamento estranho.

  1. Este lote seleciona 1 e, em seguida, falha porque a tabela não existe. Isso faz sentido.
SELECT 1;

SELECT  1
FROM NonexistentTable;
  1. Se eu estivesse tentando escrever um script infalível, talvez pudesse verificar a existência da tabela primeiro. Isso seleciona 1 e termina sem gerar nenhum erro. Até agora tudo bem.
SELECT 1;

IF EXISTS (
    SELECT 1
    FROM INFORMATION_SCHEMA.TABLES
    WHERE TABLE_NAME = 'NonExistentTable'
)
BEGIN
    SELECT 1
    FROM NonExistentTable;
END
  1. Este lote seleciona 1 e, em seguida, falha, porque o procedimento não existe. Que é razoável.
SELECT 1;

EXECUTE sp_nonexisting_procedure;
  1. Este lote se recusa a executar imediatamente, o que é inconsistente com o cenário observado anteriormente. Por que?
SELECT 1;

SELECT NonexistentColumn
FROM sys.databases;
  1. É ainda mais preocupante em scripts, onde tento verificar explicitamente a existência da coluna. Vamos criar a tabela para o experimento:
CREATE TABLE ExistingTable(Id INT, [Name] NVARCHAR(255));
GO

E então execute este ↓↓↓↓. Isso falha completamente, mesmo sem selecionar 1 também.

SELECT 1;

IF EXISTS (
    SELECT 1
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_NAME = 'ExistingTable'
        AND COLUMN_NAME = 'NonexistingColumn'
)
BEGIN
    
    SELECT NonexistingColumn
    FROM ExistingTable;

END
GO

Por que a existência de colunas é verificada logo após o envio da consulta, sem nem mesmo tentar executar partes válidas da consulta primeiro?

O que torna ainda mais intrigante para mim é que as tabelas são verificadas apenas quando a execução as atinge. (E ingenuamente, eu esperaria que as tabelas fossem mais importantes, portanto, obtendo verificações mais rigorosas/anteriores.)

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