小编Bre*_*zar的帖子

如何将调试按钮添加到 SSMS v18?

Debug按钮出现在此版本的 SSMS 上: 在此处输入图片说明

但它不存在于版本 18,预览 4: 在此处输入图片说明

我尝试了多种方法将Debug按钮添加到我的 SSMS,但没有成功。

有没有办法将Debug按钮添加到 SSMS v18?

sql-server ssms

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

如何创建 Unicode 参数和变量名称

所有这些都有效:

CREATE DATABASE [¯\_(?)_/¯];
GO
USE [¯\_(?)_/¯];
GO
CREATE SCHEMA [¯\_(?)_/¯];
GO
CREATE TABLE [¯\_(?)_/¯].[¯\_(?)_/¯]([¯\_(?)_/¯] NVARCHAR(20));
GO
CREATE UNIQUE CLUSTERED INDEX [¯\_(?)_/¯] ON [¯\_(?)_/¯].[¯\_(?)_/¯]([¯\_(?)_/¯]);
GO
INSERT INTO [¯\_(?)_/¯].[¯\_(?)_/¯]([¯\_(?)_/¯]) VALUES (N'[¯\_(?)_/¯]');
GO
CREATE VIEW [¯\_(?)_/¯].[vw_¯\_(?)_/¯] AS SELECT [¯\_(?)_/¯] FROM [¯\_(?)_/¯].[¯\_(?)_/¯];
GO
CREATE PROC [¯\_(?)_/¯].[sp_¯\_(?)_/¯] @Shrug NVARCHAR(20) AS SELECT [¯\_(?)_/¯] FROM [¯\_(?)_/¯].[vw_¯\_(?)_/¯] WHERE [¯\_(?)_/¯] = @Shrug;
GO
EXEC [¯\_(?)_/¯].[¯\_(?)_/¯].[sp_¯\_(?)_/¯] @Shrug = N'[¯\_(?)_/¯]';
GO
Run Code Online (Sandbox Code Playgroud)

但是您可能会看到我的意思:我不想要 @Shrug,我想要@¯\_(?)_/¯.

这些都不适用于 2008-2017 的任何版本:

CREATE PROC [¯\_(?)_/¯].[sp_¯\_(?)_/¯] @[¯\_(?)_/¯] NVARCHAR(20) AS SELECT [¯\_(?)_/¯] FROM [¯\_(?)_/¯].[vw_¯\_(?)_/¯] WHERE [¯\_(?)_/¯] …
Run Code Online (Sandbox Code Playgroud)

sql-server stored-procedures t-sql parameter unicode

53
推荐指数
2
解决办法
5505
查看次数

如何在 SQL Server 2017 中使用 SNAPSHOT_MATERIALIZATION 创建视图?

SQL Server 2017 有几个新的存储过程:

  • sp_refresh_single_snapshot_view – @view_name nvarchar(261) 的输入参数,@rgCode int
  • sp_refresh_snapshot_views – @rgCode int 的输入参数

以及 sys.messages 中的新条目:

  • 10149 – 无法在视图 '%.*ls' 上创建具有 SNAPSHOT_MATERIALIZATION 的索引,因为视图定义包含内存优化表。
  • 10642 – 无法为 '%.*ls' 上的索引 '%.*ls' 设置 SNAPSHOT_MATERIALIZATION,因为它仅适用于视图上的索引。
  • 10643 – 无法为 '%.*ls' 上的 '%.*ls' 设置 SNAPSHOT_MATERIALIZATION,因为它仅适用于视图上的聚集索引。
  • 10648 – 无法为 '%.*ls' 上的分区索引 '%.*ls' 设置 SNAPSHOT_MATERIALIZATION。
  • 10649 – 无法在具有 SNAPSHOT_MATERIALIZATION 的聚集索引 '%.*ls' 的 '%.*ls' 上创建非聚集索引 '%.*ls'。
  • 10650 – 刷新快照视图需要在数据库上启用快照隔离。
  • 3760 – 无法删除具有 SNAPSHOT_MATERIALIZATION 的视图 '%.*ls' 上的索引 '%.*ls'。
  • 4524 – 无法更改视图 '%.*ls',因为它具有快照实现。
  • 4525 – 在刷新视图之前无法对具有快照实现的视图 '%ls' 使用提示 '%ls'。 …

sql-server materialized-view sql-server-2017

37
推荐指数
1
解决办法
5293
查看次数

从 DMV 中,您能否判断连接是否使用 ApplicationIntent=ReadOnly?

我设置了一个 Always On Availability Group,我想确保我的用户在他们的连接字符串中使用 ApplicationIntent=ReadOnly。

从 SQL Server 通过 DMV(或扩展事件或其他),我能否判断用户是否在其连接字符串中使用 ApplicationIntent=ReadOnly 进行连接?

请不要回答如何防止连接 - 这不是这个问题的内容。我不能简单地停止连接,因为我们现有的应用程序在没有正确字符串的情况下进行连接,我需要知道它们是哪些,以便我可以与开发人员和用户合作,随着时间的推移逐渐修复它。

假设用户有多个应用程序。例如,Bob 与 SQL Server Management Studio 和 Excel 连接。他需要更新时使用 SSMS,需要读取时使用 Excel。我需要确保他在与 Excel 连接时使用 ApplicationIntent=ReadOnly。(这不是确切的场景,但足以说明。)

sql-server availability-groups

24
推荐指数
3
解决办法
2977
查看次数

如何启用 SQL Server 2019 的结果集缓存?

SQL Server 2019 CTP 2.3 向 sys.databases 添加了一些新列,包括 is_result_set_caching_on:

系统数据库

SQL Server 2019 的新增功能ALTER DATABASE 页面中尚未记录。

我尝试使用与加速数据库恢复相同的语法只是为了笑:

ALTER DATABASE StackOverflow2013 SET RESULT_SET_CACHING ON;
Run Code Online (Sandbox Code Playgroud)

但没有运气:

Msg 5058, Level 16, State 12, Line 8
Option 'RESULT_SET_CACHING' cannot be set in database 'StackOverflow2013'.
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2019

20
推荐指数
2
解决办法
3691
查看次数

为什么 SQL Server 安装程序在此推荐 MAXDOP 8?

我在 AWS i3.16xlarge 上运行 SQL Server 2022 RC1 设置,具有 2 个插槽、2 个 NUMA 节点、每个节点 32 个逻辑处理器、总共 64 个逻辑处理器。

安装程序推荐 MAXDOP 8:

SQL Server 设置和任务管理器

但是,如果您单击该链接来配置 MAXDOP,建议会显示:

MAXDOP 建议

根据那篇知识库文章,MAXDOP 应该是 16,而不是 8。当然,从技术上讲,8 小于 16 - 但 2、4 或 15 也是如此。8 从哪里来?

SQL Server 安装完成且服务启动后,日志显示 SQL Server 自动实施具有 4 个节点的 Soft-NUMA,每个节点有 16 个逻辑处理器:

SQL Server 错误日志

同样,这表明 MAXDOP 应为 16。

这是一个错误,还是我错过了一些明显的事情?是否还有另一个不成文的规则,设置将在 MAXDOP 8 处停止?

sql-server configuration maxdop numa sql-server-2022

16
推荐指数
2
解决办法
2731
查看次数

如何拒绝写入所有 SQL Server 数据库(包括新数据库和恢复数据库)

我想创建一个登录,该登录被拒绝写入任何数据库的能力 - 不仅仅是今天存在的数据库,还有任何新创建的数据库或从其他服务器恢复的数据库。

我不能使用仅限数据库的角色(甚至不能在模型中使用),因为这些角色不会对新恢复的数据库生效。

(商业目的:我正在写一篇关于人们如何为自己设置低权限的新登录的博客文章,并且他们可以确保他们在复制/粘贴代码时不会意外地有“哎呀”时刻或者在没有 where 子句的情况下运行它。)

security sql-server

15
推荐指数
1
解决办法
1772
查看次数

如何让 Brent Ozar 的 sp_BlitzIndex 在 Azure 上运行?

我从 Brent Ozar 的网站下载了 SQL Server First Aid Kit。当我以Azure 数据库服务器级别管理员身份登录时,当我尝试通过 Microsoft Sql Server Management Studio 针对我的主数据库运行sp_BlitzIndex脚本时,出现以下错误:

消息 262,级别 14,状态 18,过程 sp_BlitzIndex,第 18 行 CREATE PROCEDURE 权限在数据库“master”中被拒绝。

我在要测试的数据库实例上成功创建了该过程。当我执行该程序时,我收到一条错误消息:

消息 50000,级别 16,状态 1,第 1265 行无效的对象名称“mydatabase.sys.partitions”。

接下来我尝试聪明一点,直接对master数据库运行存储过程代码,而不创建存储过程,得到以下错误:

此版本的 SQL Server 不支持消息 50000,级别 15,状态 1,第 1267 行引用“mydatabase.sys.indexes”中的数据库和/或服务器名称。

我没有足够的信心开始玩弄约 2700 行索引启发式逻辑的内部工作原理。是否有一种快速、简单的方法可以让这个存储过程在 Azure SQL 数据库上很好地工作,或者我应该在别处寻找索引分析工具/存储过程?

t-sql azure-sql-database azure-sql-database-v11 sp-blitzindex

14
推荐指数
1
解决办法
2029
查看次数

Perfmon 计数器“次优计划/秒”实际衡量的是什么?

在 SQL Server 中,Perfmon 计数器“工作负载组统计:次优计划/秒”衡量什么?

它是资源调控器计数器之一,因此它是在工作负载组(无论是否配置 RG 都具有)进行测量的。

我不是在问什么是好的计划或坏的计划,而是具体的对策是什么,你去哪里找到准确的相应计划?例如,我在扩展事件中找不到任何与触发“次优计划/秒”计数器的查询相匹配的内容。

sql-server

13
推荐指数
1
解决办法
428
查看次数

UPDATE STATISTICS 选项在 Amazon RDS SQL Server 中失败

在 Amazon RDS SQL Server(任何版本/版本)中,创建一个临时表并更新其统计信息。这工作正常:

IF OBJECT_ID('tempdb..#t') IS NOT NULL
    DROP TABLE #t;
GO
CREATE TABLE #t (id INT NOT NULL);
GO
UPDATE STATISTICS #t 
GO
Run Code Online (Sandbox Code Playgroud)

但是尝试在统计信息上指定行数:

UPDATE STATISTICS #t 
  WITH ROWCOUNT = 100000000;
GO
Run Code Online (Sandbox Code Playgroud)

你会得到一个错误:

消息 1088,级别 16,状态 12,第 1 行 找不到对象“#t”,因为它不存在或您没有权限。

STATS_STREAM、ROWCOUNT 和 PAGECOUNT 选项已记录在案,但未得到官方支持。AWS RDS SQL Server 是否有解决方法以便它们工作?

sql-server statistics temporary-tables amazon-rds

12
推荐指数
1
解决办法
1391
查看次数