标签: sql-server

CTE 运行多少次

如果我有一个 cte,例如下面的代码。表 People 被查询多少次?我的印象是它只被调用了 1 次并存储在内存中,但我一直在运行的一些查询似乎运行的时间比它们应该的要长得多。这让我相信它可能会击中 People Table 3 次。

with ctegeneric as (select person from people where person = 'dumb')
Select * from ctegeneric 
UNION ALL
Select * from ctegeneric 
UNION ALL
Select * from ctegeneric 
Run Code Online (Sandbox Code Playgroud)

sql-server cte sql-server-2008-r2

8
推荐指数
1
解决办法
5710
查看次数

如何在 Sql Server 中编写统计数据?(使用 T-SQL)

这里有一个非常相似的问题:

为统计创建 SQL 脚本

但这不是我想要的。

我想完全取回我输入的内容。例如:

CREATE STATISTICS [_MM_STATS__745366020_7_1_4_5_2_3] 
ON [dbo].[ProductShipTax]
([TaxRegionId], [ProductShipTaxID], [TaxRate], [ItemNo], [DateFrom], [DateTo])
Run Code Online (Sandbox Code Playgroud)

我想要一个查询,它可以让我获得上面的确切脚本,以便我可以将它应用到不同的数据库。

这可能吗?

sql-server statistics metadata sql-server-2014

8
推荐指数
1
解决办法
9759
查看次数

SSRS 2016 报告门户 - 下拉列表中没有可用的 KPI 选项

有没有办法在 Reporting Services 2016 Web 门户中启用 KPI 选择?

我急切地想尝试这个功能,然后我浪费了 2 个小时寻找它,仍然没有找到它。在大多数示例中,它似乎位于“新建”下拉菜单下。

在此处输入图片说明

我在主页门户页面上,我确实创建了一个数据集和数据源。仍然没有 KPI 选项。我已经远程访问主机服务器,用户在 SSRS 中拥有系统管理员和系统用户权限。

sql-server ssrs sql-server-2016 ssrs-2016

8
推荐指数
1
解决办法
3385
查看次数

为什么 EXEC 语句的 query_hash 为零?

我正在使用扩展事件为 SQL Server 设置监控系统,以便为我们的开发人员查找大量查询作为“生产反馈”。我正在使用事件sp_statement_completedsql_statement_completed,并在 cpu_time、逻辑读取等上使用谓词过滤器。我希望将结果汇总database_namequery_hash喜欢在互联网上的众多示例中展示的结果,但在结果中我看到query_hash所有语句都是 0使用 EXEC,如下表所示(为了便于阅读,缩短了时间戳和查询哈希)。

name                       timestamp      query_hash plan_handle        statement
sql_statement_completed    2016...6414    0          050056019600764... exec Shared.dbo.SyncFirm  
sql_statement_completed    2016...9946    0          06003d00e01e730... exec spSetUserAuth @userid;  
sql_statement_completed    2016...7184    0          0600e30028c9da0... exec spSetUserAuth @userid;  
sp_statement_completed     2016...0409    9826...578 0600c00028e6aa0... SELECT obfuscated_columns FROM dbo.SomeTable
sp_statement_completed     2016...1448    8660...775 060084006d2d660... INSERT INTO dbo.SomeTable ( obfuscated_columns)  EXEC(@sql)
sql_statement_completed    2016...7752    0          0600f9006c23f03... exec spSetUserAuth @userid;  
sql_statement_completed    2016...1443    1304...641 06005a0008a9b11... select SUBQ.ontrackstatus, COUNT(SUBQ.ontrac
Run Code Online (Sandbox Code Playgroud)

所有结果都有其价值,plan_handle而且它们都不同,因此正在制定很多计划。其他没有query_hash(我见过的)语句包括 ALTER …

sql-server extended-events sql-server-2014

8
推荐指数
1
解决办法
490
查看次数

ID 列上的聚集索引的填充因子为 100 是否可以?

所以我在 SQL Server 中的 ID 列(这是一个自动增量列)上有一个带有聚集索引的表。

是否可以将填充因子设为 100,因为数据将始终使用下一个最新 ID 写入?如果此表中的其他列针对现有 ID 进行大量更新,这是否重要?

此外,删除将如何影响表的碎片?

sql-server best-practices clustered-index fill-factor

8
推荐指数
1
解决办法
3795
查看次数

选择从指定值开始直到另一个指定值的行

我有一个包含多列的表,想要检查列值,选择该列值之后的行,直到出现单独的列值。我试过使用BETWEEN,但如果列值是整数,它只查找整数之间的数字。

例如,如果我有一张这样的表:

id 时间值 
t1 12:00 PM 15
t1 12:02 下午 4
t1 12:03PM 7
t1 12:05PM 16
t5 下午 12:10 250
t5 12:15 下午 15
t8 上午 11:00 15
t8 下午 3:00 2
t8 下午 3:05 100
t2 7:00 PM 15
t2 7:01 下午 16
t15 5:00AM 35 

我想获取值 15 和 16 之间的行。基本上,如果我可以按id,然后time,并收集 15 出现后的行,直到在同一id. 如果没有值 16,例如我想要接下来的 100 行,然后搜索下一个值 15。

我希望查询返回这个:

id 时间值 
t1 12:00 PM 15
t1 12:02 下午 4 …

sql-server-2008 sql-server gaps-and-islands

8
推荐指数
1
解决办法
3817
查看次数

自动更新统计信息不更新统计信息

正在使用我的数据库中SQL SERVER 2012有我的Auto Update Stats ON

从下面的链接我了解到,自动更新统计信息将针对SQRT(1000 * Table rows)表行中的每个更改触发。 https://blogs.msdn.microsoft.com/srgolla/2012/09/04/sql-server-statistics-explained/

我创建了一个包含 1000 条记录的表

SELECT TOP 500 Row_number()OVER (ORDER BY (SELECT NULL)) rn,
                name
INTO   stst
FROM   sys.objects 
Run Code Online (Sandbox Code Playgroud)

创建统计信息

CREATE STATISTICS rn  
    ON stst (rn)  

CREATE STATISTICS name  
    ON stst (name)  
Run Code Online (Sandbox Code Playgroud)

检查创建的统计信息

DBCC show_statistics('stst', rn)  -- Rows 500 

DBCC show_statistics('stst', name) -- Rows 500
Run Code Online (Sandbox Code Playgroud)

按照公式

select SQRT(1000 * 500) -- 707.106781186548
Run Code Online (Sandbox Code Playgroud)

因此,如果我707.106781186548在表中添加/修改记录,则应触发自动更新统计信息

1000向我的表中添加更多记录,这应该足以触发auto update stats

INSERT INTO stst(rn,name)
SELECT TOP …
Run Code Online (Sandbox Code Playgroud)

sql-server statistics sql-server-2012

8
推荐指数
1
解决办法
3428
查看次数

SQL Server 2016 标准版是否支持表分区?

我想将我的 SQL Server 2008 企业版升级到 SQL Server 2016 标准版;然而,一个数据库在多个文件组上使用表分区(用于大型日志表,每天是一个分区)

我在SQL Server 2016 的版本和支持的功能中的“RDBMS 可扩展性和性能”一节中看到,它说标准版支持表和索引分区,但支持分区表并行

我不确定我是否完全理解这样做的后果。

就我而言,这究竟意味着什么,它将如何影响数据库的性能?

sql-server partitioning sql-server-2016

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

如何检查数据库主密钥加密是否有效?

我有一个场景,我将数据库从一台服务器恢复到另一台服务器。在源服务器上,数据库主密钥 (DMK) 使用密码和服务主密钥 (SMK) 进行加密。当我去将它恢复到新服务器时,行中sys.key_encryptions仍然说它是由 SMK 加密的。但事实并非如此,因为两台服务器之间的 SMK 不匹配。是否有任何编程方式来验证 DMK 确实使用此服务器的SMK 进行了加密?

sql-server encryption

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

如果列不存在,则向数据库中的所有表添加列

我必须在具有许多(50 多个)表的数据库中实施审计。我希望将用户名和用户将记录更改为所有表的列的时间。但是,有些表已经有了这些列,所以我不需要将这些列添加到所有表中。假设列名是DateTime_Tableand UserName_Table,如果列不存在,我如何向数据库中的所有表添加DateTime_Table columnUserName_Table列?

我看到了 Postgres 的这个循环,但我需要 SQL Server 的帮助。

sql-server audit

8
推荐指数
1
解决办法
9815
查看次数