标签: sql-server

从哪里下载 SQL Server 2019 Express LocalDB 安装程序 MSI

SQL Server 2019 已发布,但我似乎没有可供下载的 LocalDB 版本。有谁知道是否会发布 LocalDB 版本,或者 2017 年是否是最后一个版本?

sql-server installation sql-server-localdb sql-server-2019

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

当构建端为空时,SQL Server 为什么/何时评估内部散列连接的探测端?

设置

DROP TABLE IF EXISTS #EmptyTable, #BigTable

CREATE TABLE #EmptyTable(A int);
CREATE TABLE #BigTable(A int);

INSERT INTO #BigTable
SELECT TOP 10000000 CRYPT_GEN_RANDOM(3)
FROM   sys.all_objects o1,
       sys.all_objects o2,
       sys.all_objects o3;
Run Code Online (Sandbox Code Playgroud)

询问

WITH agg
     AS (SELECT DISTINCT a
         FROM   #BigTable)
SELECT *
FROM   #EmptyTable E
       INNER HASH JOIN agg B
                    ON B.A = E.A;
Run Code Online (Sandbox Code Playgroud)

执行计划

在此处输入图片说明

问题

这是我今天之前没有注意到的现象的简化再现。我对内部散列连接的期望是,如果构建输入为空,则不应执行探测端,因为连接不会返回任何行。上面的示例与此相反,并从表中读取了 1000 万行。这使查询的执行时间增加了 2.196 秒 (99.9%)。

其他观察

  1. 使用OPTION (MAXDOP 1)执行计划从#BigTable. 该ActualExecutions0对哈希连接内所有的运营商。
  2. 对于查询SELECT * FROM #EmptyTable E INNER …

sql-server parallelism execution-plan sql-server-2017

11
推荐指数
1
解决办法
702
查看次数

Dodgy T-SQL 查询执行让我发疯

执行计划SQL Server 2019。这是 xml 计划要点的链接。

您好,我花了很长时间才明白为什么当它找不到包含其中一种状态的记录时,为什么这个查询需要 0.02 秒才能执行。当它找到具有包含状态之一的记录时,它往往要快得多。我猜这是因为一旦找到匹配的 1 行,查询就会停止。

SELECT TOP 1 IDNum,
             FORMAT(Date, 'M/d/yy') AS theDate,
             Status,
             Rate
FROM   theDB
       INNER JOIN DomainTable
               ON theDB.IDNum = DomainTable.IDNum
WHERE  DomainIP = '127.0.0.1'
       AND status IN ( 'Active', 'To ReActivate', 'To Deactivate', 'Deactivate ASAP',
                       'SUSPENDED', 'SUSPENDED X', 'SUSPENDED Y', 'SUSPENDED Z' )
ORDER  BY theDB.IDNum DESC 
Run Code Online (Sandbox Code Playgroud)

(DomainIP属于DomainTable,其他属于DB)

在执行计划中,最大的成本是 TOP N SORT,占 33% 聚集索引搜索占 29% 对 DomainTable 的键查找使用了 29% 在 DomainTable 上搜索 IP 的索引是 9%

我的问题是:

有没有办法让TOP N不那么重?

0.02 …

sql-server t-sql sql-server-2019

11
推荐指数
2
解决办法
3352
查看次数

安装 SQL Server 2019 CU2 后 SQL Server 代理失败

安装 CU2 后,我们的 SQL 服务器代理随机停止工作。如果您通过打开作业活动监视器来检查代理的状态,它会出现一段时间的空白,然后抛出错误:

无法检索此请求的数据。(Microsoft.SqlServer.Management.Sdk.Sfc)

如需帮助,请单击:https : //go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&LinkId=20476

- - - - - - - - - - - - - - - 附加信息:

执行 Transact-SQL 语句或批处理时发生异常。(Microsoft.SqlServer.ConnectionInfo)


当前命令发生严重错误。结果,如果有的话,应该被丢弃。(Microsoft SQL Server,错误:0)

如需帮助,请单击:http : //go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&ProdVer=15.00.4013&EvtSrc=MSSQLServer&EvtID=0&LinkId=20476

任何线索可能导致这种情况?

sql-server sql-server-agent sql-server-2019

11
推荐指数
1
解决办法
2583
查看次数

SQL中的双数字符号##是什么意思?

元后给出了SQL的一个很好的片段

declare @search nvarchar(max) = ##searchfor:string?carefully %listen##
select id [Post Link]
     , score
     , creationdate
     , lastactivitydate
     , closeddate 
     , owneruserid as [User Link]
from posts
where body like concat('%', @search, '%') collate SQL_Latin1_General_CP1_CI_AI
or title like concat('%', @search, '%') collate SQL_Latin1_General_CP1_CI_AI
Run Code Online (Sandbox Code Playgroud)

双数字符号##在那里是什么意思?

我猜这是某种字符串语法,但我什至无法猜测它的关键字。谷歌搜索“SQL中的数字符号##”返回“前缀临时表”,事实并非如此。

sql-server stack-exchange-data-explorer

11
推荐指数
1
解决办法
2877
查看次数

断开数据库用户和 SQL Server 登录名之间的链接

将数据库从一个实例还原到另一个实例时,有时必须将 SQL Server 登录名重新链接到数据库用户。

这通常是通过以下程序之一来实现的。

不推荐使用的 sp_change_users_login 存储过程

use <database>
go
sp_change_users_login 'Update_one', '<datbase_user>', '<sql server login>' 
go
Run Code Online (Sandbox Code Playgroud)

更改用户命令

use <database>
go
ALTER USER [<datbase_user>] WITH LOGIN = [<sql server login>]
go
Run Code Online (Sandbox Code Playgroud)

这些命令会将孤立的数据库用户重新链接到相应的 SQL Server 登录名。

是否可以在不删除 SQL Server 登录名或数据库用户的情况下打破这种关系?

原因

  • 删除数据库用户将删除数据库中的权限。
  • 删除 SQL Server 登录名将删除密码。(散列值;DBA 未知)
  • 我将数据库用户链接到作为Windows 系统帐户的 SQL Server 登录名。

研究

我已经查看了DMVsys.database_principalssys.server_principalsDMV,但它们不可修改。

security sql-server permissions sql-server-2016

11
推荐指数
2
解决办法
838
查看次数

我应该从数据库角色 db_owner 中删除 dbo 吗?

我今天对我的数据库进行了漏洞评估。我找到了 VA2108,它建议我

ALTER ROLE [db_owner] DROP MEMBER [dbo]
Run Code Online (Sandbox Code Playgroud)

但它是任何 SQL 实例的默认设置。

我应该去吗?有什么风险吗?

在此处输入图片说明

谢谢

security sql-server azure-sql-database vulnerability-assessment

11
推荐指数
2
解决办法
1953
查看次数

系统运行状况扩展事件导致的进程利用率不正确?

我最近一直致力于了解存储在系统健康扩展事件事件文件中的数据或指标。

我们正在尝试使用此处提供的系统运行状况来实现性能指标的数据收集

有一些报告提供了从名为的系统运行状况事件收集的 CPU 利用率、其他进程利用率等指标

scheduler_monitor_system_health_ring_buffer_recorded
Run Code Online (Sandbox Code Playgroud)

对于一些繁忙的服务器,我无法理解为什么报告中列为 SQL CPU 利用率的字段“process_utilization”大部分时间都在 100 以上。在高峰时间,它在 120-160 之间变化,因此报告是始终显示 CPU 高于 100,即使当我从服务器活动监视器中检查时,情况并非如此。

我在 Github 中提出了这个问题,但似乎没有修复或回应。

因此,我的问题是

  1. 如何使用记录的系统运行状况环缓冲区获取服务器的 SQL CPU 利用率的准确数字?

  2. 报告还显示根据其报告计算的以下 2 个字段的计数器

  1. 100-System_idle-process_utilization 作为 OtherProcessUtil

  2. 100-system_idle 作为 SystemUtil

这些OtherProcessUtilSystemUtil需要/有什么帮助?

  1. 我也看到内存利用率每次总是显示为 100。这似乎也不正确。有人注意到了吗?

其他工具(如 Idera 和 sentry [我测试过的])不会显示相同服务器的 CPU 使用率超过 100%。我对相同的负载进行了并排比较。

sql-server extended-events sql-server-2012 sql-server-2014 sql-server-2016

10
推荐指数
1
解决办法
484
查看次数

筛选条件未正确应用于聚集列存储索引

使用下面的示例,谓词是相同的,但是顶部语句(正确)返回 0 行,底部语句返回 1 - 即使谓词不匹配:

declare @barcode nchar(22)=N'RECB012ZUKI449M1VBJZ'  
declare @tableId int = null
declare @total decimal(10, 2) = 5.17

SELECT 1
FROM
    [dbo].[transaction] WITH (INDEX([IX_Transaction_TransactionID_PaymentStatus_DeviceID_DateTime_All]))
WHERE
    Barcode = @barcode
    AND StatusID = 1
    AND TableID = @tableID
    AND @total <= Total

SELECT 1
FROM
    [dbo].[transaction] 
WHERE
    Barcode = @barcode
    AND StatusID = 1
    AND TableID = @tableID
    AND @total <= Total
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况?

更多信息:

  • top 语句中的非聚集索引未过滤
  • CheckDB 返回 0 个问题
  • 服务器版本: Microsoft SQL Azure (RTM) - 12.0.2000.8 Dec 19 2018 …

sql-server azure-sql-database columnstore

10
推荐指数
2
解决办法
583
查看次数

使用 WSRM 限制最大 CPU 使用率 SQL SERVER

我有一台运行 SQL Server 实例的物理服务器。

我注意到这个服务器经常以 100% 的 CPU 使用率运行。

我的 IT 团队对此并不满意,并建议我们为操作系统保留 32 个内核中的 2 个。

这很好用,现在最大使用峰值略低于 90%。此外,不再报告来自不同用户的缓慢数据检索。

是否有任何理由不以这种方式使用 WSRM(Windows 系统资源管理器)而不是 SQL 资源调控器?

sql-server windows configuration resource-governor

10
推荐指数
2
解决办法
3046
查看次数