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

Peter PitLock's questions

Martin Hope
Peter PitLock
Asked: 2017-05-18 21:17:41 +0800 CST

Entendendo a coluna varchar(max) 8000 e por que posso armazenar mais de 8000 caracteres nela

  • 13

A partir deste documento da Microsoft,+

n define o comprimento da string e pode ser um valor de 1 a 8.000. max indica que o tamanho máximo de armazenamento é 2^31-1 bytes (2 GB). O tamanho do armazenamento é o comprimento real dos dados inseridos + 2 bytes.

Por favor me ajude a entender isso.

Os caracteres máximos para varchar parecem ser 8000, o que vale muito menos do que 2GBos dados.

Vejo que há registros nesta varchar(max)coluna de uma tabela específica que possuem len(mycolumn)> 100.000. Assim, sei que posso obter muito mais do que 8000caracteres em uma varchar(max)coluna.

Pergunta 1: Como os 8000personagens entram em jogo e onde devo estar ciente disso?

Pergunta 2 : uma consulta de leitor de dados .net a esta coluna sempre retornará o resultado completo com mais de 100.000 caracteres?

sql-server varchar
  • 2 respostas
  • 24562 Views
Martin Hope
Peter PitLock
Asked: 2017-05-11 03:52:46 +0800 CST

Local de download do SQL Web Edition

  • 1

Não consigo encontrar o local de download do SQL Web Edition.

Posso encontrar as edições Standard / Developer / Express, mas não a edição Web.

Eu tentei https://www.microsoft.com/en-us/sql-server/sql-server-downloads , segui todos os links da página e encontrei vários recursos informativos da edição SQL Web, mas não o arquivo real.

Onde/como posso baixar o SQL Web Edition

sql-server
  • 1 respostas
  • 6123 Views
Martin Hope
Peter PitLock
Asked: 2017-04-17 10:39:55 +0800 CST

Possível interceptar e alterar consultas SQL no mecanismo antes de ser executado?

  • 2

Eu desisti de tentar consertar um programa php (que é obviamente voltado para MySQL) rodando no SQL Server.

[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Incorrect syntax near '`'. for query UPDATE wp_posts SET post_author = yyy, post_date =  N'2017-04-16 16:52:44.000', post_date_gmt =  N'2017-04-16 14:52:44.000', post_content =  N'\\ \', `post_content_filtered` =  N'', `post_title` =  N'test \\', `post_excerpt` =  N'', `post_status` =  N'draft', `post_type` =  N'post', `comment_status` =  N'closed', `ping_status` =  N'open', `post_password` =  N'', WHERE ID = xxx made by edit_post, wp_update_post, wp_insert_post, pdo_wpdb->query, pdo_wpdb->_post_query, pdo_wpdb->print_error

É possível criar um filtro apenas em um banco de dados específico e remover todos os backticks/símbolos graves para sanear todas as consultas recebidas?

sql-server
  • 2 respostas
  • 1112 Views
Martin Hope
Peter PitLock
Asked: 2017-04-08 22:39:53 +0800 CST

Segurança por banco de dados no pool do SQL Azure

  • 1

Sou novo no SQL Azure e preciso planejar a migração de alguns de nossos bancos de dados SQL Server.

Temos um SQL Server Azure Pool que pode levar até 50 bancos de dados.

Eu preciso restringir determinados usuários a bancos de dados específicos dentro do pool.

Por exemplo, o usuário1 só pode acessar o banco de dados Northwind - assim, quando ele se conecta com o SSMS ao pool do Azure, este é o único banco de dados que ele pode ver (ele não pode ver os outros 49)

É possível configurar isso - ou é um caso que, se você tiver acesso à instância (todo o pool) -, terá acesso a todos os bancos de dados dentro desse pool?

Isso significaria que precisaríamos mover cada banco de dados para sua própria instância com base na segurança? Também terá a implicação de que qualquer nome de usuário/senha SQL usado nos aplicativos web.config, esse usuário na configuração terá acesso a todos os bancos de dados na instância SQL (nome do servidor)

Estou analisando o treinamento do SQL Azure no Pluralsight e vendo que existem firewalls de nível de banco de dados baseados em IP - neste caso, temos vários desenvolvedores - cada um com o mesmo IP - mas desenvolvedores específicos devem ter acesso apenas a bancos de dados específicos. Assim, uma regra de IP por banco de dados na instância não funcionará, pois o nome de usuário não é avaliado.

sql-server security
  • 1 respostas
  • 103 Views
Martin Hope
Peter PitLock
Asked: 2017-04-07 22:42:38 +0800 CST

Por que preciso fazer backup de um log de transações duas vezes para que ele seja reduzido?

  • 4

Esta pergunta foi tentada duas vezes na troca de especialistas sem resposta real.

Eu sei que não devo reduzir o arquivo de log - essa não é a questão.

Se você sentir vontade de responder que não se deve fazê-lo - isso foi confirmado muitas vezes sim e não é o objetivo desta pergunta.

Definir como backup simples também não é uma opção.

Isso tem me incomodado há anos - o fato de que agora sei por que deveria ser feito backup duas vezes.

Recentemente, vi o primeiro arquivo de log que foi capaz de encolher todas as vezes na primeira tentativa - era inacreditável. Perguntei ao cara sobre isso e tudo o que consegui entender foi "reorganizar antes de liberar" - não sei a que ele estava se referindo. Não estou conseguindo entrar em contato com ele novamente.

Eu sei disso pelas postagens existentes no EE: "A redução remove partes inativas do log. Para ficar inativo, o log deve ser truncado, o que ocorre como parte do backup do log.

No entanto, o log de transações é composto de muitos arquivos de log virtuais que são usados ​​de forma round robin. Somente os logs virtuais no final do arquivo podem ser removidos, portanto, se o SQL Server estiver usando o último log virtual, nada poderá ser removido. A correção antiga no sql 7 era executar um script que executasse transações fictícias suficientes para preencher o log e envolver o ponteiro no primeiro log virtual (você ainda pode usar esse método, se preferir).
http://support.microsoft.com/kb/256650/EN-US

DBCC agora faz isso para você, mas ainda requer a etapa extra de truncar o log novamente para que o espaço inativo possa ser excluído"

De outro usuário: "Tudo o que eu precisava fazer era descontinuar a otimização automatizada e as verificações de integridade que o último administrador deixou nos planos de manutenção do banco de dados".

sql-server backup
  • 1 respostas
  • 2491 Views
Martin Hope
Peter PitLock
Asked: 2017-03-25 05:25:33 +0800 CST

Compare cada dia do ano com DATEFIRST = 1 e DATEFIRST = 7

  • 2

Para obter uma lista de semanas, basta executar isso (encontrado online):

SET DATEFIRST 7
;with DateCTE   as
(
    select cast('01/01/2017' as datetime) DateValue
    union all
    select DateValue + 1
    from    DateCTE  
    where   DateValue + 1 < '1/1/2018'
)


Select
    cast(CAST(DateValue AS CHAR(11)) AS DateTime) AS [FullDate],
    DATEPART(wk, DateValue) AS WeekOfYear,
    DATEPART(yy, DateValue) AS CalendarYear 
from   DateCTE
OPTION (MAXRECURSION 0)

insira a descrição da imagem aqui

Obviamente, se eu SET DATEFIRST = 1, obtém resultados diferentes.

insira a descrição da imagem aqui

Preciso comparar os dias em uma tabela, sem usar variáveis ​​de tabela. Isto é o que eu gostaria de alcançar: insira a descrição da imagem aqui

Assim, gostaria de ver os mesmos 365 dias que estarão disponíveis em ambos os CTE's,

Eu quero comparar o WeekOfYear com base em diferentes DateFirsts.

Eu não sei como fazer isso de forma eficaz. Só consigo fazer funcionar quando

  1. Crie a variável de tabela 1 e execute o CTE para DateFirst7
  2. Crie a variável de tabela 2 e execute o CTE para DateFirst1

Isso é ineficiente e estou procurando uma maneira melhor de fazer isso.

Existem algumas coisas trabalhando contra isso 1. Eu não sei como definir o DateFirst dentro da consulta. Só sei configurar antes do cte. 2. Eu gostaria de usar CTEs aninhados para isso, mas OPTION (MAXRECURSION 0) não funciona bem com CTEs aninhados

Isso é possível - usando CTEs para obter os resultados necessários?

sql-server cte
  • 3 respostas
  • 705 Views
Martin Hope
Peter PitLock
Asked: 2017-03-24 22:14:05 +0800 CST

SSMS local conectado à instância SQL da VPN - a atualização falha quando a VPN é desconectada

  • 1

Eu me conecto a uma VPN.

Eu abro o SSMS do meu computador local.

Eu conecto o SSMS do meu computador local à instância do SQL na VPN

Eu executo uma atualização de SQL de longa duração no meu computador local e, durante isso, ocorre um erro de VPN.

Todo o progresso agora com o SQL Update é perdido.

Existe uma maneira de usar o computador local para se conectar à instância remota do SQL e fazer com que a atualização do SQL termine mesmo que eu seja desconectado.

sql-server ssms
  • 2 respostas
  • 583 Views
Martin Hope
Peter PitLock
Asked: 2016-11-16 02:10:04 +0800 CST

O SQL Server Availability Group não atualiza o proprietário do banco de dados automaticamente

  • 2

Aprendi uma dura lição esta semana. Acontece que, embora as atualizações de tabela/esquema sejam replicadas nos bancos de dados em um Grupo de Disponibilidade, alterar o proprietário do banco de dados na réplica primária não altera automaticamente o proprietário do banco de dados na réplica secundária.

Portanto, se você executar um failover, o proprietário do banco de dados poderá ficar fora de sincronia com o SID da tabela principal.

Meu plano de ação, por exemplo, ao fazer uma alteração relacionada à segurança, deve ser

1. Apply change to primary replica
2. Fail over the Availability Group
3. Apply change to the new primary replica

Estou correto em fazer essas afirmações? Devo estar ciente apenas das alterações do DBOwner/Schema quando estou fazendo alterações.

security sql-server-2014
  • 1 respostas
  • 3827 Views
Martin Hope
Peter PitLock
Asked: 2016-08-17 23:24:29 +0800 CST

O grupo de disponibilidade do SQL 2014 do mesmo banco de dados produz backup de tamanho diferente do nó A para o nó B

  • 1

Eu tenho esse código em um trabalho SQL para executar um backup de banco de dados na hora.

IF sys.fn_hadr_backup_is_preferred_replica('AdventureWorks') = 1
BEGIN
  declare @seq varchar(7) = '-' + Right('00' + cast(datepart(HOUR, getdate()) % 24 as varchar(2)), 2) + '.bak'
  ...
  WITH INIT, FORMAT, COPY_ONLY, CREDENTIAL = 'AdventureWorksAzureBackupStorage', compression, stats=1
END

A dúvida que tenho é se eu retirar o cheque fn_hadr_backup_is_preferred_replica e apenas executar

BEGIN
  declare @seq varchar(7) = '-' + Right('00' + cast(datepart(HOUR, getdate()) % 24 as varchar(2)), 2) + '.bak'
  ...
  WITH INIT, FORMAT, COPY_ONLY, CREDENTIAL = 'AdventureWorksAzureBackupStorage', compression, stats=1
END

no primeiro A, depois no B, o tamanho dos bancos de dados é muito diferente, por exemplo, o backup do banco de dados do nó ativo é 8 vezes maior do que o backup do banco de dados do nó passivo.

Existe uma explicação para isso, por favor? O nó ativo não está compactado, talvez? E o nó passivo é compactado?

backup sql-server-2014
  • 1 respostas
  • 113 Views
Martin Hope
Peter PitLock
Asked: 2016-05-17 22:42:49 +0800 CST

Bancos de dados criados com diferentes agrupamentos - por quê?

  • 2

Temos uma instância do SQL Server 2014, que hospeda muitos bancos de dados relacionados. Novos são adicionados através do nosso script regularmente. Quando nosso aplicativo é usado para criar o banco de dados - os bancos de dados são criados com o agrupamento SQL_Latin1_General_CP1_CI_AS conforme o esperado.

Mas agora existem bancos de dados com Latin1_General_CI_AScollation. Eles não foram criados pelo nosso aplicativo (analisamos o criador do banco de dados). Por exemplo, "Pete" é o proprietário do banco de dados e alguns bancos de dados que ele criou teriam Latin1_General_CI_AScollation e outros SQL_Latin1_General_CP1_CI_AS.

Alguém pode apontar o que eu poderia investigar, por favor - o agrupamento padrão nem sempre deve ser o mesmo que a instância SQL? E se eu criasse um banco de dados remotamente - de PC1 com Collation1 e PC2 com Collation2 - o banco de dados seria criado com diferentes agrupamentos?

Alguma ideia de como isso poderia acontecer - vários agrupamentos para um usuário? Obrigado

sql-server sql-server-2014
  • 1 respostas
  • 537 Views
Martin Hope
Peter PitLock
Asked: 2015-09-22 22:03:58 +0800 CST

Identifique a sequência de eventos com base em certas regras

  • 1

Preciso de ajuda para identificar uma sequência de eventos nas linhas do SQL Server 2008 R2, por favor:

Estes são os dados de amostra com SQLFiddle :

   ID   EventTime       TypeID             EventNr
    1   06:34:51        1
    2   06:35:51        3
    3   06:36:51        40
    4   06:37:51        10
    5   06:48:51        1
    6   06:49:51        2
    7   06:50:51        4
    8   06:51:51        40
    9   06:52:51        5
    10  06:53:51        10

Preciso de ajuda para identificar os Nrs do Evento, por favor - Regras que devo seguir:

  • Um evento começa com TypeID 1 ( @StartTypeID).

  • Um evento termina com TypeID 10 ( @EndTypeID).

  • Um evento tem um TypeID diferente depois @StartTypeIDe antes @EndTypeID.

  • E deve haver mais de 5 minutos entre EventNrs.

Este é o resultado esperado para o exemplo acima:

 ID EventTime   TypeID  Notes                                               EventNr
1   06:34:51    1       Starts with TypeID @StartID 1     (OK)                     1
2   06:35:51    3       Has different TypeID in sequence before @EndID reached(OK) 1
3   06:36:51    40                                                                 1
4   06:37:51    10      Ends with @EndID 10 + >5min before next Event(OK EventEnd) 1

5   06:48:51    1       Starts with TypeID @StartID 1                              2
6   06:49:51    2       Has different TypeID in sequence before @EndID reached     2
7   06:50:51    4                                                                  2
8   06:51:51    40                                                                 2
9   06:52:51    5       Has different TypeID in sequence before  @EndID reached    2
10  06:53:51    10      Ends with @EndID 10                                        2

SQL para criar a amostra de dados:

declare @FirstTypeID int = 1

declare @LastTypeID int = 10


create table #T (ID int identity , EventTime datetime, TypeID int)
insert into #T(EventTime,TypeID)
values
 (DATEADD(minute,-30,getdate()),1)
 ,(DATEADD(minute,-29,getdate()),3)
 ,(DATEADD(minute,-28,getdate()),40)
 ,(DATEADD(minute,-27,getdate()),10)  
 ,(DATEADD(minute,-16,getdate()),1)
 ,(DATEADD(minute,-15,getdate()),2)
 ,(DATEADD(minute,-14,getdate()),4)
 ,(DATEADD(minute,-13,getdate()),40)
 ,(DATEADD(minute,-12,getdate()),5) 
 ,(DATEADD(minute,-11,getdate()),10)    


select * from #T

drop table #T
sql-server sql-server-2008-r2
  • 1 respostas
  • 1750 Views
Martin Hope
Peter PitLock
Asked: 2015-08-07 04:29:28 +0800 CST

Leia as coordenadas do GPS em LineString da tabela

  • 1

Encontrei este belo trecho de código que usa uma cadeia de linha e posso obter os pontos dela:

DECLARE @GeographyToConvert geography
SET     @GeographyToConvert = geography::STGeomFromText('LINESTRING (26.6434033 -81.7097817, 26.6435367 -81.709785, 26.6435783 -81.7098033, 26.6436067 -81.709825, 26.6435883 -81.709875, 26.64356 -81.7100417, 26.6434417 -81.710125, 26.6433167 -81.7101467, 26.643195 -81.7101033, 26.6431533 -81.7099517, 26.643175 -81.7097867, 26.643165 -81.7097917, 26.6431633 -81.7097367, 26.6431583 -81.7097083)',4326);
select @GeographyToConvert.STPointN(1)
select @GeographyToConvert.STPointN(2)
select @GeographyToConvert.STPointN(3)

Retorna:

0xE6100000010C273339106D6D54C073A32314B6A43A40
0xE6100000010C3F8C101E6D6D54C0984638D2BEA43A40
0xE6100000010CF205D26A6D6D54C050EA268CC1A43A40

A partir daqui, posso fazer o que preciso por meio do código mencionado.

No entanto, em vez da linha de demonstração pré-preenchida, tenho uma tabela com coordenadas de GPS que contém os dados dos quais preciso preencher o@GeographyToConvert geography

declare @Geo table(long float, lat float)
insert into @Geo(  long, lat ) values
               ( -121.527200, 45.712113 ),
               ( -121.517265, 45.714240 ),
               ( -121.511536, 45.714825)

Select * from @Geo

Posso, por favor, pedir ajuda para colocar os @Geovalores da tabela no@GeographyToConvert geography

sql-server-2008-r2 spatial
  • 2 respostas
  • 748 Views
Martin Hope
Peter PitLock
Asked: 2015-04-14 04:24:08 +0800 CST

Log Shipping -Monitor Server Down - Cópia acontecendo, mas não restaurando no secundário

  • 1

Configurei algumas instâncias de envio de logs, mas não sou um DBA.

Neste fim de semana, algo aconteceu pela primeira vez - o Log Shipping Monitor Server caiu temporariamente devido a problemas elétricos fora do meu controle.

Quando olhei para as máquinas primária e secundária durante esse tempo - ambas estavam funcionando e os arquivos .trn ainda estavam sendo copiados da primária para a secundária - como esperado. No entanto, a instância secundária não restaurou os arquivos .trn. Recebi uma notificação:

O banco de dados primário de envio de log _________ tem um limite de backup de 60 minutos e não executou uma operação de log de backup por 82 minutos. Verifique as informações do log do agente e do monitor de logshipping.

Isso é esperado? O primário e o secundário estavam em execução - o monitor não deveria ser uma instância SQL "opcional" que não deveria ter efeito no envio de logs? Ele estava impedindo a instância secundária de aplicar os backups, embora eu tenha executado explicitamente a tarefa de restauração posteriormente. Quando o servidor do monitor voltou - tudo se resolveu.

Eu sei que tenho muito a aprender, qualquer conselho sobre se posso verificar algumas configurações ou se isso é esperado seria apreciado, por favor.

sql-server-2008-r2 monitoring
  • 1 respostas
  • 1087 Views
Martin Hope
Peter PitLock
Asked: 2014-09-17 06:24:39 +0800 CST

SQLCMD - adicione data ao CSV. Quando executado dentro do prompt de comando, funciona, quando no trabalho, %date

  • 0

Estou lutando há horas para adicionar uma data a um nome CSV: Para ser breve, estou apenas pegando o primeiro caractere da data aqui.

No comando SQL, isso funciona:

sqlcmd -S localhost -d master -E -W -w 999 -s "," -Q "SELECT D.* FROM sys.databases D" -o "C:\sqlcmd%date:~1,1%.csv"

Mas quando tento usar exatamente o mesmo código dentro da etapa de um trabalho, o nome do arquivo é

sqlcmd_%date

Não consigo executar o xp_commandShell, existe uma maneira de obter a data dinâmica funcionando no SQLCmd, por favor? Eu li tantos artigos, por exemplo .

sql-server-2008-r2 csv
  • 1 respostas
  • 993 Views
Martin Hope
Peter PitLock
Asked: 2014-09-16 06:59:26 +0800 CST

SQL Server 2008 R2 - remova a linha abaixo do título (que possui ----,----) - não possui SSIS

  • 2

Eu encontrei esta linha de código online

sqlcmd -S localhost -d master -E -W -w 999 -s "," -Q "SELECT D.* FROM sys.databases D" -o "C:\sqlcmd.csv"

Isso é usado em um trabalho SQL para exportar para um arquivo CSV.

Não há SSIS instalado, não consigo instalar o SSIS na máquina.

Isso é o que é exportado

name,database_id,source_database_id,owner_sid,create_date,compatibility_level,collation_name,user_access,user_access_desc,is_read_only,is_auto_close_on,is_auto_shrink_on,state,state_desc,is_in_standby,is_cleanly_shutdown,is_supplemental_logging_enabled,snapshot_isolation_state,snapshot_isolation_state_desc,is_read_committed_snapshot_on,recovery_model,recovery_model_desc,page_verify_option,page_verify_option_desc,is_auto_create_stats_on,is_auto_update_stats_on,is_auto_update_stats_async_on,is_ansi_null_default_on,is_ansi_nulls_on,is_ansi_padding_on,is_ansi_warnings_on,is_arithabort_on,is_concat_null_yields_null_on,is_numeric_roundabort_on,is_quoted_identifier_on,is_recursive_triggers_on,is_cursor_close_on_commit_on,is_local_cursor_default,is_fulltext_enabled,is_trustworthy_on,is_db_chaining_on,is_parameterization_forced,is_master_key_encrypted_by_server,is_published,is_subscribed,is_merge_published,is_distributor,is_sync_with_backup,service_broker_guid,is_broker_enabled,log_reuse_wait,
log_reuse_wait_desc,is_date_correlation_on,is_cdc_enabled,is_encrypted,is_honor_broker_priority_on
----,-----------,------------------,---------,-----------,-------------------,--------------,-----------,----------------,------------,----------------,-----------------,-----,----------,-------------,-------------------,-------------------------------,------------------------,-----------------------------,-----------------------------,--------------,-------------------,------------------,-----------------------,-----------------------,-----------------------,-----------------------------,-----------------------,----------------,------------------,-------------------,----------------,-----------------------------,------------------------,-----------------------,------------------------,----------------------------,-----------------------,-------------------,-----------------,-----------------,--------------------------,---------------------------------,------------,-------------,------------------,--------------,-------------------,-------------------,-----------------,--------------,
-------------------,----------------------,--------------,------------,---------------------------
master,1,NULL,0x01,2010-04-08 09:13:36.390,100,SQL_Latin1_General_CP1_CI_AS,0,MULTI_USER,0,0,0,0,ONLINE,0,0,0,1,ON,0,3,SIMPLE,2,CHECKSUM,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0xxxx0-0000-0000-0000-000000000000,0,0,NOTHING,0,0,0,0
tempdb,2,NULL,0x01,2014-09-15 08:39:08.587,100,SQL_Latin1_General_CP1_CI_AS,0,MULTI_USER,0,0,0,0,ONLINE,0,0,0,0,OFF,0,3,SIMPLE,2,CHECKSUM,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,Exxxxx7-BE30-4829-8AB1-DAA8730978AE,1,0,NOTHING,0,0,0,0

Existe alguma maneira de alterar o comando para excluir a linha abaixo do título, por favor, preciso do título, mas eles não podem aceitar a linha abaixo do título (a linha que começa com ----,--)

sql-server-2008-r2 powershell
  • 1 respostas
  • 541 Views
Martin Hope
Peter PitLock
Asked: 2014-09-05 23:47:24 +0800 CST

Choque de tipo de operando: meu primeiro tipo definido pelo usuário com lista de inteiros, como testar via SSMS

  • 6

Achei esse código maravilhoso aqui

    CREATE TYPE [dbo].[StringList] AS TABLE(
    [Item] [NVARCHAR](MAX) NULL
);

    GO 
    CREATE PROCEDURE [dbo].[sp_UseStringList]
        @list StringList READONLY
    AS
    BEGIN
        -- Just return the items we passed in
        SELECT l.Item FROM @list l;
    END

    GO

mas não sei como testar via SSMS por favor

declare @list   StringList  = '1,2,3,4,5'
exec sp_UseStringList @list

dá o erro:

Operand type clash: varchar is incompatible with StringList

Como posso testar a lista '1,2,3,4,5' por favor

sql-server-2008 user-defined-type
  • 1 respostas
  • 21898 Views
Martin Hope
Peter PitLock
Asked: 2014-07-05 03:11:23 +0800 CST

Coalesce per row - obtém todos os IDs detalhados agrupados por HeaderRow, por exemplo, Invoice1 | 1,2,3 Fatura 2 | 4,5,6

  • 0

Eu tenho os seguintes dados de demonstração (retirados do Adventureworks)

SalesOrderNumber    SalesOrderDetailID
SO43659             12
SO43659             11
SO43659             8
SO43659             9
SO43660             14
SO43660             13
SO43661             27

É possível agrupar por SalesOrderNumber e mostrar os IDs de detalhes por SalesOrderNumber?

SalesOrderNumber    SalesOrderDetailID
SO43659             12, 11, 8, 9
SO43660             14, 13
SO43661             27

http://www.sqlfiddle.com/#!3/7708b/1

Qual seria a melhor opção para isso, por favor? Pivôs? Cursores?

Cursor que chama o procedimento armazenado para cada linha, por exemplo, aqui ? Ou esta opção de 4guysfromrolla que usa função definida pelo usuário?

Isso é algo que será executado apenas uma vez - à noite - não preciso de eficiência - apenas qualquer ajuda, por favor.

sql-server-2008 row
  • 1 respostas
  • 99 Views
Martin Hope
Peter PitLock
Asked: 2014-07-04 23:03:31 +0800 CST

Correspondência de 3 colunas em linha - se uma coluna for nula, exclua-a da comparação

  • 1
A   B   C    Equal
1   1   1    Y
2   2   NULL N

Olá, tenho 3 colunas que preciso comparar: Colunas A,B,C. Se essas 3 colunas forem iguais, a coluna 'Igual' = 'Y'

Mas, se uma coluna for nula, ela deve ser excluída da comparação, por exemplo, no exemplo, a Linha 2 tem um valor nulo, mas as colunas restantes são todas iguais, então Igual deve ser sim - porque todos os valores não nulos são igual

http://www.sqlfiddle.com/#!3/dedd9/2

Achei que poderia usar isnull(C,A) = A mas não funcionou. Alguém poderia ajudar por favor

 declare @t table
 (
 A decimal,B decimal, C decimal
 )

 insert Into @t(A,B,C) values (1,1,1)
 insert Into @t(A,B) values (2,2)

 select A,B,C,'Equal' = case when ISNULL(A,B) = B and ISNULL(B,C) = C and ISNULL(C,A) = A then 'Y' else '' end
 from @t
sql-server-2008-r2 isnull
  • 3 respostas
  • 3345 Views
Martin Hope
Peter PitLock
Asked: 2014-03-31 23:58:47 +0800 CST

Dentro do procedimento armazenado, defina os nomes das colunas da consulta retornada de acordo com a variável

  • 2

Eu tenho uma consulta que gostaria de reutilizar, em vez de ter muitas cópias diferentes dela apenas para alterar o nome da coluna.

O relatório (por exemplo ) usa a mesma consulta, mas há cães ou gatos na tabela e, se houver gatos, ele retornará 'Nr of Cats' e, se houver cães, 'Nr of Dogs' como título para a tabela retornada.

declare @Animals table (
  AnimalType varchar(20), Name varchar(20)
  )

insert into @Animals(Type, Name) values('Cat', 'Garfield')

declare @AnimalType varchar(20)

set @AnimalType = (Select Top 1  AnimalType from @Animals )

select 
    Case when @AnimalType = 'Cat' 
           then 'Nr of Cats' 
           else 'Nr of Dogs' = count(*)  from @Animals
sql-server-2005 temporary-tables
  • 1 respostas
  • 2069 Views
Martin Hope
Peter PitLock
Asked: 2014-02-25 05:29:05 +0800 CST

Fazendo um loop na string, adicionando todos os números, por exemplo, '123' = 1+2+3, demonstração com loop de trabalho incluído

  • 0

Isso funciona para gerar a string 123456como:

1
2
3
4
5
6

Código:

declare @string varchar(20)
declare @index int
declare @len int
declare @char char(1)

set @string = '123456'
set @index = 1
set @len= LEN(@string)

WHILE @index<= @len
BEGIN
set @char = SUBSTRING(@string, @index, 1)
print @char

SET @index= @index+ 1
END

Mas quando tento usar este código para adicionar esses valores ao percorrê-los (1+2+3+4+5+6 = 21), não obtenho um resultado do SQL, por favor ajude

declare @string varchar(20)
declare @index int
declare @len int
declare @char char(1)

set @string = '123456'
set @index = 1
set @len= LEN(@string)

declare @Total int 


WHILE @index<= @len
BEGIN
set @char = SUBSTRING(@string, @index, 1)
set @Total = @Total + cast(@char as int)

SET @index= @index+ 1
END

print @Total
sql-server-2005 string
  • 1 respostas
  • 6777 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