Questions tagged «sql-server-2012»

SQL Server 2012(主要版本11.00.xxxx)。还请标记sql-server。

3
在缓冲区缓存中没有足够空间的情况下,SQL Server如何处理查询的数据?
我的问题是,SQL Server如何处理需要将比可用空间更多的数据拉入缓冲区缓存的查询?该查询将包含多个联接,因此结果集在磁盘上已经不存在该格式的结果,因此需要编译结果。但是即使在编译之后,它仍然需要比缓冲区高速缓存中可用空间更多的空间。 我举一个例子。假设您有一个SQL Server实例,总共有6GB的可用缓冲区高速缓存空间。我运行具有多个联接的查询,该联接读取7GB数据,SQL Server如何响应此请求?是否将数据临时存储在tempdb中?它会失败吗?它是否仅执行一次从磁盘读取数据并一次编译段的操作? 此外,如果我尝试返回7GB的总数据会发生什么,这是否会改变SQL Server的处理方式? 我已经知道解决此问题的几种方法,我很好奇SQL Server在按要求运行时如何在内部处理此请求。 另外,我确定此信息存在于某处,但我一直没有找到它。

3
在非持久计算列SQL Server上创建非聚集索引
我正在努力寻找有关SQL Server如何实际存储非持久计算列的任何文档。 请看以下示例: --SCHEMA CREATE TABLE dbo.Invoice ( InvoiceID INT IDENTITY(1, 1) PRIMARY KEY, CustomerID INT FOREIGN KEY REFERENCES dbo.Customer(CustomerID), InvoiceStatus NVARCHAR(50) NOT NULL, InvoiceStatusID AS CASE InvoiceStatus WHEN 'Sent' THEN 1 WHEN 'Complete' THEN 2 WHEN 'Received' THEN 3 END ) GO --INDEX CREATE NONCLUSTERED INDEX IX_Invoice ON Invoice …

4
根据另一列重置运行总计
我正在尝试计算运行总计。但是,当累积总和大于另一个列的值时,应该重置 create table #reset_runn_total ( id int identity(1,1), val int, reset_val int, grp int ) insert into #reset_runn_total values (1,10,1), (8,12,1),(6,14,1),(5,10,1),(6,13,1),(3,11,1),(9,8,1),(10,12,1) SELECT Row_number()OVER(partition BY grp ORDER BY id)AS rn,* INTO #test FROM #reset_runn_total 索引详细信息: CREATE UNIQUE CLUSTERED INDEX ix_load_reset_runn_total ON #test(rn, grp) 样本数据 +----+-----+-----------+-----+ | id | val | reset_val …

2
SQL Server示例统计信息更新在升序键列上错过最高的RANGE_HI_KEY
我正在尝试了解统计信息采样的工作原理,以及以下是否是采样统计信息更新的预期行为。 我们有一个按日期划分的大型表,其中有数十亿行。分区日期是先前的业务日期,因此是升序键。我们仅将前一天的数据加载到该表中。 数据加载会在一夜之间进行,因此在4月8日(星期五),我们加载了7月7日的数据。 每次运行后,我们都会更新统计信息,尽管需要抽样,而不是FULLSCAN。 也许我很天真,但我希望SQL Server能够确定范围内的最高键和最低键,以确保获得准确的范围样本。根据这篇文章: 对于第一个存储桶,下边界是生成直方图的列的最小值。 但是,它没有提及最后一个存储桶/最大值。 由于采样的统计信息是在8日上午更新的,因此该样本未达到表格(第7位)中的最高值。 由于我们对前一天的数据进行了很多查询,因此导致基数估计不准确,并且许多查询超时。 SQL Server是否应该不标识该键的最大值并将其用作最大值RANGE_HI_KEY?还是这仅仅是不使用更新的限制之一FULLSCAN? 版本SQL Server 2012 SP2-CU7。由于OPENQUERYSP3 中行为的变化,即四舍五入到SQL Server和Oracle之间的链接服务器查询中的数字,我们当前无法升级。


3
仅在执行备份时,还原标头的用途是什么?
当我使用以下查询监视备份时: SELECT command, percent_complete, 'elapsed' = total_elapsed_time / 60000.0, 'remaining' = estimated_completion_time / 60000.0 FROM sys.dm_exec_requests WHERE command like 'BACKUP%' or command like 'RESTORE%' 我注意到,在备份之前,SQL Server仅执行备份头,然后执行备份。 我想知道它的用途是什么,以及是否可以以某种方式减少执行时间。它似乎比实际备份需要更长的时间。

4
SQL Server 2012的FIRST()和LAST()版本是什么?
我有一个带value栏的桌子。我要计算最后一行减去第一行,如下所示: id value 1 10 2 45 3 65 4 95 . . . . . . 500 200 我想获得 200 - 10 = 190 我试着然而,在SQL Server 2012中使用下面的命令,LAST并且FIRST不工作。 SELECT LAST(Value) - FIRST(Value) FROM Counter; SQL Server中此命令的语法是什么?

1
无论我尝试什么,都无法使SQLCMD工作
无论我做什么,我都无法使SQLCMD正常工作。我试图运行一个大小为200mb +的脚本,并且无法从sql服务器应用程序运行,因此我需要通过SQLCMD进行此操作,但是,每当我尝试登录或运行该脚本时,它都会立即关闭。 我已经通过msdn跟随了sqlcmd实用程序。 我试图通过可信任的命令SQLCMD -EI getooo它: 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 …

1
sys.dm_exec_sessions中的“读取”列实际上指示什么?
这似乎是一个非常基本的问题,确实应该如此。但是,作为科学方法的忠实拥护者,我喜欢创建一个假设,然后对其进行检验以查看我是否正确。在这种情况下,我试图更好地理解的输出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 …

2
启用S​​QL Server全文索引后更新查询的速度变慢
我有一个asp.net网站,其中有许多针对我的数据库运行的插入,更新和删除查询。 几天前,我在一个表的两列上创建了全文索引。之后,我意识到当网站在该表上运行更新查询时,SQL Server进程的内存和磁盘使用率正在跳跃,更新速度变慢。在创建全文索引之前,查询运行没有任何性能问题。 我还意识到以前非常简单的更新查询现在变得很复杂,因为执行计划现在具有全文索引更新之类的功能。这是新的执行计划的一部分,该计划在启用全文本后变得很复杂: 在更新网站内容的几个小时中,我运行了5000个更新查询,并且我认为每次为每行完成全文索引过程。 我应该在开始更新行时禁用全文本扫描,然后重新启用它(如此相关问题所示)吗? 我可以告诉SQL Server在5分钟内停止全文索引编制,然后开始对新数据编制索引吗? 有更好的选择吗?我正在使用SQL Server 2012。

3
为SQL Server和NUMA配置RAM
偶然的数据库管理员在这里。 题: 即使该服务器的唯一目的仅是为SQL Server数据库引擎提供服务,您是否仍会手动限制SQL Server的最大RAM? 我有Microsoft Windows 2012 R2 Server,SQL Server 2012 Std,32GB RAM。 管理员不断登录到SQL Server,以使用其控制台和所有控制台。 其次,如何检查此Windows服务器是否启用了NUMA?

2
NUMA节点000上的PLE低,001上的高
我正在查看我们SQL Server上NUMA个节点之间的PLE(页面预期寿命),并且发现了一个相当奇怪的发行版。与001相比,NUMA节点000的PLE非常低。我不确定为什么会这样。我已经检查了环境中的其他多个SQL Server,并且其他生产服务器没有此行为。 系统正在具有256GB Ram的Dell m620上运行SQL Server 2012 Enterprise Edition。这是2插槽,6核(启用HT)的计算机。MAXDOP设置为6。AFAIK内存模块均匀地安装在CPU的内存组中 某些信息告诉我,NUMA节点000还有其他要执行的SQL任务,即其他节点,但是我忘记了在哪里听到/看到它。 @@Version 显示:Microsoft SQL Server 2012(SP1)-11.0.3412.0(X64)

2
使用聚簇索引时,是否读取“行外”字段?
我知道VARCHAR(MAX)/NVARCHAR(MAX)使用列时会存储数据out of the row-数据行将具有指向另一个存储“大值”位置的指针。 我有以下问题: 是存储每个字段out of the row还是仅存储一个字段max? 如果您使用clustered index表的读取整个记录,那么是否也读取了行外存储的字段? VARCHAR(MAX)或NVARCHAR(MAX)被视为“大值类型”。大值类型通常存储在“行外”。这意味着...

2
AlwaysOn可用性组自动故障转移不起作用
使用AG设置,我启动了WSFC,并在一个称为DevClusterOnline的可用性组中配置了两个节点。两个节点(主要是DEV-AWEB5,次要是DEV-AWEB6)都运行Windows Server 2008 R2。 如果我检查AG的运行状况,则会得到以下信息: 运行以下查询将返回此结果集: select ar.replica_server_name, availability_group_name = ag.name, ar.availability_mode_desc, ar.failover_mode_desc from sys.availability_replicas ar inner join sys.availability_groups ag on ar.group_id = ag.group_id order by availability_group_name, replica_server_name; 如果断开DEV-AWEB5的连接,则无法连接到组侦听器(DevListener),但可以对其执行ping操作,并且它将响应我的ping操作。副本-DEV-AWEB6进入RESOLVING状态,并且无法访问我的数据库。但是,我可以手动进入Management Studio并将故障转移设置为DEV-AWEB6,然后重新启动并运行,DevListener将再次接受连接。 考虑到这些事实可确认故障转移确实有效,我已同步提交并配置了自动故障转移,因此我不知道安装程序是否出现故障该怎么办。 当我断开DEV-AWEB5的连接时,我希望我的副本将保持连接,因此,DevListener也将保持连接。我希望自动故障转移可以使我透明地连接到AG Listener。从最终用户的角度来看,使用Web系统应该不会注意到其中一台数据库服务器出现故障。 我被困在这里,有人可以启发我做错什么吗?

4
SQL Server 2012复制数据库失败
我想在同一SqlServer中复制数据库。因此,当我使用“复制数据库向导”时,它会引发错误:(我使用测试数据库执行了此步骤,并且工作正常!!!) 配置: 一个用户 方法:“使用SQL管理对象方法” 选择目标数据库的新名称。 错误: 标题:复制数据库向导 作业失败。检查目标服务器上的事件日志以获取详细信息。 - - - - - - - - - - - - - - - 纽扣: 好 在事件日志中: 系统 提供者 [名称] SQLSERVERAGENT 事件ID 208 [资格赛] 16384 3级任务3关键字0x80000000000000 创建时间 [SystemTime] 2014-05-07T06:23:11.000000000Z EventRecordID 123672频道应用程序计算机Server1安全 事件数据 CDW_Server1_Server1_3 0x666DE807F406D7438C65B09171211D7B 失败2014-05-07 10:52:50作业失败。作业由用户sa调用。运行的最后一步是步骤1(CDW_Server1_Server1_3_Step)。 日志文件的最后几行: OnProgress,Server1,NT Service \ SQLSERVERAGENT,Server1_Server1_Transfer …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.