标签: sql-server-2016

SQL Server 2016_无法启动镜像

将SQL Server 2014升级到SQL Server 2016(都是企业版)后,我无法启动镜像。

这在 SQL Server 2014 上正常工作。

在使用主数据库的完整备份和日志备份恢复(WITH NORECOVERY)镜像数据库后,我通常会运行configure setup

点击后Start mirror出现此错误:

数据库“DatabaseName”无法打开。它正处于恢复过程中。(微软 SQL Server,错误:927)

sql-server-administration sql-server-2016

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

如何使用 FOR JSON PATH 将包含键/值对的表查询到 JSON 对象中?

我有一个资产表和一个属性表,其中属性是简单的键/值对。

DECLARE @Asset TABLE(AssetID INT)
INSERT @Asset VALUES (1)

DECLARE @Att TABLE (AssetID INT, Name NVARCHAR(100), Val NVARCHAR(100))
INSERT @Att VALUES (1, 'height', '100px'), (1, 'width', '200px')
Run Code Online (Sandbox Code Playgroud)

我想编写一个按资产分组的查询,并包含一个包含所有属性的 JSON 表示形式的列。例如:

AssetID      Attributes
------------ -----------------------------------------------
1            {"height":"100px","width":"200px"}
Run Code Online (Sandbox Code Playgroud)

如何编写查询以使属性名称值成为结果 JSON 对象中的键?当我使用 FOR JSON PATH 时,键是列名称:

AssetID      Attributes
------------ -----------------------------------------------
1            {"height":"100px","width":"200px"}
Run Code Online (Sandbox Code Playgroud)

返回...

AssetID      Attributes
------------ -----------------------------------------------
1            [{"Name":"height","Val":"100px"},{"Name":"width","Val":"200px"}]
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2016

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

SQL 2016 - 将 XML 转换为 Json

我正在尝试使用 SQL2016 中的 FOR JSON PATH 将 XML 列转换为 Json,但遇到一些问题。给定以下 XML(请注意,某些 Product 元素可能包含 Product 列表):

  <Request>
    <SelectedProducts>
      <Product id="D04C01S01" level="1" />
      <Product id="158796" level="1" />
      <Product id="7464" level="2">
        <Product id="115561" level="3" />
      </Product>
      <Product id="907" level="2">
        <Product id="12166" level="3" />
        <Product id="33093" level="3" />
        <Product id="33094" level="3" />
        <Product id="28409" level="3" />
      </Product>
      <Product id="3123" level="2">
        <Product id="38538" level="3" />
        <Product id="37221" level="3" />
      </Product>
    </SelectedProducts>    
  </Request>
Run Code Online (Sandbox Code Playgroud)

我可以在 SQL 上运行以下语句(其中 @xml 是上面的 XML):

SELECT 
     d.value('./@id', 'varchar(50)') AS 'Id'
    ,d.value('./@level', 'int') …
Run Code Online (Sandbox Code Playgroud)

xml t-sql sql-server json sql-server-2016

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

具有多个删除语句的 SQL Server CTE

我有一个 CTE:

;WITH DeleteTarget AS
(
    ....
)
Run Code Online (Sandbox Code Playgroud)

我如何将此 CTE 用于两个删除语句 - 可能像:

DELETE FROM [TableA]
WHERE ColumnA IN (SELECT Id FROM DeleteTarget)

DELETE FROM [TableB]
WHERE ColumnB IN (SELECT Name FROM DeleteTarget)
Run Code Online (Sandbox Code Playgroud)

common-table-expression sql-server-2016

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

两个 SQL Server 层/表的空间相交

我需要在 SQL Server 2016 中的两个空间表之间进行空间交集,每个表中都有一个几何列。我有一段 T-SQL,我从一个表 (tableA) 中获取一组多边形,然后使用每个多边形并对另一个表(表B)执行STIntersects。我生成了一系列与 tableA 中的多边形数量相对应的独立表。这些表具有相同的列。

declare @g geometry

declare @t Cursor 

Set @t = CURSOR FOR select Shape from admin where NAME1 = 'Jefferson'
open @t

FETCH Next FROM @t INTO @g
while @@FETCH_STATUS = 0
BEGIN
    Select * from ANC where ANC.Shape.STIntersects(@g) = 1
    FETCH Next FROM @t INTO @g  
END;
Run Code Online (Sandbox Code Playgroud)

这将返回正确的信息,并为每个相交的多边形提供一个结果表和单独的地图。下一步是将上述各个输出组合到一个输出表中,但我遇到了困难。我尝试了以下方法:

declare @g geometry

declare @t Cursor 

Set @t = CURSOR FOR select Shape from admin where NAME1 = 'Jefferson'

open @t

declare …
Run Code Online (Sandbox Code Playgroud)

sql-server spatial-query sql-server-2016

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

如何在列上添加隐藏属性?

创建时态表时,我们需要定义开始和结束日期时间列,这些列在或hidden中不可见。我想再添加一列,其中包含有关已提交更改的用户的信息。SELECT *INSERT without columns

问题是,我收到以下错误:

Msg 13735, Level 16, State 1, Line 10
Cannot alter HIDDEN attribute on column 'UserID' in table 'GK' because this column is not a generated always column.
Run Code Online (Sandbox Code Playgroud)

这是代码:

DROP TABLE IF EXISTS GK;

CREATE TABLE GK
(
    [ID] INT
   ,[UserID] BIGINT DEFAULT (CONVERT(BIGINT, SESSION_CONTEXT(N'user_id')))  
)

ALTER TABLE GK
ALTER COLUMN [UserID] ADD HIDDEN;
Run Code Online (Sandbox Code Playgroud)

为什么我不允许在此类列上添加此属性?

t-sql sql-server sql-server-2016 temporal-tables

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

ProxyAccount“yyy”的更改失败 (Microsoft.SqlServer.Smo)

我在尝试在 Microsoft SQL Server Management Studio 中编写创建凭据和相关代理的脚本时遇到问题。

我的脚本如下:

CREATE CREDENTIAL xxx WITH IDENTITY = 'domain\xxx', SECRET = '*******';

EXEC msdb.dbo.sp_add_proxy @proxy_name  = 'yyy' 
,@enabled = 1 
,@description = 'description here'
,@credential_name = 'xxx'

EXEC msdb.dbo.sp_grant_proxy_to_subsystem @proxy_name = 'yyy'
,@subsystem_id = 9;
Run Code Online (Sandbox Code Playgroud)

这将创建凭证和代理。

但是,它无法将凭据正确添加到代理。当尝试手动(使用 UI)添加凭据时,我收到以下错误:

ProxyAccount“yyy”(Microsoft.SqlServer.Smo) 的更改失败附加信息:未将对象引用设置为对象的实例。(微软.SqlServer.Smo)

尝试添加凭据

错误信息

我尝试删除凭据并重新添加它,但没有结果。我尝试删除并重新添加代理,但收到以下错误:

未定义代理的凭据名称。(SqlManagerUI)

这可以追溯到无法为该代理分配凭证。

t-sql sql-server sql-agent sql-server-2016

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

SQL Server 2016 中的 STRING_AGG 替换

我想聚合单列值,中间有分隔符并带有一些前缀。下面是尝试过的有效代码。

SELECT concat('TNB/IAG/',STRING_AGG(WF_ValStr, '/')) AS Result
    FROM wfattrdata where wf_id=35262472 and  WF_AttrID in (28,29,30,31,33);
Run Code Online (Sandbox Code Playgroud)

我可以在最新的 MSSql 版本中得到以下预期结果。

TNB/IAG/1/2/3/4/5
Run Code Online (Sandbox Code Playgroud)

如何替换上述查询以使其在 SQL Server 2016 中工作?

t-sql sql-server string-aggregation sql-server-2016

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

为什么默认情况下所有表都不是时态表?

我正在创建一个新数据库并计划使用时态表来记录所有更改。存储的数据每天更新,但每表不超过5000条记录

我有什么理由不应该将所有表设为临时表吗?

诗。我知道时态表的空间使用情况,据我所知,这不是一个问题

sql sql-server-2016

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

#SSMS 内置报告中的错误

在我的本地计算机上,我使用 SQL Server 2016 Management Studio 客户端 (SSMS) 连接到远程计算机上安装的 SQL Server。我使用 Windows 身份验证方法进行连接。

\n\n

安装在我的本地计算机上的 My SQL Server Management Studio 2016 显示安装的以下版本:

\n\n
Microsoft SQL Server Management Studio                      13.0.16100.1\nHerramientas cliente de Microsoft Analysis Services         13.0.1700.441\nMicrosoft Data Access Components (MDAC)                     10.0.17763.1\nMicrosoft MSXML                                             3.0 4.0 5.0 6.0 \nMicrosoft Internet Explorer                                 9.11.17763.0\nMicrosoft .NET Framework                                    4.0.30319.42000\nSistema operativo                                           6.3.17763\n
Run Code Online (Sandbox Code Playgroud)\n\n

远程计算机上安装的SQL Server版本如下:

\n\n

在此输入图像描述

\n\n

当我构建报告时,我会在上面打印很多“#Error”。例如,要构建有关所有被阻止事务的报告,我转到服务器节点 -> 报告 -> 标准报告 -> 活动 \xe2\x80\x93 所有被阻止的事务。它显示“#Error”,请参见下面的屏幕截图(在此屏幕截图中没有阻塞事务):

\n\n

在此输入图像描述

\n

ssms sql-server-2016 ssms-2016

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