标签: sql-server-2014

坏索引的定义是什么?我们如何决定?我们应该有什么逻辑?

互联网上有查询发现坏索引

虽然他们的逻辑很简单

如果写入计数 > 读取计数 = 坏索引

这是一个示例查询

    SELECT  OBJECT_NAME(s.object_id) AS 'Table Name',
        i.name AS 'Index Name',
        i.index_id,
        user_updates AS 'Total Writes',
        user_seeks + user_scans + user_lookups AS 'Total Reads',
        user_updates - ( user_seeks + user_scans + user_lookups ) AS 'Difference'
FROM    sys.dm_db_index_usage_stats AS s WITH ( NOLOCK )
        INNER JOIN sys.indexes AS i WITH ( NOLOCK ) ON s.object_id = i.object_id
                                                       AND i.index_id = s.index_id
WHERE   OBJECTPROPERTY(s.object_id, 'IsUserTable') = 1
        AND s.database_id = DB_ID()
        AND user_updates > ( user_seeks …
Run Code Online (Sandbox Code Playgroud)

performance sql-server optimization index-tuning sql-server-2014 performance-tuning

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

恢复差异备份错误 - 没有文件准备好前滚

我正在尝试恢复测试数据库的差异备份,但我收到一条错误消息:

在此处输入图片说明

我所做的是创建了一个名为 的测试数据库,"tdb"我在新表中添加了一些数据,将数据库的恢复模型更改为SIMPLE,然后创建了一个FULL Backup.

之后,我将更多数据添加到新表中,并继续制作differential backup.

恢复数据库时,我首先恢复了完整备份,Overwrite existing database (WITH REPLACE)从 SSMS 中选择了正确运行的选项。

然后,当尝试对差异备份文件执行相同操作时,出现上述错误。

我也查看了 Microsoft 文档,并按照那里提到的相同步骤进行了操作,但是我看不出我做错了什么。任何帮助表示赞赏。

sql-server backup restore sql-server-2014

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

用破折号对字母数字值进行排序

我定义了一个名为 Inventory 的表,其中包含一个varchar(45)名为ItemNameCode. 这是表格,包含以下字母数字值。

在此处输入图片说明

我们要按字母数字排序为:

MES40
PT14
PT14-403
PT14-646-649
PT14-646-649
PT15-3-11
PT15-12-42
PT15-12-572-575
PT16-164
PT16-227
PT16-62-71
PT16-136
PT16-137
Run Code Online (Sandbox Code Playgroud)

我尝试了波纹管查询,但没有得到确切的顺序:

SELECT ItemNameCode
FROM Inventory
ORDER BY LEFT(ItemNameCode,PATINDEX('%[0-9]%',ItemNameCode)-1)
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2 sql-server-2014

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

如何将数据库架构从 SQL Server Management Studio 导出到 Excel?

作为 Web 迁移过程的一部分,供应商要求我们提供没有数据记录的数据库模式(出于保密目的)。他们想要一个包含每个数据库表的 MS Excel 文件。我对使用数据库完全陌生。在 SQL Server 2014 Management Studio 中是否有一种简单的方法可以做到这一点?

sql-server ssms excel sql-server-2014

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

SQL Server 版本决定的要素

我们将在新硬件/VM 上创建新的 Sql-Servers,并考虑使用哪个 Sql-Server 版本。我们实际上使用的是 Sql Server 2008 R2。我们已经完成了一个项目,用于测试 2008 年和 2014 年之间的所有兼容性问题 - 并修复了应用程序代码以及数据库架构中的所有问题,为 2014 年做好准备。

现在简单地忽略 2014 并直接进入 2016 的问题出现了。我们不确定。

我已经运行了 SQL 2016 升级顾问 - 它说“准备升级(2016)”并针对已弃用的 ntext、text 和 image 列提出了大约 500 条警告。

  • 到 2016 年而不是 2014 年有什么特别的额外缺点吗?
  • 是否有新的兼容性问题?AFAIKS 2016 年没有新的弃用尚未取代 2014 年......
  • 我们需要考虑什么?

sql-server upgrade sql-server-2014 sql-server-2016

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

使用 BETWEEN join -eager spool 解决性能问题

执行此查询(匿名)大约需要 2 分钟。

SELECT  
    ly.Col1 
    ,sr.Col2
    ,sr.Col3
    ,sr.Col4
INTO TempDb..TempLYT
FROM Tempdb..T1 ly
JOIN TempDb..T2 sr on sr.[DateTimeCol] BETWEEN ly.DateTimeStart and ly.DateTimeEnd
WHERE sr.Col5 = 1 OR sr.Col5 = 2
Run Code Online (Sandbox Code Playgroud)

查询计划

是否有一些替代方案可以帮助解决此查询?

应用 Paul White 建议的索引后,查询计划如下所示:

优化的查询计划

performance sql-server sql-server-2014 query-performance

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

将数据库附加到 SQL Server 2016,现在无法在 SQL Server 2014 中使用

我有一个 SQL Server 2014 数据库(在便携式硬盘上),我必须使用正常的附加方法将它附加到 SQL Server 2016 机器上。

但是,由于将它附加到该计算机,即使我没有更改兼容性级别或其他任何内容,它也不再适用于 SQL Server 2014 计算机。

我现在卡住了,因为 SQL Server 2016 无法在所有其他计算机上运行的 Windows 7 机器上运行。我只是碰巧将它附加在运行 Windows 10 和 SQL 2016 的笔记本电脑上,认为这不会有问题。

有什么办法可以扭转这种局面吗?我无法从管理工作室的错误屏幕中获得任何好的信息。

sql-server sql-server-2014 sql-server-2016

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

为数据仓库加载禁用约束和索引的脚本

我将数据加载到数据仓库中。

目前,为了方便和速度,我有一个脚本,用于在加载数据之前删除外键约束和索引。有一个大窗口,我可以在其中进行加载,因此我不需要担心用户在加载期间访问数据,但我不想影响数据库中其他表中的无关数据。

我在这里其他地方做了一些研究来提出这个脚本,但我想知道是否有一些我可能会忽略的事情可能会使性能欠佳,或者我可能会遗漏一些重要的东西(我不知道 . .. 计算列什么的?)或者我做事顺序错误等等。

任何建议都值得赞赏,以使其健壮和高性能。

禁用约束和索引

编辑:我删除了WHILE评论者帮助我意识到是多余的循环。

Declare @schema varchar(128) = 'dbo';
Declare @sql nvarchar(max) = N'';

-- 1. Indices
-- Select a list of indexes in the schema and generate statements to disable them.
Select @sql = @sql + 'ALTER INDEX ' + QuoteName(idx.name) + ' ON ' + QuoteName(@schema) + '.' + QuoteName(obj.name) + ' DISABLE;' + CHAR(13)
  From sys.indexes As idx
  Join sys.objects As obj On idx.object_id = obj.object_id …
Run Code Online (Sandbox Code Playgroud)

index data-warehouse sql-server constraint sql-server-2014

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

不重新编译就慢

我的查询在没有OPTION (RECOMPILE). 如果不重新编译,运行需要 3-4 分钟,重新编译需要大约 15-20 秒。

我无法更改查询,我已更新所有统计信息并重建所有索引。只有 1 个索引建议,改进了 9.4%。

我试过了:

-- clear all plans in cache
DBCC FREEPROCCACHE

-- Clear Buffer pool
CHECKPOINT
GO
DBCC DROPCLEANBUFFERS
GO
Run Code Online (Sandbox Code Playgroud)

我还能做什么?我无法编辑查询,所以OPTION (RECOMPILE)对我来说不是一个有效的解决方案。查询可能会不时有所不同,因此“计划指南”不起作用?

请注意,这不是实际查询。实际查询由 Dynamics AX 执行,因此使用api_cursor. 我从 中撬出sp_cursorprepare并手动填写了参数。

DECLARE @p1 AS BIGINT = 5637144576
DECLARE @p2 AS NVARCHAR(32) = N'1003'
DECLARE @p3 AS NVARCHAR(32) = N'posp%'
DECLARE @p4 AS BIGINT = 5637144576
DECLARE @p5 AS NVARCHAR(32) = N'sv'
DECLARE @p6 AS NVARCHAR(32) = …
Run Code Online (Sandbox Code Playgroud)

performance sql-server sql-server-2014 microsoft-dynamics query-performance

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

“等效 ISO 标准”实际上是什么意思?

我正在阅读有关比较运算符的信息。在文档中,比较运算符被 ANY、SOME 或 ALL 修改(强调添加):

引入子查询的比较运算符可以通过关键字 ALL 或 ANY 进行修改。SOME 是 ANY 的等效 ISO 标准。

这是什么意思?

sql-server terminology sql-standard sql-server-2014

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