将SQL Server 2014升级到SQL Server 2016(都是企业版)后,我无法启动镜像。
这在 SQL Server 2014 上正常工作。
在使用主数据库的完整备份和日志备份恢复(WITH NORECOVERY)镜像数据库后,我通常会运行configure setup。
点击后Start mirror出现此错误:
数据库“DatabaseName”无法打开。它正处于恢复过程中。(微软 SQL Server,错误:927)
我有一个资产表和一个属性表,其中属性是简单的键/值对。
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) 我正在尝试使用 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) 我有一个 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) 我需要在 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) 创建时态表时,我们需要定义开始和结束日期时间列,这些列在或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)
为什么我不允许在此类列上添加此属性?
我在尝试在 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)
这可以追溯到无法为该代理分配凭证。
我想聚合单列值,中间有分隔符并带有一些前缀。下面是尝试过的有效代码。
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 中工作?
我正在创建一个新数据库并计划使用时态表来记录所有更改。存储的数据每天更新,但每表不超过5000条记录
我有什么理由不应该将所有表设为临时表吗?
诗。我知道时态表的空间使用情况,据我所知,这不是一个问题
在我的本地计算机上,我使用 SQL Server 2016 Management Studio 客户端 (SSMS) 连接到远程计算机上安装的 SQL Server。我使用 Windows 身份验证方法进行连接。
\n\n安装在我的本地计算机上的 My SQL Server Management Studio 2016 显示安装的以下版本:
\n\nMicrosoft 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\nRun Code Online (Sandbox Code Playgroud)\n\n远程计算机上安装的SQL Server版本如下:
\n\n\n\n当我构建报告时,我会在上面打印很多“#Error”。例如,要构建有关所有被阻止事务的报告,我转到服务器节点 -> 报告 -> 标准报告 -> 活动 \xe2\x80\x93 所有被阻止的事务。它显示“#Error”,请参见下面的屏幕截图(在此屏幕截图中没有阻塞事务):
\n\n\nsql-server-2016 ×10
sql-server ×6
t-sql ×4
json ×1
sql ×1
sql-agent ×1
ssms ×1
ssms-2016 ×1
xml ×1