我有几台服务器,我在 sql server 服务上看到一个蓝色的问号,如下图所示。
启用这些 Windows 防火墙规则对我有用
Windows 管理规范 (WMI-In)
Windows 管理规范 (DCOM-In)
有没有办法通过powershell实现这一目标?
sql-server powershell windows-server connectivity sql-server-2014
当 sp_BlitzIndex 做索引建议时,我脑子里的问题如下:
是的,建议的索引在执行 select 语句时会带来很多速度优势。但是这些索引还有另一个成本,即删除、插入、更新查询
sp_BlitzIndex 脚本是否也考虑了删除、插入、更新成本?还是仅评估 select 语句会带来多少速度优势?
此外,我如何通过 sp_BlitzIndex 列出坏索引?他们是如何确定坏的?
非常感谢您的回答
我想阻止用户更改 MS SQL Server 数据库中的某些列。我无法将该列锁定为 READ ONLY,因为对该列进行了更改。让我尽可能解释清楚。我们的 ERP 允许我通过用户的安全选项卡阻止某些字段/列。听起来很棒。但是,如果一个人使用 ODBC 或 DSN 连接,他们将能够更改数据。例如,我不希望用户能够更改客户订单表中的成本或任何财务内容,但对他更正不正确的地址或运输信息没有任何问题。如果我将表锁定为只读,那么使用 ERP 也会阻止该列。我希望我在这里说得通。谢谢!
我如何选择在其音乐流派中具有朋克和摇滚风格的艺术家?我需要两种类型的艺术家。
一个例子:
SELECT * FROM artist_genre WHERE genre_id IN (1,2)
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我恢复了所有属于朋克或摇滚的东西。但我只需要拥有两者的艺术家。有没有简单的方法呢?
如果需要更改数据库的结构,我可以做。
我试图在 SQL Server 2017 实例上创建可用性组,但遇到错误 35220:
无法处理该操作。Always On 可用性组副本管理器正在等待主机启动 Windows Server 故障转移群集 (WSFC) 群集并加入它。要么本地计算机不是集群节点,要么本地集群节点不在线。如果计算机是集群节点,则等待其加入集群。如果计算机不是群集节点,请将计算机添加到 WSFC 群集。然后,重试该操作。
我被难住了,因为主机绝对是 WSFC 的一部分,并且节点在线。我最终在一篇专注于多子网可用性组的博客中找到了答案,我之前没有看过,因为我的不是多子网。
因此,我在这里发布这个是为了更好地了解解决方案,以防其他一些糟糕的 DBA 像我一样被难倒。我将在下面发布解决方案。
我对 DBA 和 SQL 没有真正的经验,所以我需要你的一些建议。
我有一个生产数据库备份文件,但是它非常大,所以当我执行恢复时,例如,在测试环境中制作数据副本 - 恢复需要很长时间。
我读到:是否可以从备份中部分恢复数据?
它与我想做的类似,但不完全等效。
为了清楚起见,我需要回答以下问题:是否有可能用比备份文件中更少的记录来恢复数据库?
比如备份文件表有100万条记录,我只想恢复1k条记录。
我们有一个四节点可用性组,一个站点中有两个节点,另一个数据中心中有两个站点外节点。我注意到在每个 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
为 SQL Server 2012 设计和编写的查询能否在 SQL Server 2016 上按原样使用。我们计划升级 SQL Server,并希望尽量减少人工干预以过渡我们的工作
考虑下表:
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)
合并规则如下:
合并的结果应该使表格看起来像这样:
Id Hash
----------- ----------------------------------
1 0x31F777F0804D301936411E3ECD760859
3 0x31F777F0804D301936411E3ECD760859
4 0x0C5A65264F92A543E7AAA06375349C06
Run Code Online (Sandbox Code Playgroud)
编写查询以实现此操作的最有效方法是什么?仅供参考,为简洁起见,省略了其他列。
我正在使用 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 ×10
clustering ×2
restore ×2
backup ×1
connectivity ×1
deadlock ×1
insert ×1
locking ×1
memory ×1
merge ×1
powershell ×1