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

Federico Giust's questions

Martin Hope
Federico Giust
Asked: 2017-03-01 05:01:58 +0800 CST

Gerar ID exclusivo com base em critérios de várias linhas

  • 3

Eu tenho o seguinte cenário, eu tenho uma tabela assim

| pid | itemId |
|-----|--------|
|123  | item1  |
|123  | item2  |
|234  | item1  |
|234  | item3  |
|456  | item1  |
|456  | item2  |
|567  | item1  |
|567  | item2  |
|567  | item3  |

Eu preciso obter um ID inteiro exclusivo com base na combinação exclusiva de itens. Portanto, se duas pessoas escolheram os mesmos itens, a combinação única deve ser o mesmo número.

Por exemplo:

| pid | itemId | comb |
|-----|--------|------|
|123  | item1  |  1   |
|123  | item2  |      |
|234  | item1  |  2   |
|234  | item3  |      |
|456  | item1  |  1   |
|456  | item2  |      |
|567  | item1  |  3   |
|567  | item2  |      |
|567  | item3  |      |

O número de combinações possíveis no momento está em torno de 300. Então, ao filtrar, pode ser mais fácil filtrar por apenas um número em uma coluna do que filtrar com vários critérios.

sql-server sql-server-2008-r2
  • 2 respostas
  • 10504 Views
Martin Hope
Federico Giust
Asked: 2013-08-09 08:11:31 +0800 CST

Converta todas as colunas ntext para nvarchar (max)

  • 1

Estou tentando criar um procedimento armazenado para converter todas as ntextcolunas do meu banco de dados em arquivos nvarchar(max).

Este é o código

ALTER PROCEDURE [dbo].[usp_SL_ConvertNtextToNvarchar]
AS
BEGIN
  SET NOCOUNT ON;

  DECLARE @table_name nvarchar(128)
  DECLARE @column_name nvarchar(128)
  DECLARE @totalCount int
  DECLARE @count int

  SET @totalCount = 0;
  SET @count = 0;
 
  -- Eventlogic
  DECLARE tables_cursor CURSOR FOR 

    SELECT so.name as table_name, sc.name as column_name
      FROM sys.objects so
      JOIN sys.columns sc ON so.object_id = sc.object_id
      JOIN sys.types stp ON sc.user_type_id = stp.user_type_id
                        AND stp.name = 'ntext'
     WHERE so.type = 'U' -- to show only user tables
  OPEN tables_cursor
  
  FETCH NEXT FROM tables_cursor INTO @table_name, @column_name
  WHILE @@FETCH_STATUS = 0
  BEGIN
    EXEC ('ALTER TABLE Eventlogic.dbo.' + @table_name + ' ALTER COLUMN ' + @column_name + ' nvarchar(max);')
    EXEC ('UPDATE Eventlogic.dbo.' + @table_name + ' SET ' + @column_name + '=' + @column_name + ' ')
    SET @count = @count + 1;
    IF @count > 0
      PRINT ('Eventlogic.dbo.' + @table_name + '.' + @column_name + ' ' + CAST(@count AS nvarchar(10)))
    SET @totalCount = @totalCount  + @count;
    FETCH NEXT FROM tables_cursor INTO @table_name, @column_name
  END 
  CLOSE tables_cursor
  DEALLOCATE tables_cursor
  PRINT ('Total columns updated: ' + CAST(@totalCount AS nvarchar(10)))  
  
END;

Sempre que tento executá-lo, recebo este erro:

Msg 16924, Nível 16, Estado 1, Procedimento usp_SL_ConvertNtextToNvarchar, Linha 37
Cursorfetch: O número de variáveis ​​declaradas na lista INTO deve corresponder ao das colunas selecionadas.

Temos 338 colunas em tabelas diferentes como ntext, devido ao legado.

Atualizamos para o SQL Server 2008 R2, portanto, gostaríamos de converter essas colunas em arquivos nvarchar(max).

Queremos seguir o conselho aqui ntext vs nvarchar(max) onde Conwell sugere fazer a atualização após a alteração.

O servidor SQL move o texto da estrutura LOB para a tabela (se for menor que 8.000 bytes). Portanto, quando executamos o select novamente com IO STATISTICS, obtemos 0 leituras de LOB.

Qualquer ajuda com esse erro seria ótima.

ATUALIZAR

Código atualizado como Martin mencionou. Na verdade, está alterando apenas o primeiro da lista antes de dar o erro.

2ª ATUALIZAÇÃO

Depois de fazer as alterações no código para corrigir a segunda busca, fechei o SQL Management Studio. Abri o SQL Management Studio novamente e executei e funcionou. Então, obrigado Martin novamente.

Desde já, obrigado.

Federico

stored-procedures sql-server-2008-r2
  • 3 respostas
  • 5782 Views
Martin Hope
Federico Giust
Asked: 2012-10-12 05:24:23 +0800 CST

Retornar uma coluna por data em um intervalo

  • 16

Digamos que eu tenha a Tabela A: BookingsPerPerson

Person_Id    ArrivalDate    DepartureDate
123456       2012-01-01     2012-01-04
213415       2012-01-02     2012-01-07

O que eu preciso alcançar com uma visão é o seguinte:

Person_Id    ArrivalDate    DepartureDate    Jan-01    Jan-02    Jan-03    Jan-04    Jan-05    Jan-06    Jan-07
123456       2012-01-01     2012-01-04       1         1         1         1
213415       2012-01-02     2012-01-07                 1         1         1         1         1         1

O sistema é para eventos, então cada reserva de hotel pode levar de 1 a 15 dias, mas não mais que isso. Todas as idéias seriam muito apreciadas.

sql-server sql-server-2008
  • 3 respostas
  • 77006 Views
Martin Hope
Federico Giust
Asked: 2012-06-02 06:07:41 +0800 CST

Existe uma maneira fácil de depurar e descobrir por que uma consulta está lenta?

  • 0

Estou me deparando com um problema estranho.

Temos dois servidores de banco de dados, um é de desenvolvimento e o outro é de produção.

Ambos têm as mesmas especificações.

VMs (Hyper-V) Windows Server 2008 R2 64 bits SQL Server 2008 R2 64 bits

Se eu executar exatamente a mesma consulta em nosso servidor de desenvolvimento, levará 10 segundos para obter 10 resultados. A mesma consulta no servidor de produção leva 1:30 minutos às vezes mais.

Existe uma maneira fácil de encontrar a origem do problema? É algo relacionado a índices, carga de trabalho?

Este é apenas um exemplo, as consultas são geradas dinamicamente, isso é usado por nosso aplicativo da web e gera consultas em um menu de pesquisa avançada

EDITAR consulta adicionada

SELECT Client_Id, Project_Id, Person_Id, Membership_No, Family_Name,
       First_Name, Password, Company, Country_Name, EMail, Member_Type,
       Member_Type_Description, Member_Status, Member_Status_Description,
       Category, Member_Category_Description, Balance, Date_Registered 
FROM uvw_Members_Display 
WHERE Client_Id='EHA' 
  AND Project_Id='EHA' 
  AND ( Client_Id='EHA'
    AND Project_Id='EHA' 
    AND (  (( uvw_Members_Display.Member_Type LIKE '01' ))
        OR ( uvw_Members_Display.Member_Type LIKE '02' )
        OR ( uvw_Members_Display.Member_Type LIKE '03' )
        OR ( uvw_Members_Display.Member_Type LIKE '04' )
        )
    AND ( uvw_Members_Display.Member_Status LIKE 'I' )
    AND ( Balance =0 )
    AND ( uvw_Members_Display.Category LIKE '02' ) 
    AND Date_Registered IS NOT NULL 
      ) 
ORDER BY Person_Id DESC
sql-server-2008 windows
  • 1 respostas
  • 5412 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