当我登录到 Sql-Server 操作系统的远程桌面时,无法使用 SSMS 建立本地DAC 连接。第一个原因是 SQL 浏览器服务关闭。后来,我被指出的第二个原因是“DAC 未激活”错误:
“无法在默认端口上建立 DAC 连接。请确保 DAC 已启用”。
我寻找解决方案。我发现的建议解决方案是启用“RemoteDacEnabled”Facet 属性或运行
sp_configure 'remote admin connections', 1
Run Code Online (Sandbox Code Playgroud)
这让我想知道,为什么我应该启用REMOTE DacEnabled 属性,以防我想从本地系统连接?我这里的 REMOTE 是不是错了?
"The connection is only allowed from a client running on the server. No network connections are permitted."
If I HAVE TO logon from local server and NOT over the network, what sense does a REMOTE DAC setting ever make?
EDIT/part of the answer: The main reason …
我的代码使用将 SQL Server SPID 与 CompanyID 链接起来的表。例如
Spid|CompanyID
1 | 123
2 | 412
Run Code Online (Sandbox Code Playgroud)
每次请求到达数据库时,请求首先检查此表以获取当前用户的公司 ID,如果没有,则将其插入。
自然,这是一个非常高的流量表。我当前的实现是在内存 OLTP 中使用 SQL Server 2016 使用非持久内存表。但是,我们发现了一个与内存压力有关的错误(msft 目前正在研究它),需要远离此实现。
该表在任何给定时间仅包含约 300 条记录,并且用户很少写入该表。但每秒可能有数百次读取。
我们现在将不得不移回磁盘表,并且我不想将任何内容记录到事务日志中以读取该表。有没有办法不将任何内容记录到事务日志或最少记录到事务日志?
我查看了全局临时表,还使用了 TABLOCK 和 Minimally Logging 关键字,但这些似乎都只与高流量写入有关。
有没有办法在这里完成我想要的?
我有一个简单的过程,存在于 150 多个数据库中。我可以将它们一一删除,这是软件开发界最愚蠢的工作。或者我可以以某种方式在一个查询中动态删除它们,这很聪明但不起作用。
我试过了:
execute sp_msforeachdb 'drop procedure Usages'
Run Code Online (Sandbox Code Playgroud)
我有:
无法删除过程“用法”,因为它不存在或您没有权限。
所以我想也许我为它创建了一个游标。于是我写道:
declare @command nvarchar(max) = '
drop procedure Usages
';
declare @databaseName nvarchar(100)
declare databasesCursor cursor for select [name] from sys.databases where database_id > 5
open databasesCursor
fetch next from databasesCursor into @databaseName
while @@fetch_status = 0
begin
print @databaseName
execute sp_executesql @command
fetch next from databasesCursor into @databaseName
end
close databasesCursor
deallocate databasesCursor
Run Code Online (Sandbox Code Playgroud)
再次,我收到了同样的消息。我想,也许它不会改变数据库的上下文,因此我在删除命令前面加上了给定数据库的名称,所以命令会变得类似于drop procedure [SomeDatabase].dbo.Usages,但后来我收到了:
“DROP PROCEDURE”不允许将数据库名称指定为对象名称的前缀。
所以,我想出动态执行,use @databaseName以便我可以在该数据库的上下文中删除过程。但它不起作用。我该怎么办?我被困在聪明的方法上,而且我现在比愚蠢的方法花费的时间更多。
SQL Server 表触发器每秒可以处理多少事务?如果我有一个每秒插入 1,000 次的高度事务性表,该表上的插入触发器是否可靠地每次触发?
我有一个几乎 2 TB 大小的 SQL Server 数据库,它有带有图像数据类型的表。现在差异备份的大小与完整备份的大小相同。图像数据类型对此有什么影响吗?或者我错过了什么。
我们已经在生产中遇到了几次问题,它看起来像一个存储过程获得了一个新的、糟糕的计划并开始造成严重破坏。不幸的是,在执行 dbcc freeproccache 之前,我们无法捕获之前和之后的计划以查看不良计划的情况,我们也没有设置查询存储。
我的问题是,什么会导致 sql server 为存储过程生成新计划?特别是对于一直运行的 sp。我知道的一些是:
我有一个特殊的情况让我使用SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED. (我sp_getapplock用来确保单个进程访问给定的行。)
我正在尽力避免任何类型的锁定升级。我清楚地知道ISOLATION LEVEL READ UNCOMMITTED读取有什么作用,但我不确定删除。
我看到用做删除一些示例代码ROWLOCK和READPAST,连同ISOLATION LEVEL READ UNCOMMITTED但我是没有什么,会做明确的,所以我也没有一直在使用它了。
这是否需要防止我的删除锁定升级或就ISOLATION LEVEL READ UNCOMMITTED足够了?
我知道这里(和这里)的其他答案说要订购newid()。但是,如果我top 1在子查询中进行选择- 以便在外部查询中的每行生成随机选择 - 每次使用都会newid()产生相同的结果。
那是:
select *,
(select top 1 [value] from lookupTable where [code] = 'TEST' order by newid())
from myTable
Run Code Online (Sandbox Code Playgroud)
...lookupTable.value在从 返回的每一行上产生相同的值myTable。
我正在尝试从lookupTable. 那个表只有几行。在现实世界中,我想要update myTable set someColumn = ......一个随机lookupTable.value值,这样每一行都myTable设置了一个随机值,而不是生成一个随机值并将其分配给所有行。
我有一个带有 100Gb MDF 和 4Gb LDF 的 SQL2016 DB 的客户端。数据库设置为简单。我无法将 LDF 缩小到最低限度。如何将 LDF 缩小到正常水平?
此设置和文件大小是否会影响性能?
我在其中一个数据库上运行 DBCC CHECKDB 时遇到了分配错误。它抛出以下错误:
消息 8947,级别 16,状态 1,第 5 行表错误:对象 ID 1277199566、索引 ID 1、分区 ID 720577176766669456、分配单元 ID 720577087666647328 的多个 IAM 页(类型 LOB 数据)包含间隔。IAM 页面 (1:425664) 和 (1:1422669)。
CHECKDB 在表“schemaName.tableName”(对象 ID 1277199566)中发现 1 个分配错误和 0 个一致性错误。CHECKDB 在数据库“databaseName”中发现 1 个分配错误和 0 个一致性错误。
奇怪的是,当我尝试在该表上运行 DBCC CHECKTABLE 时,它没有显示任何错误。此外,我尝试运行 CHECKTABLE WITH EXTENDED_LOGICAL_CHECKS 选项,但没有出现任何错误。
根据 Microsoft 文档:
要对数据库中的每个表执行 DBCC CHECKTABLE,请使用 DBCC CHECKDB。
对于指定的表,DBCC CHECKTABLE 检查以下内容:
- 索引、行内、LOB 和行溢出数据页正确链接。
- 索引按正确的排序顺序排列。
- 指针是一致的。
- 每页数据合理,包括计算列。
- 页面偏移是合理的。
- 基表中的每一行在每个非聚集索引中都有一个匹配的行,反之亦然。
- 分区表或索引中的每一行都在正确的分区中。
- 使用 FILESTREAM 在文件系统中存储 varbinary(max) 数据时文件系统和表之间的链接级一致性
但正如我所看到的,相反的情况并非如此。我们不能只对一张表运行 CHECKTABLE 并为同一张表获得相同的结果。
在检查特定对象的完整性和一致性方面,是否有人拥有与这两个命令之间的差异相关的信息?
sql-server ×10
sql-server-2016 ×10
performance ×2
backup ×1
connections ×1
cursors ×1
dac ×1
dbcc-checkdb ×1
locking ×1
random ×1
shrink ×1
ssms ×1
trigger ×1