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

user1664043's questions

Martin Hope
user1664043
Asked: 2025-03-07 23:49:51 +0800 CST

Tabela muito pequena vs PATINDEX

  • 7

Sei que estou entrando em detalhes, mas estou implementando algo para processar um feed multilíngue.

Na tabela de ingestão bruta, que tem aproximadamente 190 milhões de linhas, eu queria capturar tudo o que o fornecedor nos enviou, mas devo repassar apenas as linhas que estão em um pequeno subconjunto de idiomas aprovados.

Originalmente, essa lista era apenas em inglês, mas agora eles querem aumentar a lista de idiomas "aprovados".

Então, tenho vários lugares onde a etapa de processamento é

WHERE lang_code = 'en'

que precisam de ajustes.

Eu criei algumas implementações

  1. Variável de tabela muito pequena na rotina de processamento do feed com 2-3 linhas para códigos "aprovados".
  2. Uma tabela permanente muito pequena contendo 2 a 3 linhas para códigos aprovados.
  3. PATINDEX em uma string de vírgula com códigos aprovados (por exemplo, WHERE PATINDEX('%,'+lang_code+',%', ',en,de,pl,') > 0)

A lista pode crescer para 5 ou 6, mas é improvável que passe de 10.

Para esse tipo de lista muito curta, eu queria saber onde as pessoas podem ver a linha entre implementações de tabela e implementações apenas "nesta sequência curta".

sql-server
  • 2 respostas
  • 155 Views
Martin Hope
user1664043
Asked: 2024-11-01 05:06:10 +0800 CST

Normalizar linhas com conjuntos de colunas, lidar com todos os nulos?

  • 5

Quero dizer desde já que sei que isso é loucura.

Eu herdei um aplicativo que preciso manter de alguém que desnormalizou 6 conjuntos de colunas em uma única linha (por exemplo, algumas colunas principais, como ID , 00_c1, 00_c2, 00_c3, 01_c1, 01_c2, 01_c3, 02_c1, 02_c2, 02_c3, etc.).

Então ele quis normalizar novamente esse conjunto de colunas com a finalidade de criar objetos JSON a partir da linha.

Na implementação original, ele escreveu uma visão de renormalização que usava 6 UNION ALLs

por exemplo

SELECT ID, '0' as X, 00_c1 as c1, 00_c2 as c2, 00_c3 as c3
FROM table WHERE 00_c1 is not null
UNION ALL
SELECT ID, '1' as X, 01_c1 as c1, 01_c2 as c2, 01_c3 as c3
FROM table WHERE 01_c1 is not null
UNION ALL
SELECT ID, '2' as X, 02_c1 as c1, 02_c2 as c2, 02_c3 as c3
FROM table WHERE 02_c1 is not null
UNION ALL
...

Sua consulta jsonizada procura a linha em ID e então se junta à exibição em ID com FOR JSON PATH.

É extremamente ineficiente, então eu estava tentando substituir a normalização por CROSS APPLY (VALUES ())

Funcionou e é muito mais eficiente, mas estou obtendo um artefato estranho com a implementação de VALUES, onde todas as colunas em um conjunto são nulas e estou obtendo um objeto json vazio para isso.

Em outras palavras, nem todas as linhas têm todos os 6 conjuntos de colunas. Algumas podem ter 3, algumas 4, etc. e as colunas (05_c1, 05_c2, 05_c3) serão todas nulas. O json resultante para essa linha simplesmente sai {}

Existe alguma maneira (com FOR JSON ou VALUES) de ignorar uma linha onde todos os valores são nulos?

Ou a única solução real é reimplementar tudo com uma normalização adequada?

sql-server
  • 1 respostas
  • 54 Views
Martin Hope
user1664043
Asked: 2024-08-07 01:00:50 +0800 CST

Função com valor de tabela CLR de 1 linha ou tipo definido pelo usuário?

  • 5

Estou trabalhando com um banco de dados de web spidering e estou tentando aproveitar a classe C# Uri via CLR para ajudar na análise de tráfego.

Minha primeira etapa foi criar uma função com valor de tabela CLR (que retorna apenas 1 linha) e CROSS APPLY para dividir os URLs nas partes do componente para revisão, mas estou descobrindo que CROSS APPLY realmente retarda as consultas (como fazer um a consulta com LIKE no banco de dados pode levar de 5 a 8 minutos, mas CROSS APPLY e observar o valor do host leva cerca de 45 minutos)

Eu queria saber se seria mais rápido implementar a interface Uri como um tipo definido pelo usuário e trabalhar isso em minhas consultas? Não fiz muitos tipos definidos pelo usuário, mas pensei que saber que haveria apenas 1 objeto de resposta poderia aliviar parte da sobrecarga no Sql Server. Um UDT teria melhor desempenho em uma consulta?

Minha implementação tvf atualmente se parece com isto:

    [SqlFunction(DataAccess = DataAccessKind.None, IsDeterministic = true, IsPrecise = true, Name = "ufn_UrlParts", SystemDataAccess = SystemDataAccessKind.None, FillRowMethodName = "GetUrlParts")]
    public static IEnumerable UrlParts(SqlString input)
    {
        if (!input.IsNull && Uri.TryCreate(input.Value, UriKind.Absolute, out Uri url) && url.Valid(false))
            yield return url;
        yield break;
    }

    private static void GetUrlParts(object input, out string scheme, out string userinfo, out string host, out int hostType, out int port, out bool isdefaultPort, out string path, out string query)
    {
        Uri u = input as Uri;
        scheme = u?.Scheme;
        userinfo = u?.UserInfo;
        host = u?.Host;
        hostType = (int)(u?.HostNameType ?? UriHostNameType.Unknown);
        port = u?.Port ?? 0;
        isdefaultPort = u?.IsDefaultPort ?? false;
        path = u?.AbsolutePath;
        query = u?.Query;
    }
sql-server
  • 2 respostas
  • 52 Views
Martin Hope
user1664043
Asked: 2024-07-11 21:59:26 +0800 CST

Trabalhos do Sql Agent, contextos de execução, execução como problemas

  • 5

Estamos no SQL Server 2019.

Temos vários trabalhos do Sql Agent e, por padrão, eles são de propriedade do sa.

A equipe de segurança da empresa emitiu um decreto determinando que todas as contas SA deveriam ser desativadas por motivos de segurança, e isso me deixou um pouco confuso.

Temos um trabalho do Sql Agent que começou a falhar. Quando falha, tem o erro

Login failed for user 'sa'. Reason: The account is disabled.

Eu pensei, ok, isso faz sentido; desativamos a conta. Então segui vários caminhos para tentar consertar.

  1. Mude a propriedade para outra conta. Tentei várias, mas todas eram contas privilegiadas e ainda recebia o mesmo erro. Encontrei uma postagem em um fórum que dizia que o Sql Server padronizaria qualquer conta privilegiada para ser executada como sa.

  2. Tentei alterar o usuário Run As na seção Avançado da etapa do trabalho. Isso mudou o erro para

    Access to the remote server is denied because the current security context is not trusted
    

    Então descobri que não era possível desmarcar esse atributo na definição da tarefa - só poderia alterar para quem ele apontava, e isso me levou de volta para "sa está desabilitado"

  3. Então percebi que temos vários empregos de agente pertencentes a sa e apenas este está falhando. Não vejo as diferenças de configuração que explicariam por que este 1 falha e os outros 10-20 que pertencem a sa não. Não configuramos proxies e geralmente não tentamos alterar o Run As em lugar nenhum.

Qualquer indicação seria apreciada.

Obrigado

sql-server
  • 1 respostas
  • 46 Views
Martin Hope
user1664043
Asked: 2022-01-08 15:22:12 +0800 CST

SSIS detectando duplicatas sequenciais

  • 0

SSIS/Sql Server/Visual Studio 2019.

Eu tenho um grande arquivo csv que tem muitos dados duvidosos. Uma coisa que eu queria fazer era pelo menos tentar reconhecer as linhas sequenciais que são as mesmas e expulsar as duplicatas. Por "mesmo" eu queria verificar 2 valores de coluna específicos - Nome e Empresa.

Eu tenho um fluxo que parece que deve funcionar (dado que este é meu primeiro pacote SSIS e experiência limitada), mas não captura as duplicatas sequenciais. Não sei se é porque não estou entendendo a sintaxe da expressão Conditional Split, a maneira como um Script Component funciona ou quando/como as alterações de variável de pacote devem entrar em vigor nos componentes de script. Ninguém está lançando erros, mas as linhas do arquivo que são duplicatas sequenciais não estão sendo enviadas para o canal de "rejeições".

Eu criei duas variáveis ​​de pacote (lastName e lastCompany), inicializadas com "".

O fluxo tem uma fonte de arquivo Simples lendo e, em seguida, uma Divisão Condicional com, entre outras cláusulas na expressão,

... && !(Name == @[User::lastName] && Company == @[User::lastCompany]) &&

A ideia era que qualquer coisa que correspondesse a todas as cláusulas iria para o caminho de "sucesso" e as linhas que falhassem em qualquer uma dessas verificações iriam para o fluxo de "rejeições".

A próxima coisa no fluxo de "sucesso" é um Script Component que faz alguma normalização de dados e (pelo menos tenta) atualizar as variáveis ​​do pacote. Encontrei outro artigo de baixo para o modelo.

public override void PostExecute()
{
    base.PostExecute();

    // I've been trying to debug this and get some output on the VS output window but so far nothing has worked.
    // Trace is not showing up in DbgView, FireInformation and FireWarning didn't show up in any of the windows in VS
    Trace.WriteLine($"Starting: [{Variables.lastName}|{Variables.lastCompany}], Ending: [{lastName}|{lastCompany}]");

    Variables.lastCompany = lastCompany;
    Variables.lastName = lastName;
}

public override void Input0_ProcessInputRow(Input0Buffer Row)
{
    ...
    lastName = Row.Name;
    lastCompany = Row.Company;
}

O que estou perdendo

  1. A persistência de variáveis ​​de pacote e atualizações de componentes de script?
  2. Comportamento da expressão de divisão condicional?

Quer dizer, parece que deveria funcionar para mim, mas não é.

Obrigado

sql-server ssis
  • 1 respostas
  • 95 Views
Martin Hope
user1664043
Asked: 2021-10-29 12:22:40 +0800 CST

Sql Server 2019, migrando assemblies clr, segurança estrita clr

  • 1

Temos alguns códigos antigos em execução nos servidores Sql Server 2008 e estamos procurando atualizar para o Sql Server 2019. O código clr antigo é muito antigo (como .net framework 2.0 antigo), então eu sabia que teria que reconstruir o assemblies para o novo servidor. Fizemos um backup/restauração dos sistemas antigos para o novo sistema e, embora todos os assemblies estivessem lá, eles geraram erros na execução.

Eu encontrei as postagens "CLR strict security" e "CREATE ou ALTER ASSEMBLY para assembly XXX com a opção SAFE ou EXTERNAL_ACCESS falhou porque a opção 'clr strict security' de sp_configure está definida como 1. A Microsoft recomenda que você assine o assembly com um certificado..." mensagem.

Comecei na primeira montagem no primeiro db. Mudei o framework para 4.6.1 e assinei. Eu tentei ALTER ASSEMBLY pela primeira vez e ele disse que não poderia ALTER por causa da diferença de assinatura. Então eu eliminei todas as referências a esse assembly, então eliminei o assembly e fiz um CREATE ASSEMBLY com o novo código. E funcionou. Talvez não devesse, mas aconteceu.

Então eu comecei a trabalhar na próxima montagem no próximo banco de dados. Fez o mesmo processo (atualizar framework, assiná-lo, reconstruir, descartar todas as referências, descartar assembly, criar assembly). Somente na próxima vez que recebo "CREATE ou ALTER ASSEMBLY para assembly XXX com a opção SAFE ou EXTERNAL_ACCESS falhou porque a opção 'clr strict security' de sp_configure está definida como 1. A Microsoft recomenda que você assine o assembly com um certificado ..." mensagem.

eu corri

sp_configure

SELECT * FROM sys.trusted_assemblies
SELECT * FROM sys.assemblies

em ambos os bancos de dados. Ambos mostram "clr strict security" run_value como 1, ambos não mostram entradas em trusted_assemblies.

Estou percebendo que meu entendimento "apenas assine a montagem" não foi suficiente, mas estou intrigado por que a metodologia funcionou no primeiro banco de dados e falhou no segundo banco de dados.

Eu gerei os arquivos snk frescos para cada assembly e não associei nenhum login a eles.

Como "basta assinar a assembléia" conseguiu funcionar na primeira tentativa e não na segunda?

No primeiro banco de dados, na saída de sys.assemblies, vejo o token de chave pública da nova compilação no assembly e vejo SAFE_ACCESS no permission_set_desc e nas novas datas de instalação, mas não consigo descobrir por que isso foi suficiente em o primeiro db e não no segundo.

Obrigado

sql-server-2019 sql-clr
  • 1 respostas
  • 1457 Views
Martin Hope
user1664043
Asked: 2020-07-22 13:20:08 +0800 CST

Misturar ;COM NAMESPACES e coleções de esquema?

  • 3

Estou recebendo esses arquivos xml de um fornecedor, e é um wrapper do esquema NITF (notícias) e o esquema de metadados http://www.xmlnews.org/namespaces/meta# news (do Space 1999!)

Infelizmente, eles não declaram nenhum namespace no documento externo. Isto é o que eles nos dão:

<?xml version="1.0"?>
<document>
<nitf>
    <head>...</head>
    <body>...</body>
    etc
</nitf>
<xn:Resource xmlns:xn="http://www.xmlnews.org/namespaces/meta#">...</xn:Resource>
</document>

Eu estava tentando ver se poderia melhorar a taxa de transferência criando uma coleção de esquema xml e analisando-a digitada, mas a falta de qualquer declaração de namespace no texto xml está me atrapalhando.

ja tentei colocar

;WITH XMLNAMESPACES (default 'http://iptc.org/std/NITF/2006-10-18/')
SELECT CAST(rawXml as XML(NitfSchemaCollection))

mas não gosta (Validação XML: Declaração não encontrada para exceção do elemento 'documento').

Eu até tentei usar ;WITH XMLNAMESPACES para obter o xml bruto analisado em um tipo XML e depois convertê-lo em XML (NitfSchemaCollection), mas o mesmo problema.

Então minhas perguntas são:

  1. além de reescrever os documentos xml recebidos do fornecedor, existe alguma maneira de obter a coleção de esquema xml aplicada à análise?

e

  1. A análise de tipos produziria aprimoramento de desempenho suficiente para levá-lo adiante?

No momento, estamos no Sql Server 2008 sp4, mas eu poderia tentar em uma instância mais recente se isso pudesse mudar alguma coisa.

EDIT: Aqui está um documento de exemplo. Ambos os nós nitf e xn:Resource estão em conformidade com dois padrões de serialização de serviço de newswire muito antigos. Para minha coleção de esquema, adicionei ambos e ajustei o nitf para adicionar o nó do documento , que não é padrão. O esquema é longo para um post, mas posso adicioná-los se alguém estiver interessado.

<?xml version="1.0"?>
<document>
<nitf>
<head>
    <title>First World Problems: 'Should I cancel my Easter holiday and charter a superyacht to escape coronavirus?'</title>
</head>
<body>
    <body.head>
        <hedline>
        <hl1>First World Problems: 'Should I cancel my Easter holiday and charter a superyacht to escape coronavirus?'</hl1>
        </hedline>
        <byline>
        <bytag>By Caroline White</bytag>
        </byline>
        <distributor>Telegraph Group</distributor>
    </body.head>
    <body.content>
    <p><em>'I am thinking of cancelling my Easter holiday and chartering a yacht to whisk my immediate family off to sea. The idea is that we can still enjoy the trip of a lifetime without risking contracting the coronavirus. How would you recommend proceeding?'</em></p>
    <p>If you’ve got the wallet for it, a superyacht charter offers the most luxurious seclusion on the planet – and like the hand sanitiser aisle in Boots, you’re not the first to think of it. Some brokers anticipate an uptick in superyacht sales, as UHNWI look to create safe havens, and wealthy holidaymakers are likely to follow suit. So get moving.</p>
    <p>The first step is to recruit a charter broker – try Fraser, Burgess, YPI or <org value="ACORN:3601037911" idsrc="xmltag.org" >Camper &amp; Nicholsons</org>. They will gauge your budget, preferences and read your personality (are you too formal for that laid-back Aussie captain; are you too wild for that silver-service English crew) then come back to you with a bespoke selection of options. The next step is a rather blissful journey through yacht brochures. Then there are the itineraries to flick through: beach barbeques, diving days and suppers under the stars…</p>
    ...blah blah blah...
    <p><em><em>If you have a question for any of our Telegraph Luxury experts, on any topic, please email <a href="http://mailto:[email protected]/">[email protected]</a></em></em></p>
    <p><em>Last week on First World Problems</em></p>
    <p><a href="https://www.telegraph.co.uk/luxury/womens-style/first-world-problems-expensive-blonde-highlights-mayfair-salon/">First World Problems: 'Are expensive highlights at a Mayfair salon worth the price-and the journey?'</a></p>
    <p><em><em>Sign up for the <a href="https://www.telegraph.co.uk/newsletters/Luxury/">Telegraph Luxury newsletter</a> for your weekly dose of exquisite taste and expert opinion.</em></em></p>
</body.content>
</body>
</nitf>
<xn:Resource xmlns:xn="http://www.xmlnews.org/namespaces/meta#">
    <xn:providerName>Telegraph Group</xn:providerName>
    <xn:providerCode>127</xn:providerCode>
    <xn:serviceName>Telegraph Online</xn:serviceName>
    <xn:serviceCode>2</xn:serviceCode>
    <xn:resourceID>202003100715TELEGR__ONLINE___60979152</xn:resourceID>
    <xn:publicationTime>2020-03-10T07:15:00-04:00</xn:publicationTime>
    <xn:receivedTime>2020-03-10T07:50:43-04:00</xn:receivedTime>
    <xn:title>First World Problems: 'Should I cancel my Easter holiday and charter a superyacht to escape coronavirus?'</xn:title>
    <xn:rendition>202003100715TELEGR__ONLINE___60979152.xml</xn:rendition>
    <xn:vendorData>WAVO:Publish Reason=CORRECTED</xn:vendorData>
    <xn:vendorData>WAVO:alert=FALSE</xn:vendorData>
    <xn:vendorData>WAVO:headline_only=FALSE</xn:vendorData>
    <xn:vendorData>WAVO:temporary=FALSE</xn:vendorData>
    <xn:vendorData>AMX:Publish Reason=CORRECTED</xn:vendorData>
    <xn:vendorData>AMX:Alert=FALSE</xn:vendorData>
    <xn:vendorData>AMX:Headline Only=FALSE</xn:vendorData>
    <xn:vendorData>AMX:Temporary=FALSE</xn:vendorData>
    <xn:vendorData>AMX:Special Code=PS/p.TELEGR__</xn:vendorData>
    <xn:vendorData>AMX:Special Code=PS/s.ONLINE__</xn:vendorData>
    <xn:copyright>Copyright © 2020 Telegraph.co.ukk. All rights reserved</xn:copyright>
    <!-- Entity Extractor -->
    <xn:companyCode>ACORN:A.3601037911#6#60#60</xn:companyCode>
    <xn:companyCode>ACORN:A.2295203068#6#60#60</xn:companyCode>
    <xn:industryCode>IC/fini#6#50#60</xn:industryCode>
    <xn:industryCode>IC/fini.bank#6#60#60</xn:industryCode>
    <xn:industryCode>IC/fini.invs#6#60#60</xn:industryCode>
    <xn:industryCode>IC/fini.secr#6#60#60</xn:industryCode>
    <xn:industryCode>IC/svcs#6#50#60</xn:industryCode>
    <xn:industryCode>IC/svcs.prof#6#60#60</xn:industryCode>
    <xn:locationCode>LB/car#7#70#49</xn:locationCode>
    <xn:locationCode>LR/car#9#70#90</xn:locationCode>
    <xn:locationCode>LU/car#9#70#90</xn:locationCode>
    <xn:locationCode>LU/car.any#7#49#70</xn:locationCode>
    <xn:subjectCode>NZ/COID#6#50#60</xn:subjectCode>
    <xn:subjectCode>NZ/COID.1475554280#6#60#60</xn:subjectCode>
    <xn:subjectCode>NZ/COID.27088#6#60#60</xn:subjectCode>
    <xn:subjectCode>NZ/COID.5838940#6#60#60</xn:subjectCode>
    <!-- Classifier -->
    <xn:subjectCode>IS/lifesoc.privair#5#50#50</xn:subjectCode>
    <xn:subjectCode>MC/HOT#6</xn:subjectCode>
    <xn:subjectCode>NC/67115358#9#98#50</xn:subjectCode>
    <xn:subjectCode>NC/67115586#5#55#50</xn:subjectCode>
    <xn:subjectCode>NC/67119129#5#58#50</xn:subjectCode>
    <xn:subjectCode>NC/67119169#5#50#50</xn:subjectCode>
    <xn:vendorData>AMX:Special Code=PT/updated</xn:vendorData>
    <xn:subjectCode>XC/any#6#50#60</xn:subjectCode>
    <xn:subjectCode>XC/any.company#6#60#50</xn:subjectCode>
    <xn:subjectCode>XC/Private#6#60#50</xn:subjectCode>
    <!-- Rules -->
    <xn:subjectCode>MC/BIZREL#1</xn:subjectCode>
    <xn:subjectCode>NE/BAYERINS#5#58#50</xn:subjectCode>
    <xn:subjectCode>NE/GEOAMER#9#70#90</xn:subjectCode>
    <xn:subjectCode>NE/GEOCARIB#9#70#90</xn:subjectCode>
    <xn:industryCode>NI/Banks#6#60#60</xn:industryCode>
    <xn:industryCode>NI/Finance#6#60#60</xn:industryCode>
    <xn:industryCode>NI/Securities#6#60#60</xn:industryCode>
    <xn:industryCode>NI/Services#6#60#60</xn:industryCode>
    <xn:vendorData>AMX:Special Code=TL/americas#7#70#50</xn:vendorData>
    <xn:vendorData>AMX:Special Code=TL/LOC#7#50#70</xn:vendorData>
    <xn:vendorData>AMX:Special Code=TT/TOPIC#5#50#50</xn:vendorData>
    <xn:vendorData>AMX:Special Code=TT/transport#5#50#50</xn:vendorData>
    <xn:language>en</xn:language>
</xn:Resource>
</document>

Nosso processamento precisa analisar esses documentos, então estamos tentando normalizar vários atributos de metadados para várias tabelas e colunas.

Apenas analisando xml desconhecido, presumo que o Sql Server tenha que começar com uma tabela de nomes em branco para cada documento analisado; Achei que uma coluna xml digitada começa com um vocabulário conhecido e deve ser mais rápida. Além disso, a esperança era que o xquery também fosse mais rápido.

Aqui está um exemplo das consultas que fazemos no processamento:

;WITH XMLNAMESPACES ('http://www.xmlnews.org/namespaces/meta#' AS xn)
Insert Into dbo.NewsStory
Select NewsID,provider,service,
    CASE When provider='AMSPIDER' and Service='ACBJ' and PublicationAbbrev='web.site' Then dbo.fnGetSpiderPubAbbrev(PublicationAbbrev_Spider) Else PublicationAbbrev End As PublicationAbbrev,
    Title, PublishDate, AMXReceivedTime, AllowedReleaseTime,ParsedDate,DateLine, Description, [Language], PublishReason, IsAlert, IsHeadLine, IsTemporary, Copyright
    From (
        Select  X.NewsID, 
            replace(RIGHT(RS.c.value('(./xn:vendorData[substring((./text())[1],1,22)="AMX:Special Code=PS/p."]/text())[1]', 'VARCHAR(50)'),8)   , '_', '') as provider, 
            replace(RIGHT(RS.c.value('(./xn:vendorData[substring((./text())[1],1,22)="AMX:Special Code=PS/s."]/text())[1]', 'VARCHAR(50)'),8)   , '_', '') as service,
             CONVERT(NVARCHAR(max),RS.c.query('xn:vendorData'))) as PublicationAbbrev,
            replace(RS.c.value('(./xn:vendorData[substring((./text())[1],1,11)="AMX:Credit="]/text())[1]', 'VARCHAR(200)'),'AMX:Credit=', '')  as PublicationAbbrev_Spider,
            RS.c.value('(./xn:title/text())[1]', 'VARCHAR(200)') AS Title,
      CONVERT(DATETIME,REPLACE(LEFT(RS.c.value('(./xn:publicationTime/text())[1]', 'VARCHAR(50)'),19),'T',' ')) AS PublishDate,
        CONVERT(DATETIME,REPLACE(LEFT(RS.c.value('(./xn:receivedTime/text())[1]', 'VARCHAR(50)'),19),'T',' ')) AS AMXReceivedTime,
        CONVERT(DATETIME,REPLACE(LEFT(RS.c.value('(./xn:releaseTime/text())[1]', 'VARCHAR(50)'),19),'T',' ')) AS AllowedReleaseTime, getdate() as ParsedDate,
        RS.c.value('(./xn:dateline/text())[1]', 'VARCHAR(200)') AS DateLine,
        RS.c.value('(./xn:description/text())[1]', 'VARCHAR(2000)') AS Description,
        RS.c.value('(./xn:language/text())[1]', 'VARCHAR(10)') AS [Language],
        LTRIM(SUBSTRING(RS.c.value('(./xn:vendorData[substring((.)[1],1,19)="AMX:Publish Reason="])[1]','VARCHAR(45)'),20,25)) AS PublishReason,
       CASE LTRIM(SUBSTRING(RS.c.value('(./xn:vendorData[substring((./text())[1],1,10)="AMX:Alert="]/text())[1]','VARCHAR(45)'),11,10)) WHEN 'FALSE' THEN 0 ELSE 1 END AS IsAlert,
       CASE LTRIM(SUBSTRING(RS.c.value('(./xn:vendorData[substring((./text())[1],1,18)="AMX:Headline Only="]/text())[1]','VARCHAR(45)'),19,10)) WHEN 'FALSE' THEN 0 ELSE 1 END AS IsHeadLine,
       CASE LTRIM(SUBSTRING(RS.c.value('(./xn:vendorData[substring((./text())[1],1,14)="AMX:Temporary="]/text())[1]','VARCHAR(45)'),15,10)) WHEN 'FALSE' THEN 0 ELSE 1 END AS IsTemporary,
       RS.c.value('(./xn:copyright/text())[1]', 'VARCHAR(1000)')AS Copyright
       From @XmlFileTable X CROSS APPLY AMXFile.nodes('/document/xn:Resource') RS(c)
    ) A

A coleção de esquema vem da fonte NITF ( https://www.iptc.org/std/NITF/3.6/specification/nitf-3-6.xsd ) e do xmlnews dtd ( http://www.xmlnews.org/ dtds/xmlnews-meta-dtd.zip ).

Eu usei o Visual Studio para converter o xmlnews dtd em um esquema e usei isso para propagar NitfSchemaCollection.

Então eu ajustei o esquema NITF para

  • remova o include (aparentemente um pequeno subconjunto para Ruby que eu não precisava)

  • adicionado ao cabeçalho

     ... xmlns:xn="http://www.xmlnews.org/namespaces/meta#">
    

    <import namespace="http://www.xmlnews.org/namespaces/meta#" />

  • adicionou um elemento de documento logo acima da declaração do elemento nitf , para corresponder ao que o fornecedor está enviando para nós. por exemplo

    <element name="document"> <complexType> <sequence> <element ref="nitf:nitf" minOccurs="1" maxOccurs="1" /> <element ref="xn:Resource" minOccurs="1" maxOccurs ="1" /> </sequência> </complexType> </element>

Cada documento tem apenas 1 nó nitf e 1 nó xn:Resource , mas pode haver muitas instâncias de nós filho em xn:Resource.

sql-server xml
  • 1 respostas
  • 122 Views
Martin Hope
user1664043
Asked: 2020-05-16 09:44:44 +0800 CST

A saída do SSRS para a assinatura do arquivo não está funcionando

  • 0

Sou novo no Reporting Services. Temos o SSRS 2017 configurado em uma caixa Windows Server 2019 Standard.

Eu tenho meu relatório todo escrito e testado, mas dado o tamanho da saída, estou tentando a opção de assinatura para gravar a saída em um arquivo local, mas até agora não encontrei nada além de problemas.

Estou tentando gravar em \\localhost\ReportOutput como um compartilhamento. Concedi controle total sobre essa pasta para todas as contas que tentei usar.

Primeiro problema - sempre que tentei a opção * Use as seguintes credenciais de usuário do Windows, posso digitar os creds, mas quando clico em Aplicar, ele deixa a senha em branco. Quando reedito a assinatura, recebo avisos/erros de que esses campos não podem ficar em branco. O nome de usuário não está em branco (embora receba o aviso de qualquer maneira); a senha está em branco.

Segundo problema - não importa quais creds eu insira, recebo "As permissões concedidas ao usuário '' são insuficientes para realizar esta operação". como um erro quando o relatório é executado. '' não está tentando esconder meus créditos - isso é realmente o que o erro diz.

Terceiro problema - tentei configurar a conta de compartilhamento de arquivos de configurações de assinatura em todo o sistema e configurar a assinatura para usá-la. Quando executo o relatório, recebo o mesmo erro de "permissões concedidas" acima. Eu tentei usar usuários de domínio e locais nesta configuração.

Quando olho para o arquivo de log, vejo essas mensagens de erro consistentemente antes do erro de privs insuficientes:

Reporting Services account may not possess permission to perform authentication checks.
Check the Windows Authz documentation for more information and details on diagnosing issues.

Eu pesquisei muito tentando encontrar o que fazer sobre isso, mas a maioria dos resultados associa isso a falhas de entrega de e-mail (o que não estamos tendo) e algumas das sugestões (como conceder a um usuário 100% de privs de leitura no controlador de domínio) são coisas que não tenho a capacidade de usar.

Alguém mais teve tantos problemas com o SSRS emitindo resultados para um arquivo?

Obrigado

ssrs ssrs-2016
  • 1 respostas
  • 1436 Views
Martin Hope
user1664043
Asked: 2020-04-17 09:45:51 +0800 CST

Erro de truncamento ao criar índice clusterizado na exibição vinculada ao esquema

  • 1

Eu estava apenas criando uma exibição vinculada ao esquema na qual queria colocar um índice (para experimentar algumas variações de colunas computadas).

Criei a view WITH SCHEMABINDING, então tive que criar um índice clusterizado antes de poder criar meus outros não clusterizados.

A tabela subjacente tem uma coluna de chave primária INT, então eu faria o índice clusterizado da exibição com base nisso. Então eu corri

Create UNIQUE CLUSTERED INDEX [cix_viewEvents_EventID] ON [dbo].[viewEvents] (EventID)

Para minha surpresa, após 4-5 minutos, recebi um

Msg 8152, string or binary data would be truncated

erro.

A única coluna no índice é um int; o que poderia estar ficando truncado?

Não encontrei nada relevante no google.

EDITAR:

A tabela original é assim,

CREATE TABLE [dbo].[Events](
[EventID] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
[EventTitle] [varchar](max) NOT NULL,
[EventContent] [varchar](max) NULL,
[EventDate] [datetime] NOT NULL,
CONSTRAINT [PK_Events] PRIMARY KEY CLUSTERED 
(
[EventID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, 
ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

enquanto a visão que eu criei ficou assim

CREATE VIEW dbo.viewEvents
WITH SCHEMABINDING
AS
SELECT EventID, EventTitle, 
EventContent, EventDate, HASHBYTES('SHA1', EventContent) as ContentHash, HASHBYTES('SHA1', 
EventTitle) as TitleHash
from dbo.Events;

Eu esperava acelerar as comparações no título e no conteúdo tendo hashes para comparar em vez de grandes bolhas de texto.

Em vez de adicionar as colunas computadas diretamente à tabela, pensei em tentar primeiro a exibição vinculada ao esquema, mas encontrei o "você precisa de um índice clusterizado na exibição antes de criar índices não clusterizados". Então tentei criar um índice clusterizado, conforme observado acima.

Estamos falando de um int em ambos os lugares, mas criando o índice clusterizado nas bombas de exibição com um erro de truncamento, o que não parece fazer sentido.

sql-server sql-server-2008
  • 1 respostas
  • 85 Views
Martin Hope
user1664043
Asked: 2019-07-20 13:17:10 +0800 CST

Servidor SQL, alterando a coluna para um tamanho menor

  • 3

Estou fazendo um projeto que adiciona algumas colunas a uma tabela bastante mal projetada e notei que há muito espaço desperdiçado.

Eu vejo muitos posts sobre como adicionar colunas no final sendo relativamente rápido e barato (por razões que não entendo muito bem - os links de acompanhamento estavam quebrados), e vejo muitos posts sobre o quão caro é crescer colunas, e como basicamente se resume a "criar uma nova tabela e copiar todos os dados antigos para ela" (na verdade, o ssms faz isso com o Gerar script, independentemente da alteração que você fizer).

Estou curioso sobre uma preocupação mais de nicho, eu acho - alterar colunas para tamanhos de dados menores e como fazer isso com eficiência.

Especificamente, esta tabela tem várias colunas de data e hora que realmente querem apenas a data. Na verdade, o sql está fazendo toda a aritmética de data para tirar o tempo de GETDATE(). Eu quero

ALTER TABLE Foo ALTER COLUMN BAR DATE NULL

Mas não quero incorrer em todas as despesas de criar uma tabela temporária e reescrever os dados antigos (se puder evitar).

Parece que todos os dados antigos estariam bem, apenas menores.

E espero que liberar esse espaço no bloco torne os novos requisitos que tenho para adicionar menos onerosos (mas obviamente não entendo os detalhes internos profundos da alocação de linhas).

Então, que tal ir para tipos menores de tamanho fixo com uma instrução ALTER? Isso vai ficar bem e não explodir o log?

Obrigado

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