小编use*_*983的帖子

STRING_AGG聚合结果超出8000字节错误限制

我需要按组组合文本。我发现了一个名为 的函数STRING_AGG

select c.id
, c.bereichsname
, STRING_AGG(j.oberbereich,',') oberBereiches 
from stellenangebote_archiv as j
join bereiche as c on j.bereich_id = c.id
group by c.id, c.bereichsname
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

STRING_AGG 聚合结果超出了 8000 字节的限制。使用 LOB 类型以避免结果截断。

sql sql-server string aggregate string-aggregation

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

“编辑前 200 行”不适用于 SQL Server 16.0 - Express Edition

我正在尝试在 SQL Server Express 版本中“编辑前 200 行”,但它返回的是空白文件,如下所示:

显示带有禁用工具的空白文件

我已经在本地安装了这个 SQL Server。我可以选择数据并通过查询更新数据,但无法使用“编辑前 200 行”功能。

我是否缺少某些权限或由于此 SQL Server 版本(包含 Azure)而无法获得某些权限?

我已重新安装 SSMS 并重新启动计算机,但它不起作用。我已经检查了系统管理员的权限。它应该可以工作,这样我就可以直接更新行中的数据。

sql-server ssms ssms-18 sql-server-2022

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

是否可以使用“Microsoft SQL Server”docker 容器创建卷?

我在我的 Linux 机器上运行以下命令,并且想要附加一个卷,就像在 Mysql 中一样

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=12345678' -p 1433:1433 -d mcr.microsoft.com/mssql/server:2017-latest
Run Code Online (Sandbox Code Playgroud)

sql-server docker

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

“错误:已知 npm v9.5.0 无法在 Node.js v18.15.0 上运行。” 在 Windows 上使用 nvm

我遇到了“错误:已知 npm v9.5.0 不能在 Node.js v18.15.0 上运行。” 在 Windows 上使用 nvm。

nvm -v
# Running version 1.1.7.
Run Code Online (Sandbox Code Playgroud)

node.js npm nvm

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

没有为 RPC 配置服务器

寻找我的工作经历,我发现以下错误:

06/18/2018 00:00:01,MBS_Lojas_ExportaMR_OutrasLojas,Error,1,WIN-VRT-01\SQL2008,MBS_Lojas_ExportaMR_OutrasLojas,Passo1,,Executed as user: WIN-VRT-01\integracao. Server 'x.y.z' is not configured for RPC. [SQLSTATE 42000] (Error 7411).  The step failed.,01:11:15,16,7411,,,,0
Run Code Online (Sandbox Code Playgroud)

我有这个带有选项 RPC 和 RPC Out 的链接服务器,其值分配为 true。

在工作中我有这个

EXEC master.dbo.sp_serveroption @server=N'x.y.z', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'x.y.z', @optname=N'rpc out', @optvalue=N'true'
Run Code Online (Sandbox Code Playgroud)

我不知道为什么会发生这种情况,并且针对此错误发布的任何解决方案都无法帮助我调试此问题。

sql-server

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

从 JSON SQL 查询中删除反斜杠

我正在使用 SQL Server 查询构建 JSON 对象。我有斜线问题,而且我需要特定格式的数据,如下所述。实际输出中有斜杠。我想从我的输出查询中消除斜线。

    SELECT (SELECT 
         ('{'+'"value":'+ cast(ISNULL(SP.ACCOUNT_TRAFFIC_DEP_LICENSE_NUMBER,'') as varchar) )                       AS TRAFFIC_DEP_LICENSE_NUMBER
        ,(  '{' +'"value":'+cast(ISNULL(SP.NUMBER_OF_VEHICLES   ,'')    as varchar)     )                                   AS NUMBER_OF_VEHICLES
         ,( '{' +'"value":'+cast(ISNULL(SP.ACCOUNT_TRAFFIC_DEP_LICENSE_START_H_DATE,'') as varchar) )                                       AS TRAFFIC_DEP_LICENSE_START_H_DATE
         ,( '{' +'"value":'+cast(ISNULL(SP.ACCOUNT_TRAFFIC_DEP_LICENSE_END_H_DATE   ,'')    as varchar)     )                           AS TRAFFIC_DEP_LICENSE_END_H_DATE
        ,(  '{' +'"value":'+cast(ISNULL(SP.SUSPENSION_BY_MORROR_STATUS,'')  as varchar)         )                                           AS SUSPENSION_BY_MORROR_STATUS
         ,( '{' +'"value":'+cast(ISNULL(SP.SUSPENSION_BY_VIOLATION  ,'')    as varchar)     )                                           AS SUSPENSION_BY_VIOLATION
         ,( '{' +'"value":'+cast(ISNULL(SP.SUSPENSION_BY_PENALTY        ,'')    as varchar)     )                                           AS SUSPENSION_BY_PENALTY
                from [dbo].[TAMM_CAC_ACCOUNTS_STG]  SP 
                where SP.Account_Reference_Number = CAC.Account_Reference_Number
                AND (
                ACCOUNT_TRAFFIC_DEP_LICENSE_NUMBER IS NOT NULL …
Run Code Online (Sandbox Code Playgroud)

sql-server json

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

无法删除 Azure Data Studio 中的数据库,因为它当前正在使用中

我无法在 Azure Data Studio 中删除自定义数据库,因为它们当前正在使用中。

我一直在寻找关闭zap数据库的各种方法,但在 UI 中找不到任何方法。

只有通过重新启动 Azure Data Studio,zap数据库才会处于“自动关闭”状态,这让我可以使用以下方法删除它:

drop database zap;

如何在不重新启动 Azure Data Studio 的情况下关闭与数据库的连接?

打开:

自动关闭:

sql windows sql-server

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

Microsoft SQL Server - “如果存在则更新,或插入”的最佳方式

我一直在四处寻找这个问题的答案,但那里有一些相互矛盾或模棱两可的信息,发现很难找到确定的答案。

我的上下文:我在 node.js 中使用 'mssql' npm 包。我的 SQL 服务器是 Microsoft SQL Server 2014。

我有一条记录,它可能已经存在于表中,也可能不存在——如果存在,我想更新它,否则我想插入它。我不确定最佳 SQL 是什么,或者是否应该在 mssql 中运行某种“事务”。我发现了一些看起来不错的选项,但我不确定其中的任何一个:

选项 1: 如何更新(如果存在或插入)

问题是我什至不确定这是 MSSQL 中的有效语法。不过我确实喜欢它,而且它似乎也支持我喜欢的同时执行多行。

INSERT INTO table (id, user, date, points)
    VALUES (1, 1, '2017-03-03', 25),
           (2, 1, '2017-03-04', 25),
           (3, 2, '2017-03-03', 100),
           (4, 2, '2017-03-04', 150)
    ON DUPLICATE KEY UPDATE points = VALUES(points)
Run Code Online (Sandbox Code Playgroud)

选项 2:

不知道这个有没有问题,只是不确定它是否是最佳的。似乎不支持多个同时行

update test set name='john' where id=3012
IF @@ROWCOUNT=0
   insert into test(name) values('john');
Run Code Online (Sandbox Code Playgroud)

选项 3:合并,https : //dba.stackexchange.com/questions/89696/how-to-insert-or-update-using-single-query

有人说这个有点bug什么的?这显然也支持一次我喜欢的多个。

MERGE dbo.Test WITH …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

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

SQL Server 2019:“Microsoft.ACE.OLEDB.16.0”提供程序未在本地计算机上注册。(系统.数据)

我有一个 SQL Server 实例 2019 64 位和 Microsoft Office 2019 64 位。

当我想使用 SSMS 从 Excel 文件“导入数据”时,根据 Excel 版本,出现以下错误:

  • SQL Server 2019:“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。(系统.数据)
  • SQL Server 2019:“Microsoft.ACE.OLEDB.16.0”提供程序未在本地计算机上注册。(系统.数据)

我尝试安装:

  • Microsoft Access 数据库引擎 2010 可再发行组件
  • Microsoft Access 数据库引擎 2016 可再发行版

虽然在 SSMS 中,我可以看到 2 个提供程序:Microsoft.ACE.OLEDB.12.0 和 Microsoft.ACE.OLEDB.16.0 但没有任何效果。

我已经寻找了很长时间的解决方案,但一无所获。此主题的解决方案不起作用:“Microsoft.ACE.OLEDB.16.0”提供程序未在本地计算机上注册。(系统.数据)

Windows 10 64 位版本:20H2

SQL Server 实例版本:Microsoft SQL Server 2019 (RTM-GDR) (KB4583458) - 15.0.2080.9 (X64) 2020 年 11 月 6 日 16:50:01 版权所有 (C) 2019 Microsoft Corporation Developer Edition(64 位),适用于 Windows 10 Pro 10.0(内部版本 …

sql-server provider excel

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

SQL 组间按行比较

问题

以下是我的数据片段:

Create Table Emps(person VARCHAR(50), started DATE, stopped DATE);

Insert Into Emps Values
('p1','2015-10-10','2016-10-10'),
('p1','2016-10-11','2017-10-11'),
('p1','2017-10-12','2018-10-13'),
('p2','2019-11-13','2019-11-13'),
('p2','2019-11-14','2020-10-14'),
('p3','2020-07-15','2021-08-15'),
('p3','2021-08-16','2022-08-16');
Run Code Online (Sandbox Code Playgroud)

数据库<>小提琴

我想使用 T-SQL 来计算有多少人至少满足一次以下条件- 倍数也应算作 1:

对于一个人来说:

  1. “开始”中的日期之一(例如s1)大于“结束”中的至少一个日期(例如e1
  2. s1e1在同一年,需手动设置 - 例如“2021-01-01”至“2022-01-01”

预期响应示例

如果我将日期范围“2016-01-01”到“2017-01-01”放在 WHERE / HAVING 子句中的某个位置,则输出应该为1,因为只有p1开始日期和结束日期都在 2016 年,其中开始日期大于结束日期:

s1='2016-10-11'e1= '2016-10-10'

为什么我自己不能做这件事

我陷入困境的原因是我不知道如何在组之间进行逐行比较。该问题需要比较人员 ID 内跨列(从末尾开始)跨行的值。

sql t-sql sql-server

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