AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-168667

user1664043's questions

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

与 PATINDEX 相比,表格非常小

  • 7

我知道这涉及到一些细节,但我正在实现一些处理多语言信息的操作。

在大约 1.9 亿行的原始摄取表上,我想捕获供应商发送给我们的所有内容,但我只应该传递一小部分已批准语言的行。

最初,该列表仅有英语,但现在他们希望扩大“批准”语言的列表。

所以我有很多地方的处理步骤是

WHERE lang_code = 'en'

需要进行调整。

我想到了一些实现方法

  1. 在例行处理供稿时,表格变量非常小,其中包含 2-3 行“已批准”代码。
  2. 非常小的永久表格,可容纳 2-3 行已批准的代码。
  3. PATINDEX 转换为经过批准的代码的逗号分隔字符串(例如 WHERE PATINDEX('%,'+lang_code+',%', ',en,de,pl,') > 0)

这个名单可能会增加到 5 或 6 个,但不太可能超过 10 个。

对于这种非常短的列表,我想知道人们可能会在哪里看到表格实现和“在这个短字符串中”的实现之间的界限。

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

使用列集来规范行,处理所有空值?

  • 5

我想先说一句,我知道这很疯狂。

我继承了一个必须维护的应用程序,该应用程序来自某个人,该人将6组列反规范化为一行(例如一些核心列,如 ID、00_c1、00_c2、00_c3、01_c1、01_c2、01_c3、02_c1、02_c2、02_c3 等)。

然后,他想重新规范化这些列集,以便从行中创建 json 对象。

在最初的实现中,他编写了一个重新规范化的视图,使用了 6 个 UNION ALL

例如

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

他的 JSON 化查询查找 ID 上的行,然后使用 FOR JSON PATH 连接到 ID 上的视图。

它非常低效,所以我试图用 CROSS APPLY (VALUES ()) 代替规范化

它起作用了,并且效率更高,但是在 VALUES 实现中我得到了一个奇怪的问题,其中一组中的所有列都为空,并且我得到了一个空的 json 对象。

换句话说,并非所有行都包含所有 6 组列。有些可能有 3 组,有些有 4 组,等等,并且 (05_c1、05_c2、05_c3) 列将全部为空。该行的结果 json 仅显示为 {}

有没有什么方法(使用 FOR JSON 或 VALUES)可以忽略所有值为空的行?

或者唯一真正的解决方案是通过适当的规范化来重新实现整个事物?

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

CLR 1 行表值函数还是用户定义类型?

  • 5

我正在使用网络蜘蛛数据的数据库,并尝试通过 CLR 利用 C# Uri 类来帮助进行流量分析。

我的第一步是创建一个 CLR 表值函数(仅返回 1 行)并 CROSS APPLY 将 URL 分解为组件部分以供审查,但我发现添加 CROSS APPLY 确实会减慢查询速度(例如,对数据库使用 LIKE 进行查询可能需要 5-8 分钟,但 CROSS APPLY 和查看主机值需要 45 分钟)

我想知道将 Uri 接口实现为用户定义类型并将其用于查询是否会更快?我没有做过很多用户定义类型,但我认为知道只有一个响应对象可能会减轻 Sql Server 中的一些开销。UDT 在查询中的表现会更好吗?

我的 tvf 实现目前如下所示:

    [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 个回答
  • 52 Views
Martin Hope
user1664043
Asked: 2024-07-11 21:59:26 +0800 CST

Sql Agent 作业、执行上下文、运行方式问题

  • 5

我们使用的是 Sql Server 2019。

我们有一大堆 Sql Agent 作业,默认情况下它们都归 sa 拥有。

公司安全团队发布命令,出于安全原因所有 sa 帐户都将被禁用,这让我有点陷入困境。

我们有一个SQL Agent 作业开始失败。当它失败时,它会出现错误

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

我想,好吧,这很有道理;我们禁用了该帐户。所以我尝试了几种方法来解决它。

  1. 将所有权更改为其他帐户。我尝试了很多次,但它们都是特权帐户,但我仍然不断收到相同的错误。我在论坛上找到一篇帖子,说 Sql Server 将默认任何特权帐户以 sa 身份运行。

  2. 我尝试在作业步骤的“高级”部分更改“以用户身份运行”。这将错误更改为

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

    然后我发现我无法取消设置任务定义上的该属性 - 我只能改变它指向的对象,这让我回到“sa 已被禁用”

  3. 然后我意识到我们有很多由sa 拥有的代理作业,但只有这一个失败了。我看不出配置差异可以解释为什么这一个失败,而其他由 sa 拥有的 10-20 个没有失败。我们没有设置代理,通常也没有尝试在任何地方更改运行方式。

任何指点都将不胜感激。

谢谢

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

SSIS 检测顺序重复

  • 0

SSIS/Sql 服务器/Visual Studio 2019。

我有一个很大的 csv 文件,里面有很多不确定的数据。我想做的一件事是至少尝试识别相同的连续行并将重复的行剔除。通过“相同”,我想检查 2 个特定的列值 - 名称和公司。

我有一个看起来应该可以工作的流程(鉴于这是我的第一个 SSIS 包和有限的经验),但没有捕捉到顺序重复。我不知道这是否是因为我没有理解条件拆分表达式语法、脚本组件的工作方式,或者包变量更改应该何时/如何从脚本组件生效。没有人抛出错误,但是文件中连续重复的行不会被发送到“拒绝”滑槽。

我创建了两个包变量(lastName 和 lastCompany),初始化为“”。

该流程有一个平面文件源读入,然后是一个条件拆分,其中包括表达式中的其他子句,

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

这个想法是任何匹配所有子句的东西都将进入“成功”路径,而未通过任何这些检查的行将进入“拒绝”流程。

“成功”流程的下一件事是脚本组件,它执行一些数据规范化并(至少尝试)更新包变量。我为模板找到了另一篇文章。

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;
}

我错过了什么

  1. 包变量的持久性和脚本组件的更新?
  2. 条件拆分表达式行为?

我的意思是,它看起来应该对我有用,但事实并非如此。

谢谢

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

Sql Server 2019,迁移 clr 程序集,clr 严格安全

  • 1

我们在 Sql Server 2008 服务器上运行了一些旧代码,我们正在寻求升级到 Sql Server 2019。旧的 clr 代码真的很旧(比如 .net framework 2.0 old),所以我知道我必须重建新服务器的程序集。我们从旧系统备份/恢复到新系统,虽然所有程序集都在那里,但它们在执行时会抛出错误。

我遇到了“CLR strict security”帖子,并且“使用 SAFE 或 EXTERNAL_ACCESS 选项为程序集 XXX 创建或更改程序集失败,因为 sp_configure 的 'clr strict security' 选项设置为 1。Microsoft 建议您使用证书...”消息。

我从第一个数据库中的第一个程序集开始。我将框架更改为 4.6.1 并签名。我首先尝试了 ALTER ASSEMBLY,它说由于签名差异而无法更改。所以我删除了对该程序集的所有引用,然后删除了该程序集,并使用新代码进行了 CREATE ASSEMBLY。它奏效了。也许它不应该,但它做到了。

所以我开始在下一个数据库中的下一个程序集中苦苦挣扎。做了同样的过程(更新框架、签名、重建、删除所有引用、删除程序集、创建程序集)。只有下一次我得到“使用 SAFE 或 EXTERNAL_ACCESS 选项为程序集 XXX 创建或更改程序集失败,因为 sp_configure 的 'clr strict security' 选项设置为 1。Microsoft 建议您使用证书对程序集进行签名......”信息。

我跑了

sp_configure

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

在两个数据库中。两者都将“clr strict security”run_value 显示为 1,两者都在trusted_assemblies 中不显示任何条目。

我意识到我的“只是签署程序集”的理解还不够,但我很困惑为什么该方法在第一个数据库上有效而在第二个数据库中失败。

我为每个程序集生成了新的 snk 文件,并且我没有将任何登录名与它们相关联。

“只是签署程序集”是如何在第一次尝试而不是在第二次尝试中工作的?

在第一个数据库中,在 sys.assemblies 的输出下,我在程序集上看到了新构建的公钥令牌,我在 permission_set_desc 和新的安装日期中看到了 SAFE_ACCESS,但我不知道为什么这样就足够了第一个分贝而不是第二个分贝。

谢谢

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

混合 ;WITH NAMESPACES 和模式集合?

  • 3

我从供应商处获取这些 xml 文件,它是 NITF(新闻)模式和http://www.xmlnews.org/namespaces/meta#新闻元数据模式(来自 Space 1999!)的包装器

不幸的是,它们根本没有在外部文档上声明任何命名空间。这是他们给我们的:

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

我试图查看是否可以通过创建 xml 模式集合并对其进行解析来提高吞吐量,但是 xml 文本中缺少任何命名空间声明让我感到困惑。

我试过把

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

但它不喜欢它(XML Validation: Declaration not found for element 'document' exception)。

我什至尝试使用 ;WITH XMLNAMESPACES 将原始 xml 解析为 XML 类型,然后将其转换为 XML(NitfSchemaCollection),但同样的问题。

所以我的问题是:

  1. 除了重写来自供应商的传入 xml 文档之外,有什么方法可以将 xml 模式集合应用于解析?

和

  1. 解析类型会产生足够的性能增强以使其进一步追求吗?

我们目前使用的是 Sql Server 2008 sp4,但如果这可能会改变某些东西,我可以在更新的实例上尝试它。

编辑:这是一个示例文档。nitf和xn:Resource节点都符合两个非常古老的新闻专线服务序列化标准。对于我的模式集合,我添加了两者,并调整了 nitf 以添加非标准的文档节点。该架构对于帖子来说很长,但如果有人感兴趣,我可以添加它们。

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

我们的处理必须解析这些文档,然后我们尝试将一些元数据属性标准化为各种表和列。

只是解析未知的 xml,我认为 Sql Server 必须为每个解析的文档从一个空白名称表开始;我认为键入的 xml 列以已知词汇表开头,应该更快。另外希望 xquery 也会更快。

以下是我们在处理过程中执行的查询示例:

;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

架构集合来自 NITF 源 ( https://www.iptc.org/std/NITF/3.6/specification/nitf-3-6.xsd ) 和 xmlnews dtd ( http://www.xmlnews.org/ dtds/xmlnews-meta-dtd.zip )。

我使用 Visual Studio 将 xmlnews dtd 转换为模式并使用它来播种 NitfSchemaCollection。

然后我将 NITF 模式调整为

  • 删除包含(显然是我不需要的 Ruby 的一个小子集)

  • 添加到标题

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

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

  • 在nitf元素声明上方添加了一个文档元素,以匹配供应商发送给我们的内容。例如

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

每个文档只有 1 个nitf节点和 1 个xn:Resource节点,但 xn:Resource 下的子节点可以有很多实例。

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

SSRS 输出到文件订阅不起作用

  • 0

我是 Reporting Services 的新手。我们在 Windows Server 2019 Standard 机器上设置了 SSRS 2017。

我已经编写并测试了我的报告,但考虑到输出的大小,我正在尝试订阅选项将输出写入本地文件,但到目前为止,我只遇到了问题。

我正在尝试写入 \\localhost\ReportOutput 作为共享。我已将对该文件夹的完全控制权授予我尝试使用的所有帐户。

第一个问题 - 每当我尝试 * 使用以下 Windows 用户凭据选项时,我都可以输入凭据,但是当我单击应用时,它会清除密码。当我重新编辑订阅时,我收到警告/错误,这些字段不能为空。用户名不是空白的(尽管它还是会收到警告);密码为空。

第二个问题 - 无论我输入什么凭据,我都会得到“授予用户''的权限不足以执行此操作。” 作为报告运行时的错误。'' 并没有试图隐藏我的信誉 - 这就是错误所说的。

第三个问题 - 我尝试配置系统范围的订阅设置文件共享帐户并配置订阅以使用它。当我运行报告时,我得到与上面相同的“授予权限”错误。我已尝试在此设置中同时使用域用户和本地用户。

当我查看日志文件时,我在权限不足错误之前始终看到这些错误消息:

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

我已经做了很多谷歌搜索,试图找到如何处理它,但大多数结果将它与电子邮件传递失败(我们没有)和一些建议(比如授予用户 100% 读取权限)相关联在域控制器中)是我无法使用的东西。

SSRS将结果输出到文件中是否有其他人遇到过麻烦?

谢谢

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

在模式绑定视图上创建聚集索引时出现截断错误

  • 1

我只是在创建一个模式绑定视图,我想在该视图上放置一个索引(以尝试一些计算列的变体)。

我使用 SCHEMABINDING 创建了视图,然后我必须先创建一个聚集索引,然后才能创建其他非聚集索引。

基础表有一个 INT 主键列,所以我打算基于它来创建视图的聚集索引。所以我跑了

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

令我惊讶的是,4-5 分钟后,我得到了一个

Msg 8152, string or binary data would be truncated

错误。

索引中唯一的列是 int;什么会被截断?

我在谷歌上找不到任何相关的东西。

编辑:

原来的表是这样的,

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]

虽然我创建的视图看起来像这样

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;

我希望通过使用哈希而不是大块文本来加快标题和内容的比较。

与其将计算列直接添加到表中,我想我会先尝试模式绑定视图,但我遇到了“您需要在视图上创建一个聚集索引才能在其上创建非聚集索引”。所以我尝试创建一个聚集索引,如上所述。

我们在两个地方都在谈论一个 int,但是在视图炸弹上创建聚集索引时会出现截断错误,这似乎没有意义。

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

Sql server,将列更改为较小的大小

  • 3

我正在做一个项目,将一些列添加到一个设计相当糟糕的表中,我注意到它有很多浪费的空间。

我看到很多关于在最后添加列相对快速和便宜的帖子(由于我不太明白的原因 - 后续链接已损坏),并且我看到很多关于增长有多昂贵的帖子列,以及它本质上是如何归结为“创建一个新表并将所有旧数据复制到其中”(事实上,无论您进行什么更改,ssms 都会使用 Generate Script 做到这一点)。

我对我猜想的一个更​​小众的问题感到好奇——将列更改为更小的数据大小以及如何有效地做到这一点。

具体来说,该表有多个真正只需要日期的日期时间列。事实上,sql 正在执行所有日期算术以从 GETDATE() 中剥离时间。我想要

ALTER TABLE Foo ALTER COLUMN BAR DATE NULL

但我不想承担创建临时表和重写旧数据的所有费用(如果可以避免的话)。

似乎所有旧数据都可以,只是更小。

而且我希望释放块中的空间将使我必须添加的新要求不那么繁重(但我显然没有得到行分配的深层内部结构)。

那么如何使用 ALTER 语句来处理较小的固定大小类型呢?这样就可以了,不会炸毁日志吗?

谢谢

sql-server
  • 1 个回答
  • 749 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve