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

John G Hohengarten's questions

Martin Hope
John G Hohengarten
Asked: 2020-04-14 14:56:29 +0800 CST

Sempre criptografado: como faço para uma união de igualdade com uma coluna não criptografada em uma coluna criptografada determinística?

  • 3

A documentação oficial da Microsoft para Always Encrypted no SQL Server 2017 afirma:

A criptografia determinística sempre gera o mesmo valor criptografado para qualquer valor de texto simples.

O uso de criptografia determinística permite pesquisas de ponto, junções de igualdade , agrupamento e indexação em colunas criptografadas.

(grifo meu)

Atualmente, estou usando o SQL Server 2017 RTM-CU17 (KB4515579) v14.0.3238.1 Standard Edition.

Minha conexão SSMS (atualmente usando v18.4) já está configurada com a Enable Always Encrypted (column encryption)caixa de seleção marcada, e as opções de consulta -> Execução -> configuração avançada Enable Parameterization for Always Encryptedtambém estão marcadas.

Abaixo está o esquema da tabela que tenho.

As colunas EmployeeIDe são criptografadas com .FullNameDeterministic Encryption Type

A Tempcoluna é criptografada com Randomized Encryption Type.

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[EmployeeTemperature]
(
    [Entry] [int] IDENTITY(1,1) NOT NULL,
    [CheckerID] [varchar](26) NOT NULL,
    [EmployeeID] [char](10) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK_Auto1], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
    [FullName] [varchar](50) COLLATE Latin1_General_BIN2 ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK_Auto1], ENCRYPTION_TYPE = Deterministic, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NULL,
    [Temp] [decimal](4, 1) ENCRYPTED WITH (COLUMN_ENCRYPTION_KEY = [CEK_Auto1], ENCRYPTION_TYPE = Randomized, ALGORITHM = 'AEAD_AES_256_CBC_HMAC_SHA_256') NOT NULL,
    [Date] [date] NOT NULL, -- to support Date-CheckerID-FullName unique constraint
    [DateTime] [datetime] NOT NULL,
    [Station] [smallint] NOT NULL,
    [Question1] [bit] NOT NULL,
    [Question2] [bit] NOT NULL
) ON [PRIMARY]
GO

SET ANSI_PADDING ON
GO

CREATE UNIQUE CLUSTERED INDEX [UCI_EmployeeTemperature]
ON [dbo].[EmployeeTemperature]
(
    [Date] ASC,
    [CheckerID] ASC,
    [FullName] ASC
)
WITH
(
PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON
) ON [PRIMARY]

GO

O Stored Procedurecódigo abaixo é usado para recuperar os dados criptografados (eventualmente será usado por um aplicativo Web ASPX Single Page Application (SPA)).

--SELECT OBJECT_ID('dbo.sp_GetEmployeeTemps','P') -- debug below
IF OBJECT_ID('dbo.sp_GetEmployeeTemps','P') IS NULL
   EXEC('CREATE PROCEDURE [dbo].[sp_GetEmployeeTemps] AS BEGIN SET NOCOUNT ON; END')
GO

ALTER PROCEDURE [dbo].[sp_GetEmployeeTemps]
AS

SELECT
 ET.[Entry]
,CASE
    WHEN HR.[Employee_ID] IS NOT NULL THEN 'E'
  ELSE 'V'
 END AS [Visitor] -- Show if record is for Employee or Visitor
,ISNULL(HR.[Name],ET.[FullName]) AS [Name] -- ISNULL for visitor. return visitor's name if not an employee.
,ET.[Temp]
,(SELECT DISTINCT chk.[Name] FROM [dbo].[Checker] AS chk INNER JOIN [dbo].[EmployeeTemperature] ON ET.[CheckerID] = chk.[LoginID]) AS [Checker]
,CAST(FORMAT(ET.[DateTime], 'yyyy-MM-dd hh:mm:ss', 'en-US') AS DATETIME) AS [Time] -- so that it doesn't round seconds to minutes (converting to SMALLDATETIME does that) and shows to the second.
,CASE
    WHEN ET.[Question1] = 1 THEN 'Yes'
    WHEN ET.[Question1] = 0 THEN 'No' 
 ELSE NULL
 END AS [Question1]
,CASE
    WHEN ET.[Question2] = 1 THEN 'Yes'
    WHEN ET.[Question2] = 0 THEN 'No' 
 ELSE NULL
 END AS [Question2]
FROM [dbo].[vw_Employees] AS HR
FULL JOIN -- to allow Visitors to be retrieved
(
    SELECT
     [Entry]
    ,[Temp]
    ,[CheckerID]
    ,[FullName]
    ,[EmployeeID]
    ,[DateTime]
    ,[Question1]
    ,[Question2]
    FROM [dbo].[EmployeeTemperature]
    WHERE CONVERT(DATE, [DateTime]) = CONVERT(DATE, GETDATE())
) AS ET
ON HR.[Employee_ID] = ET.[EmployeeID] -- encrypted
WHERE ET.[Entry] IS NOT NULL -- to not show unchecked employees.

GO

EXEC sp_refresh_parameter_encryption 'dbo.sp_GetEmployeeTemps';

Quando tento criar ou alterar o procedimento acima, recebo o erro abaixo:

The data types char and char(10) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'Employee_Temperature') collation_name = 'Latin1_General_BIN2' are incompatible in the equal to operator.

Isso parece indicar que o problema é com esta cláusula JOIN:

ON HR.[Employee_ID] = ET.[EmployeeID] -- encrypted

Nessa junção, o HR.[Employee_ID]não é criptografado e faz parte da [vw_Employees]exibição, e o ET.[EmployeeID]é a coluna criptografada.

Por que essa união de igualdade não funciona? A documentação afirma que as colunas criptografadas podem ser usadas em junções de igualdade, o que claramente é.

Esse é o problema nº 1.


O problema nº 2 parece estar ISNULLenvolvendo a coluna criptografada ET.[FullName].

Se eu comentar essa junção e fizer ON 1 = 1para fins de depuração, recebo um erro adicional:

Operand type clash: varchar(50) encrypted with (encryption_type = 'DETERMINISTIC', encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256', column_encryption_key_name = 'CEK_Auto1', column_encryption_key_database_name = 'Employee_Temperature') collation_name = 'Latin1_General_BIN2' is incompatible with varchar

Alguma sugestão para lidar com esse cenário?

Solicitei que o MS Docs fosse atualizado com exemplos no GitHub: https://github.com/MicrosoftDocs/sql-docs/issues/4550

encryption sql-server-2017
  • 1 respostas
  • 1535 Views
Martin Hope
John G Hohengarten
Asked: 2018-08-30 08:25:15 +0800 CST

O SQL Server 2017 CU10 inclui o hotfix CVE-2018-8273?

  • 5

A Microsoft lançou o SQL Server 2017 CU10 KB4342123 (14.0.3037.1) ontem. Tentei examinar a lista de hotfixes incluídos , mas não vi nenhuma referência à atualização de segurança lançada recentemente para o hotfix de vulnerabilidade de execução remota de código KB4293805 CVE-2018-8273 (14.0.3035.2).

Como podemos determinar se o SQL Server 2017 CU10 inclui o hotfix de segurança KB4293805 CVE-2018-8273 ou não?

O número de versão superior do CU10 é suficiente para determinar isso?

NOTA: Já instalei a correção CVE-2018-8273 no CU9.

sql-server sql-server-2017
  • 1 respostas
  • 750 Views
Martin Hope
John G Hohengarten
Asked: 2018-02-23 12:00:13 +0800 CST

Removendo um compartilhamento de janelas FILESTREAM após a desinstalação

  • 0

Eu tive que desinstalar minha edição local do SQL 2017 Dev no meu PC doméstico (Windows 10) porque alterei alguma estrutura de unidade (incluindo onde todos os bancos de dados do sistema viviam) há algum tempo, então precisei reinstalar o SQL Server para recriar esses sistemas bancos de dados (sem backups desde a instância de desenvolvimento inicial) e redefina os caminhos de unidade adequados. Eu usei um arquivo de configuração para o processo de reinstalação. Parece que quando você desinstala SQL Server 2017, NÃO remove o compartilhamento de fluxo de arquivos (bug?). Então, quando chego à etapa de instalação no fluxo de arquivos, ele diz

Windows share MSSQLSERVER already exists and cannot be created for FILESTREAM file I/O. Specify another share name.

Eu tentei remover este MSSQLSERVERcompartilhamento de janelas de fluxo de arquivos existente admin command promptfazendo:

net share MSSQLSERVER /DELETE

Mas recebo um erro:

System error 3 has occurred. The system cannot find the path specified.

Então, como posso excluir esse MSSQLSERVERcompartilhamento de janelas de fluxo de arquivos antigo existente para que eu possa prosseguir com a configuração do SQL 2017 e configurar o novo compartilhamento de fluxo de arquivos como parte do processo de instalação (usando o mesmo MSSQLSERVERnome de compartilhamento padrão)?

sql-server windows
  • 1 respostas
  • 1036 Views
Martin Hope
John G Hohengarten
Asked: 2017-03-18 11:58:44 +0800 CST

Detectar se algum valor nas colunas NVARCHAR é realmente unicode

  • 15

Eu herdei alguns bancos de dados SQL Server. Há uma tabela (chamarei "G"), com cerca de 86,7 milhões de linhas e 41 colunas de largura, de um banco de dados de origem (chamarei "Q") no SQL Server 2014 Standard que recebe ETL para um banco de dados de destino (chamarei "P") com o mesmo nome de tabela no SQL Server 2008 R2 Standard.

ou seja, [Q].[G] ---> [P].[G]

EDIT: 20/03/2017: Algumas pessoas perguntaram se a tabela de origem é a ÚNICA fonte da tabela de destino. Sim, é a única fonte. No que diz respeito ao ETL, não há nenhuma transformação real acontecendo; ele efetivamente se destina a ser uma cópia 1:1 dos dados de origem. Portanto, não há planos para adicionar fontes adicionais a esta tabela de destino.

Um pouco mais da metade das colunas em [Q].[G] são VARCHAR (tabela de origem):

  • 13 das colunas são VARCHAR(80)
  • 9 das colunas são VARCHAR(30)
  • 2 das colunas são VARCHAR(8).

Da mesma forma, as mesmas colunas em [P].[G] são NVARCHAR (target table), com o mesmo número de colunas com as mesmas larguras. (Em outras palavras, mesmo comprimento, mas NVARCHAR).

  • 13 das colunas são NVARCHAR(80)
  • 9 das colunas são NVARCHAR(30)
  • 2 das colunas são NVARCHAR(8).

Este não é o meu projeto.

Eu gostaria de ALTER [P].[G] (destino) os tipos de dados das colunas de NVARCHAR para VARCHAR. Eu quero fazer isso com segurança (sem perda de dados da conversão).

Como posso examinar os valores de dados em cada coluna NVARCHAR na tabela de destino para confirmar se a coluna realmente contém dados Unicode?

Uma consulta (DMVs?) que possa verificar cada valor (em um loop?) de cada coluna NVARCHAR e me diga se QUALQUER dos valores é genuíno Unicode seria a solução ideal, mas outros métodos são bem-vindos.

sql-server datatypes
  • 4 respostas
  • 18101 Views
Martin Hope
John G Hohengarten
Asked: 2017-01-25 14:33:06 +0800 CST

Determinar a PackageFormatVersion para vários arquivos de pacotes .DTSX em uma pasta

  • 8

Kenneth Fisher publicou uma postagem no blog sobre como determinar qual versão do SQL é o meu pacote SSIS? em abril de 2015.

Ele tem uma tabela de quais versões do SQL mapeiam para qual PackageFormatVersionpacote SSIS encontrado nos metadados XML. Isso é útil ao olhar para um único pacote individual.

Eu tenho uma pasta de cerca de 100 .DTSXpacotes SSIS que preciso saber qual versão do SQL eles são.

Como posso determinar, em massa, o que PackageFormatVersion(ou seja, a versão SQL) para vários .DTSXpacotes em uma pasta (sistema de arquivos)?

O objetivo final é determinar qual é a versão apropriada do TFS para obter e implementar para colocar esses pacotes, já que nenhum sistema de controle de origem existe atualmente. A tabela que Kenneth apresenta me ajudará a responder essa pergunta, mas primeiro preciso confirmar quais são as versões do pacote SQL.

Suponha que eu NÃO tenha BIDS nem SSDT instalados.

Suponha que uma saída desejada seja algo assim, onde pipe designa uma nova coluna:

PackageFilename | PackageFormatVersion
--------------------------------------
Package1.dtsx   | 3
Package2.dtsx   | 4

PowerShell, TSQL, ferramentas de terceiros que podem rastrear uma estrutura de diretórios ou outras ferramentas são bem-vindas.

sql-server t-sql
  • 1 respostas
  • 1417 Views
Martin Hope
John G Hohengarten
Asked: 2017-01-04 15:47:13 +0800 CST

Interromper, iniciar ou reiniciar uma instância de serviço tabular do SSAS no PowerShell com Invoke-Command e $variables

  • 3

Estou trabalhando em alguns comandos/scripts do PowerShell para parar, iniciar ou reiniciar uma instância de serviço SSAS Tabular usando Invoke-Commande alguns arquivos $variables. O objetivo final é, eventualmente, colocar esse código em um trabalho de agente para facilitar a reinicialização do serviço, mas isso está além do escopo desta postagem - preciso fazer isso funcionar com o $variablesprimeiro.

Estou usando o PowerShell 5.0 em minha máquina de origem (local) e tentando parar/iniciar/reiniciar uma instância remota do servidor Tabular SSAS 2012 (11.0.6540.0).

Primeiro, começo meu script com Set-ExecutionPolicy.

Set-ExecutionPolicy -Scope CurrentUser RemoteSigned -Force

Em seguida, usando o método codificado apenas para obter a sintaxe correta e observando o SQL Server Configuration Manager (Config Mgr) enquanto o RDP é inserido no servidor para verificar se o comando está funcionando, uso este código do PowerShell:

Invoke-Command -ComputerName DevServer { stop-service 'MSOLAP$TABULAR' }

Isso funciona muito bem. Eu verifico no Config Mgr que o serviço para.

Também verifico se os 2 scripts de código do PowerShell abaixo funcionam:

Invoke-Command -ComputerName DevServer { start-service 'MSOLAP$TABULAR' }

e

Invoke-Command -ComputerName DevServer { restart-service 'MSOLAP$TABULAR' }

Excelente. Funciona bem.

Agora eu começo a colocar as coisas em variáveis ​​assim:

$tabularinstance = 'MSOLAP$TABULAR'

$server = "DevServer"
$stop = "stop-service $tabularinstance"
$start = "start-service $tabularinstance"
$restart = "restart-service $tabularinstance"

Em seguida, mostro os valores das variáveis ​​para verificar os resultados esperados:

# show values
$tabularinstance
$stop
$start
$restart
$server

E recebo os seguintes resultados retornados no console do PowerShell:

PS H:\> # show values
$tabularinstance
$stop
$start
$restart
$server
MSOLAP$TABULAR
stop-service MSOLAP$TABULAR
start-service MSOLAP$TABULAR
restart-service MSOLAP$TABULAR
DevServer

OK, então as coisas parecem boas. Em seguida, executo o comando PowerShell abaixo, esperando que funcione, mas nada acontece no servidor; Config Mgr não mostra que o serviço está parado, ainda está em execução:

Invoke-Command -ComputerName $server { $stop }

Percebi então que a $tabularinstancevariável não possui apóstrofos de encapsulamento, então tentei o seguinte:

$tabularinstance = '''MSOLAP$TABULAR''' # triple apostrophes needed to get the ' escape character and apply the apostrophes to variable

e, em seguida, redefina as variáveis $stop​​, $starte $restartpara usar as $tabularinstancevariáveis ​​atualizadas:

$stop = "stop-service $tabularinstance"
$start = "start-service $tabularinstance"
$restart = "restart-service $tabularinstance"

e mostre-os novamente para verificar se eles incluem os apóstrofos:

PS H:\> # show values
$tabularinstance
$stop
$start
$restart
$server
'MSOLAP$TABULAR'
stop-service 'MSOLAP$TABULAR'
start-service 'MSOLAP$TABULAR'
restart-service 'MSOLAP$TABULAR'
DevServer

Sim, eles fazem. Eu então tento o meu InvokeCommandnovamente:

Invoke-Command -ComputerName $server { $stop }

Negativo. Ainda não funcionou. No ConfigMgr, o serviço ainda está em execução.

Eu até pensei em tentar atribuir o comando completo à variável para ver como tudo se resolve:

$test = "Invoke-Command -ComputerName $server { $stop }"

E depois confira os resultados:

PS H:\> $test
Invoke-Command -ComputerName DevServer { stop-service 'MSOLAP$TABULAR' }

Isso parece certo para mim também. Parece exatamente o mesmo comando que fiz ao codificar tudo em vez de usar $variables.

Então, por que meu PowerShell não está funcionando usando o $variablesmétodo? O que está a faltar?

ssas powershell
  • 1 respostas
  • 1477 Views
Martin Hope
John G Hohengarten
Asked: 2016-05-03 08:30:01 +0800 CST

Como posso saber qual edição e versão minha instância do SSAS está executando?

  • 2

No SQL Server no mecanismo de banco de dados, você pode executar uma consulta SQL como esta para obter as informações da versão do servidor, como Edição e Versão, Nível de Atualização, etc.

SELECT @@VERSION

Qual é o equivalente MDX para consultar uma instância SSAS (tabular ou multidimensional)? Existem DMVs SSAS que podem me dar essa resposta?

Eu naveguei na página Books Online para SSAS DMVs , mas não notei nenhum DMVs que pudesse me ajudar. DISCOVER_INSTANCES não parecia ter a informação.

Vamos supor que o Mecanismo de Banco de Dados do SQL Server não esteja instalado neste mesmo servidor que a instância do SSAS, portanto, não posso verificar isso consultando o mecanismo de banco de dados.

No meu caso, isso é para uma instância tabular do SQL 2012, mas gostaria de saber como consultar a instância multidimensional também.

ssas dmv
  • 1 respostas
  • 6078 Views
Martin Hope
John G Hohengarten
Asked: 2015-12-16 10:49:39 +0800 CST

SSMS 2016 CTP3.1 November Preview (v13.0.800.111) bug? erro de propriedades: coluna ausente federated_service_account

  • 3

Usando o SSMS 2016 CTP3.1 November Preview (v13.0.800.111) no meu laptop, sempre que clico com o botão direito do mouse em qualquer objeto de banco de dados (o banco de dados, uma tabela etc.), recebo o erro abaixo.

TÍTULO: Microsoft SQL Server Management Studio

Não é possível mostrar a caixa de diálogo solicitada.


INFORMAÇÃO ADICIONAL:

Não é possível mostrar a caixa de diálogo solicitada. (SqlMgmt)

A tentativa de recuperar os dados do objeto falhou para o servidor ''. >(Microsoft.SqlServer.Smo)

Para obter ajuda, clique em: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=13.0.800.111+((SQL_Main).151121-1556)&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates. FailedOperationExceptionText&EvtID=Tentativa+de+recuperar+dados+para+objeto+Servidor&LinkId=20476


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


Nome de coluna inválido 'federated_service_account'. Nome de coluna inválido 'federated_service_account'. (Microsoft SQL Server, Erro: 207)

Para obter ajuda, clique em: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=13.00.0700&EvtSrc=MSSQLServer&EvtID=207&LinkId=20476


BOTÕES:

OK

Consegui executar um rastreamento do Profiler para determinar a consulta que está sendo executada para lançar este erro:

SELECT
eds.location AS [RemoteDataArchiveEndpoint],
eds.name AS [RemoteDataArchiveLinkedServer],
rdad.remote_database_name AS [RemoteDatabaseName],
rdad.federated_service_account AS [RemoteDataArchiveUseFederatedServiceAccount],
case when rdad.federated_service_account = 1 then null else cred.name end AS [RemoteDataArchiveCredential]
FROM
sys.remote_data_archive_databases rdad
INNER JOIN sys.external_data_sources eds ON rdad.data_source_id = eds.data_source_id
LEFT OUTER JOIN sys.database_scoped_credentials cred ON eds.credential_id = cred.credential_id

Alguém reconhece esta consulta? De onde vem, qual é a fonte? Alguém mais está enfrentando um erro semelhante? Isso é um bug do SSMS?

Algumas notas de reprodução interessantes:

  • Este erro ocorre durante a conexão do meu laptop ao banco de dados que está em uma VM na minha organização.

  • Enquanto o RDP está na VM e executando o SSMS localmente na VM e conectando-se ao localhost, o erro não é reproduzido.

  • A versão do SSMS na VM (v13.0.700.242) é inferior à versão do SSMS no meu laptop (v13.0.800.111). Portanto, tenho medo de atualizar o SSMS na VM para a versão mais recente, pois esse erro também pode ocorrer.

  • Executar o rastreamento do criador de perfil diretamente na VM e executar as etapas de reprodução não gera o mesmo SQL que a versão mais recente do SSMS parece gerar no meu laptop.

sql-server ssms
  • 1 respostas
  • 809 Views
Martin Hope
John G Hohengarten
Asked: 2015-11-04 10:12:36 +0800 CST

Janela Non Clustered Index Scan Properties - ordem de predicado diferente da ordem de consulta

  • 0

Ambiente do tipo SQL 2012 Data Warehouse...

Eu tenho um índice não clusterizado em uma tabela de dimensão tipo 2, que chamarei apenas de DimStudent.

O índice é definido conforme abaixo, com tipos de dados e outras informações entre parênteses para contexto :

(

 [StudentID] ASC (VARCHAR(10))

,[EffectiveStartDate] ASC (SMALLDATETIME)

,[EffectiveEndDate] ASC (SMALLDATETIME)

)

INCLUDE [StudentKey] (INT, IDENTITY, PK).

A consulta em questão está sendo executada durante um pacote SSIS ETL e é definida conforme abaixo. Ele é especificado em uma transformação de pesquisa usando um cache parcial, na guia Avançado usando a seção de consulta personalizada, que é gerada automaticamente pelo Visual Studio (que coloca o alias [refTable] e SELECT * na consulta) com algumas modificações para a consulta para uso de pesquisa SCD2:

select * from (SELECT

 LTRIM(RTRIM(StudentID)) AS StudentID_Trimmed

,StudentKey

,EffectiveStartDate

,EffectiveEndDate

FROM dbo.DimStudent

)
AS [refTable]

where [refTable].[StudentID_Trimmed] = @P1

and [refTable].[EffectiveStartDate] <= @P2

and [refTable].[EffectiveEndDate] > @P3

Observe que a ordem das colunas na consulta é a ID do aluno (@P1), depois a Data de início (@P2) e a Data de término (@P3).

Observe também que atualmente estou TRIMMing o StudentID. Eu determinei que isso não é mais necessário (foi necessário em algum momento por algum motivo) e já estou trabalhando na alteração do ETL para remover esse aspecto do TRIM.

No plano de consulta para esta consulta (usando sp_WhoIsActive de Adam Macahanic), confirmei que está fazendo uma verificação não agrupada usando este índice. Quando visualizo as Propriedades do operador de verificação, ele lista os Predicados como: (db e esquema removidos)

[DimStudent].[EffectiveStartDate] <= **[@P2]**

AND [DimStudent].[EffectiveEndDate] > **[@P3]**

AND ltrim(rtrim([DimStudent].[StudentID])) = **[@P1]**

Minhas perguntas são:

  1. Por que os predicados no plano de consulta estão em uma ordem diferente (@P2, @P3, @P1) de como a consulta foi escrita? (@P1, @P2, @P3) Causado pelo TRIM?

  2. Por que é uma varredura e não uma busca, como o índice foi projetado para fazer para esta consulta? Causado pelo TRIM (não SARGable)?

execution-plan
  • 2 respostas
  • 82 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