小编TT.*_*TT.的帖子

从SQL Server中的XML中提取值

我正在尝试编写SQL Server查询以从XML列中选择值.

messagebody(类型XML)的内容如下:

<?xml version="1.0" encoding="utf-16"?>
<GetActivityUnemploymentGenerelEventType xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <ActivityItem xmlns="http://service.bmuuuu/">
        <ActivityCoreItem xmlns="http://service.bmxxxx">
            <ActivityIdentifier xmlns="http://service.bmyyyy">d5ck7132-703c-1234-8099-963b35b24bc5</ActivityIdentifier>
            <StartDate xmlns="http://service.bmaaa">2016-01-25</StartDate>
Run Code Online (Sandbox Code Playgroud)

我正试图指出startdate和的价值ActivityIdentifier.

我试过几个解决方案fx:

SELECT XML.query('messagebody(/GetActivityUnemploymentGenerelEventType/ActivityItem/ActivityCoreItem/ActivityIdentifier)')
FROM table

SELECT messagebody.value('(/GetActivityUnemploymentGenerelEventType/ActivityCoreItem/ActivityIdentifier/Value)[1]', 'int')
FROM table

SELECT messagebody.value('(/GetActivityUnemploymentGenerelEventType//ActivityCoreItem/ActivityIdentifier())[1]', 'nvarchar(max)')
FROM table
Run Code Online (Sandbox Code Playgroud)

查询结果:

找不到列"messagebody"或用户定义的函数或聚合"messagebody.value",或者名称不明确.

有什么建议?

xml sql t-sql sql-server

2
推荐指数
1
解决办法
744
查看次数

Freemarker 使用 TemplateMethodModelEx 相对于 TemplateMethodModel 有什么优势

最近我们升级到 Freemarker 2.3.22。我们在我们的产品中多次实现了 TemplateMethodModel 接口。现在我们收到有关 TemplateMethodModel 已弃用的警告,并考虑使用 TemplateMethodModelEx。

是否有任何特定的事情可以仅使用 TemplateMethodModelEx 完成?

freemarker

2
推荐指数
1
解决办法
967
查看次数

FCB::打开失败:无法打开文件

当我收缩数据库时,机器重新启动,从那时起就SQL Server (MSSQLSERVER)没有启动。阅读博客后,我替换了master.mdfmastlog.ldf用相同的文件替换了模板文件夹中的

但是问题仍然存在,错误日志文件给出以下消息,

Starting up database 'msdb'.
Starting up database 'mssqlsystemresource'.
Error: 17204, Severity: 16, State: 1.
FCB::Open failed: Could not open file E:\sql12_main_t.obj.x86Release\sql\mkmastr\databases\mkmastr.proj\MSDBData.mdf for file number 1.  OS error: 3(The system cannot find the path specified.).
Error: 5120, Severity: 16, State: 101.
Unable to open the physical file "E:\sql12_main_t.obj.x86Release\sql\mkmastr\databases\mkmastr.proj\MSDBData.mdf". Operating system error 3: "3(The system cannot find the path specified.)".
Error: 17207, Severity: 16, State: 1.
FileMgr::StartLogFiles: Operating system error 2(The system …
Run Code Online (Sandbox Code Playgroud)

sql-server database-administration

2
推荐指数
1
解决办法
2万
查看次数

智能感知看不到全局临时表

我在 ssms 中打开一个新查询并创建一个全局临时表。然后我在 ssms 中打开一个新的查询窗口并编写 sql 在字段中插入数据。但在新的查询窗口中,intellisense 无法识别临时表。sql 工作正常,数据被插入到临时表中,我可以使用临时表,但没有智能感知。我可以返回到创建表的原始查询窗口,并且智能感知工作正常。我尝试过刷新智能感知,但不起作用。任何建议将不胜感激。

表代码是

CREATE TABLE ##UserInfo
(

    [UserId] int NOT NULL IDENTITY (1, 1),
    [strEmail] varchar(50)  NULL,
    [strLastName] varchar(50)  NULL,
    [strFirstName] varchar(50)  NULL,

)
Run Code Online (Sandbox Code Playgroud)

插入代码

insert into ##Userinfo(strLastName,strFirstName)

select distinct POC_DATA.POC_LNAME, POC_DATA.POC_FNAME
from POC_DATA
Run Code Online (Sandbox Code Playgroud)

粗体是智能感知在不同查询窗口中无法识别的部分

sql sql-server intellisense

2
推荐指数
1
解决办法
854
查看次数

XML 数据类型方法“query”的参数 1 必须是字符串文字

我在 SQL Server 中有 xml 格式的数据。现在我试图根据我的查询找出单个记录。我把我的代码放在下面,

declare @xml xml
declare @ID varchar
set @ID = '1'
set @xml = '
<row>
    <Id>1</Id>
    <name>OM</name>
</row>
<row>
    <Id>2</Id>
    <name>JAI</name>
</row>
<row>
    <Id>2</Id>
    <name>JAGDISH</name>
</row>
'
Run Code Online (Sandbox Code Playgroud)

当我执行我的查询时,它会给我一个正确的结果(xml 节点):

Select @xml.query('/row[Id="1"]');
Run Code Online (Sandbox Code Playgroud)

但是当我连接 @ID 进行查询时,它给了我一个错误:

Select @xml.query('/row[Id='+ @ID +']');
Run Code Online (Sandbox Code Playgroud)

错误是:

XML 数据类型方法“query”的参数 1 必须是字符串文字。

t-sql sql-server sql-server-2008

2
推荐指数
1
解决办法
1890
查看次数

无法从 S3 恢复 SQL Server bak 文件,称文件太大

我尝试从存储在 S3 存储桶中的 bak 文件到 RDS SQL Server Web 版本运行恢复查询,但不断收到此错误:

[2017-09-13 20:30:22.227] 由于任务失败或并发 RESTORE_DB 请求而中止任务。[2017-09-13 20:30:22.287] 磁盘上没有足够的空间来执行恢复数据库操作。

bak文件有77GB,DB有2TB,为什么还不够呢?

这是来自 AWS 文档的查询:

exec msdb.dbo.rds_restore_database 
        @restore_db_name='database_name', 
        @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';
Run Code Online (Sandbox Code Playgroud)

来源:http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/SQLServer.Procedural.Importing.html#SQLServer.Procedural.Importing.Native.Using

sql-server amazon-rds

2
推荐指数
1
解决办法
5704
查看次数

如何使用命令/脚本检查WildFly Server是否已成功启动?

我想编写一个脚本来管理WildFly的启动和部署,但是现在遇到了麻烦。要检查服务器是否已启动,我找到了以下命令

./jboss-cli.sh -c command=':read-attribute(name=server-state)' | grep running

但是当服务器启动时,由于控制器不可用,因此./jboss-cli.sh -c无法连接并返回错误。

有没有更好的方法来检查WildFly是否已完全启动?

wildfly jboss-eap-7

2
推荐指数
1
解决办法
2852
查看次数

从客户端传递给存储过程的参数数量未知.如何处理?

我想创建一个存储过程,将Archive表中的一些记录插入主表.

我的问题是客户端在他的网格中有多个复选框,他/她可以检查任意数量的复选框.每个复选框代表Archive表中的记录.每条记录都由orderNo.基于orderNo我想创建一个存储过程,从Archive表中获取记录并将其插入主表.

我的问题:如何有效地处理此存储过程中的未知数量的参数?在伪代码中:

create procedure moveRecords(what parameters i should take here)
as 
begin
insert into mainTable(orderNo,date,siteID) select orderNo,date,siteID from 
ArchiveTable where orderNo=<here what i write>
Run Code Online (Sandbox Code Playgroud)

客户端可以发送1个参数,2个,3个,10个,20个参数等我们不知道.类似于以下内容:

exec moveRecords(any no. of parameters)
Run Code Online (Sandbox Code Playgroud)

我提出了如下解决方案:

  1. 通过将所有orderNo(由客户端发送)放入一个temp_Table并从temp_Table我的存储过程中检索这些.
  2. 在服务器端,我们orderNo在数组的基础上采用数组和调用过程.

我正在寻找替代品.

sql sql-server stored-procedures

1
推荐指数
1
解决办法
366
查看次数

在 ROW_NUMBER() 中包含大于 1 的行(包括第一个值)

我需要找到具有相同姓名和出生日期的用户。我还必须包含每个人的客户端 ID,因此我无法COUNT(*)与 group by 一起使用。我ROW_NUMBER()在 CTE 中使用按这三列进行分区。但我需要包含所有多个值,包括where rownumber = 1.

这就是我现在所拥有的:

;WITH 
Rownumbers AS
(
    SELECT 
        [Client code]
        ,Name
        ,Surname
        ,[Date of Birth]
        ,ROW_NUMBER() OVER
            (PARTITION BY 
                name
                ,surname
                ,[DATE of birth]
            ORDER BY 
                [client code]
            )AS [Row Number]

    FROM 
        kyc_details
)

SELECT 
,[client code]
,Name
,Surname
,[DATE of birth]
,[Row Number] 
FROM 
[Rownumbers]
WHERE
[Row Number] > 1
Run Code Online (Sandbox Code Playgroud)

这里的问题是,我需要包括rownumber = 1. 本质上,我需要选择所有具有重复值的列,但客户端代码将是唯一的。

sql t-sql sql-server row-number window-functions

1
推荐指数
1
解决办法
5352
查看次数

SQLCMD、BCP - 存储过程不存在

我正在尝试使用“Hello World”作为概念证明,sqlcmd但我很难:

在此处输入图片说明

命令:

 sqlcmd 'cmd.exe'
Run Code Online (Sandbox Code Playgroud)

错误:

找不到存储过程“sqlcmd”。

我在 BCP 上遇到了类似的问题:

 bcp "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable" 
Run Code Online (Sandbox Code Playgroud)

找不到存储过程“bcp”。

这是一台 SQL Server 2014 机器。这是怎么回事,我该如何解决?

sql-server bcp sqlcmd sql-server-2014

1
推荐指数
1
解决办法
3499
查看次数