标签: sql-server

如何使用 powershell 启用这些 Windows 防火墙规则?

我有几台服务器,我在 sql server 服务上看到一个蓝色的问号,如下图所示。

在此处输入图片说明

这是解决方案:

启用这些 Windows 防火墙规则对我有用

Windows 管理规范 (WMI-In)

Windows 管理规范 (DCOM-In)

有没有办法通过powershell实现这一目标?

sql-server powershell windows-server connectivity sql-server-2014

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

关于sp_BlitzIndex的几个问题

当 sp_BlitzIndex 做索引建议时,我脑子里的问题如下:

是的,建议的索引在执行 select 语句时会带来很多速度优势。但是这些索引还有另一个成本,即删除、插入、更新查询

sp_BlitzIndex 脚本是否也考虑了删除、插入、更新成本?还是仅评估 select 语句会带来多少速度优势?

此外,我如何通过 sp_BlitzIndex 列出坏索引?他们是如何确定坏的?

非常感谢您的回答

sql-server sp-blitzindex sql-server-2017

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

防止用户更改 MS SQL Server 数据库中的某些列

我想阻止用户更改 MS SQL Server 数据库中的某些列。我无法将该列锁定为 READ ONLY,因为对该列进行了更改。让我尽可能解释清楚。我们的 ERP 允许我通过用户的安全选项卡阻止某些字段/列。听起来很棒。但是,如果一个人使用 ODBC 或 DSN 连接,他们将能够更改数据。例如,我不希望用户能够更改客户订单表中的成本或任何财务内容,但对他更正不正确的地址或运输信息没有任何问题。如果我将表锁定为只读,那么使用 ERP 也会阻止该列。我希望我在这里说得通。谢谢!

database-design sql-server locking

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

选择具有多个必需过滤器的行

我如何选择在其音乐流派中具有朋克和摇滚风格的艺术家?我需要两种类型的艺术家。

我的桌子

一个例子:

SELECT * FROM artist_genre WHERE genre_id IN (1,2)
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我恢复了所有属于朋克或摇滚的东西。但我只需要拥有两者的艺术家。有没有简单的方法呢?

如果需要更改数据库的结构,我可以做。

sql-server-2008 sql-server

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

为什么我无法创建此可用性组?(错误 35220)

我试图在 SQL Server 2017 实例上创建可用性组,但遇到错误 35220:

无法处理该操作。Always On 可用性组副本管理器正在等待主机启动 Windows Server 故障转移群集 (WSFC) 群集并加入它。要么本地计算机不是集群节点,要么本地集群节点不在线。如果计算机是集群节点,则等待其加入集群。如果计算机不是群集节点,请将计算机添加到 WSFC 群集。然后,重试该操作。

我被难住了,因为主机绝对是 WSFC 的一部分,并且节点在线。我最终在一篇专注于多子网可用性组的博客中找到了答案,我之前没有看过,因为我的不是多子网。

因此,我在这里发布这个是为了更好地了解解决方案,以防其他一些糟糕的 DBA 像我一样被难倒。我将在下面发布解决方案。

sql-server clustering availability-groups sql-server-2017

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

使用比备份文件少的数据还原数据库

我对 DBA 和 SQL 没有真正的经验,所以我需要你的一些建议。

我有一个生产数据库备份文件,但是它非常大,所以当我执行恢复时,例如,在测试环境中制作数据副本 - 恢复需要很长时间。

我读到:是否可以从备份中部分恢复数据?

它与我想做的类似,但不完全等效。

为了清楚起见,我需要回答以下问题:是否有可能用比备份文件中更少的记录来恢复数据库?

比如备份文件表有100万条记录,我只想恢复1k条记录。

sql-server backup restore sql-server-2012

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

网络问题后的可用性组群集内存问题。如何转储 HADR 日志块消息池?

我们有一个四节点可用性组,一个站点中有两个节点,另一个数据中心中有两个站点外节点。我注意到在每个 WAN 问题发生后,WAN 连接出现波动,并且异地节点不断断开连接并重新连接(使用 AOAG 仪表板中的 AOAG 运行状况),主服务器的内存被“HADR 日志块消息池”消耗

SELECT  *
FROM    sys.dm_os_memory_clerks
ORDER   BY pages_kb DESC
Run Code Online (Sandbox Code Playgroud)

类型:OBJECTSTORE_SERVICE_BROKER
名称:HADR 日志块消息池

在最坏的情况下,当网络震荡数小时时,这个内存管理员最终会消耗超过 90% 的 SQL Server 内存,导致 SQL Server 停止运行(SQL 有 10GB 的内存“HADR Log Block Msg Pool”正在使用 9.8GB)。

有没有办法转储这个 HADR 日志块消息池?还是一开始就阻止它变得如此之大?到目前为止,我们唯一的解决方案是故障转移并重新启动机器。

没有错误,只是节点的日志断开连接并重新连接,以及重新连接后数据库重新硬化的日志。

随着越来越多的内存被“HADR 日志块消息池”占用,可用于其他所有内容的内存会下降,从而影响性能。通常这 10GB 的 RAM 适合这个 AOAG 组和使用。只有当 WAN 波动一段时间时,我们才会出现此问题。

我们可以在服务器上投入更多内存,但我认为这不会解决根本问题,它只会在严重损害性能之前为我们争取更多时间。

我同意网络是根本原因,但在问题解决并且 AOAG 恢复同步后,SQL 不会像大多数 SQL 内存管理员那样恢复/重新分配 RAM 给其他 SQL 内存管理员,这似乎很奇怪。

日志传送不起作用;这是一个事务性环境,我们需要近乎实时的,最好是实时的异地 DR。AOAG 小组 99% 的时间都在工作,并且几乎总是实时同步。我们正在尝试与网络团队合作以改善连接性,和/或可能使它只是断开连接而不是摆动。

系统信息
SQL 版本:SQL 2016 SP1 CU6 13.0.4457.0
操作系统版本:Windows 2012 R2 6.3.9600
服务器内存:12GB …

sql-server memory clustering availability-groups sql-server-2016

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

在 SQL Server 2012 中编写的查询与 SQL Server 2016 的兼容性

为 SQL Server 2012 设计和编写的查询能否在 SQL Server 2016 上按原样使用。我们计划升级 SQL Server,并希望尽量减少人工干预以过渡我们的工作

sql-server

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

表和数据集之间的合并/交集 - 如何实现?

考虑下表:

Id          Hash
----------- ----------------------------------
1           0x31F777F0804D301936411E3ECD760859
2           0xD64A593F3E9ACC972158D522A4289EA0

(Id is an identity column)
Run Code Online (Sandbox Code Playgroud)

在该表中,我想合并以下数据集:

Hash
----------------------------------
0x31F777F0804D301936411E3ECD760859
0x31F777F0804D301936411E3ECD760859
0x0C5A65264F92A543E7AAA06375349C06

(Id is NOT present in the dataset)
Run Code Online (Sandbox Code Playgroud)

合并规则如下:

  • 如果表中不存在哈希,则将其插入表中;
  • 如果该hash在数据集中不存在,则从表中删除;
  • 如果哈希确实存在于双方,并且表中有X个实例,源中有Y个实例,则应将(YX)个实例插入到表中。

合并的结果应该使表格看起来像这样:

Id          Hash
----------- ----------------------------------
1           0x31F777F0804D301936411E3ECD760859
3           0x31F777F0804D301936411E3ECD760859
4           0x0C5A65264F92A543E7AAA06375349C06
Run Code Online (Sandbox Code Playgroud)

编写查询以实现此操作的最有效方法是什么?仅供参考,为简洁起见,省略了其他列。

sql-server insert merge

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

恢复期间的事务死锁

我正在使用 PS 脚本来恢复数据库备份,并且我有以下从 PS Invoke-SQLcmd 命令运行的 SQL 脚本:

USE master
GO
ALTER DATABASE mydatabase SET SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
ALTER DATABASE mydatabase SET OFFLINE WITH ROLLBACK IMMEDIATE
GO
RESTORE DATABASE mydatabase
FROM DISK = 'Z:\bak\mydatabase.bak'
WITH REPLACE
GO

ALTER DATABASE mydatabase SET RECOVERY SIMPLE
GO
ALTER DATABASE mydatabase SET ONLINE
GO
ALTER DATABASE mydatabase SET MULTI_USER WITH ROLLBACK IMMEDIATE
GO
Run Code Online (Sandbox Code Playgroud)

如您所见,我将数据库切换到单模式,甚至在还原操作之前将其设为离线。但是,我不时收到如下错误:

Transaction (Process ID 61) was deadlocked on lock resources with another process and has been chosen as the …

sql-server deadlock restore sql-server-2014

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