我有一XML列包含具有类似结构的数据:
<Root>
<Elements>
<Element Code="1" Value="aaa"></Element>
<Element Code="2" Value="bbb"></Element>
<Element Code="3" Value="ccc"></Element>
</Elements>
</Root>
Run Code Online (Sandbox Code Playgroud)
如何使用 SQL Server 修改数据以将每个Value属性更改为元素?
<Root>
<Elements>
<Element Code="1">
<Value>aaa</Value>
</Element>
<Element Code="2">
<Value>bbb</Value>
</Element>
<Element Code="3">
<Value>ccc</Value>
</Element>
</Elements>
</Root>
Run Code Online (Sandbox Code Playgroud)
更新:
我的 XML 看起来更像这样:
<Root attr1="val1" attr2="val2">
<Elements>
<Element Code="1" Value="aaa" ExtraData="extra" />
<Element Code="2" Value="bbb" ExtraData="extra" />
<Element Code="3" Value="ccc" ExtraData="extra" />
<Element Code="4" Value="" ExtraData="extra" />
<Element Code="5" ExtraData="extra" />
</Elements>
<ExtraData>
<!-- Some XML is here -->
</ExtraData>
</Root> …Run Code Online (Sandbox Code Playgroud) 无论我做什么,我都无法让 SQLCMD 工作。我正在尝试运行一个大小为 200mb+ 的脚本,并且无法从 sql server 应用程序运行,因此我需要通过 SQLCMD 执行此操作,但是每当我尝试登录或运行脚本时,它都会立即关闭。
我已经通过 msdn 关注了 sqlcmd 实用程序。
我试图通过可信命令 SQLCMD -EI get 来打开它:
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Named Pipes Provider: Could not open a connection to SQL Server [2]. .
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : Login timeout expired.
Sqlcmd: Error: Microsoft SQL Server Native Client 11.0 : A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not …Run Code Online (Sandbox Code Playgroud) 为什么我们不能创建大小大于 900 字节的索引?这个问题是在一场没有人回答的演讲中提出的。
我可以想到这个方法来回答这个问题。
页面大小为 8K,可用 8060 900 字节 * 8 = 7200 字节(900*9 = 8100),因此页面中最多只能容纳 8 条记录。如果该索引是非聚集索引,则还需要存储聚集索引键,该索引键可以再次为 900 字节长,即对于单个记录所需的内存为(900 + 900 字节),即每页可以存储 4 条记录。
如果页面中只能存储 4 条记录,与性能提升相比,IO 操作开销将无效,因此索引大小限制为 900 字节。
这似乎是一个非常基本的问题,而且确实应该如此。然而,作为科学方法的粉丝,我喜欢创建一个假设,然后测试它是否正确。在这种情况下,我试图更好地理解 的输出sys.dm_exec_sessions,更具体地说,是单列“读取”。
SQL Server 联机丛书相当干巴巴地将其指定为:
在此会话期间,由此会话中的请求执行的读取数。不可为空。
人们可能会认为这将表示自会话开始以来为满足此会话发出的请求而从磁盘读取的页数。这是我想我要检验的假设。
logical_reads同一个表中的列定义为:
已对会话执行的逻辑读取数。不可为空。
根据使用 SQL Server 的经验,我相信该列反映了从磁盘和内存中读取的页数。换句话说,页面的总数曾经由会话,无论这些页面驻留阅读。具有提供类似信息的两个单独列的区别或价值主张似乎是可以理解从磁盘读取的页面 ( reads) 与从缓冲区缓存 ( logical_reads)读取的特定会话的页面的比率。
在我的测试设备上,我创建了一个新数据库,创建了一个包含已知数据页数的单个表,然后在新会话中读取该表。然后我sys.dm_exec_sessions查看了reads和logical_reads专栏对会议的看法。在这一点上,我对结果感到困惑。也许这里有人可以为我解释一下。
试验台:
USE master;
IF EXISTS (SELECT 1
FROM sys.databases d
WHERE d.name = 'TestReads')
BEGIN
ALTER DATABASE TestReads SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE TestReads;
END
GO
CREATE DATABASE TestReads;
GO
ALTER DATABASE TestReads SET RECOVERY SIMPLE;
BACKUP DATABASE …Run Code Online (Sandbox Code Playgroud) 在我目前正在处理的数据库项目中,要求在某个时间点将“旧”数据更改为只读。这在 SQL Server 中可能吗?
我无法更改表权限,因为只读权限应仅适用于早于某个阈值的数据,即用户仍应能够添加和编辑在此时间点之后添加的数据。
我正在查看一个对 SQL Server 使用高度动态 sql 查询的应用程序。查看以非常奇怪和复杂的方式构建的查询,但这是一个不同的故事,我告诉它是为了给我无法(太愚蠢)自己找出问题的充分理由......我看不到查询用sp_executesql.
但是当我跟踪时,我可以看到很多查询都包含在sp_executesql. 整个应用程序解决方案甚至根本不包含该命令sp_executesql。
所以我想知道是否有一种我还不知道的配置强制软件默认使用 sp_executesql 包装查询?
什么可能导致这种行为?
我有一张桌子和一个索引视图,就像
Create table mytable1 (ID int identity(1,1), Name nvarchar(100))
Create table mytable2 (ID int identity(1,1), Name nvarchar(100))
Create view myview
with schemabinding
as
select a.name, b.name
from mytable1 a
join mytable2 b on a.Id = b.Id
Run Code Online (Sandbox Code Playgroud)
现在,如果我运行以下查询
select a.name, b.name
from mytable1 a
join mytable2 b on a.Id = b.Id
Run Code Online (Sandbox Code Playgroud)
它不使用我的索引视图。是否有任何提示(或其他方式)可以强制 SQL Server 改用索引视图?
我有一个很大的系统,需要优化它。我无法更改所有 SQL 脚本以从视图而不是表中进行选择。我想创建索引视图并强制 SQL Server 从它们而不是表中获取数据。
我使用的是 SQL Server 2014 企业版。
所以我有一个基本的 SQL 代理作业,它运行一个 Robocopy 脚本来将所有文件从一个文件夹移动到另一个文件夹。
有一个非常基本的时间表。
然而它还没有运行。我不是说成功运行,也不是说完全运行。是否有任何原因可能是这种情况?
有关其他信息,我还将编写该作业的脚本。
USE [msdb]
GO
/****** Object: Job [MoveMantisFilesToArchive] Script Date: 12/23/2015 10:21:52 AM ******/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/****** Object: JobCategory [[Uncategorized (Local)]]] Script Date: 12/23/2015 10:21:52 AM ******/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
END
DECLARE @jobId BINARY(16)
EXEC @ReturnCode = …Run Code Online (Sandbox Code Playgroud) 使用第三方工具进行备份有什么好处吗?
我不是特别提到一个,但我想知道是否有人使用它们来访问大于 200 GB 的数据库。服务器主要是 MSSQL 2008R2,标准版和企业版。
我们有一个实例会随机尖峰 CPU。我想创建一个在 CPU 上触发超过 90% 的警报,并自动调用一个正在运行的作业sp_AskBrent并将输出通过电子邮件发送给我。但是,文本或 HTML 输出中的输出不可读。它甚至不适合 Excel 电子表格。如何以可读格式获取信息?
sql-server ×10
backup ×1
dmv ×1
dynamic-sql ×1
format ×1
index ×1
sp-askbrent ×1
xml ×1
xquery ×1