小编Aar*_*and的帖子

如何按表查找内存使用情况?

我想知道每个表使用了多少内存。这些信息是否可以在 DMV 或其他地方获得?

sql-server-2008 sql-server

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

索引使用统计 DMV 表示没有索引活动

我正在尝试获取有关索引的信息。根据几个网站,下面的 TSQL 查询应该将索引信息加入索引表,返回索引和相关信息。下面的查询被简化为裸连接,因为我目前正在尝试返回数据,然后从那里返回我需要的内容:

SELECT *
FROM sys.indexes i
     INNER JOIN sys.dm_db_index_usage_stats s ON i.object_id = s.object_id
Run Code Online (Sandbox Code Playgroud)

此查询不返回任何内容。然而,在几个数据库中有数百个表至少有一个索引,根据网上的各种文章,这个查询应该返回这些索引(因为它连接到对象 ID)。此外,如果我尝试将查询更改为以下查询,它也不会返回任何内容:

SELECT *
FROM DATABASENAME.sys.indexes i
    INNER JOIN DATABASENAME.sys.dm_db_index_usage_stats s ON i.object_id = s.object_id
Run Code Online (Sandbox Code Playgroud)

为什么这个查询不返回数据?

添加

如果我运行以下查询,我会从这两个SELECT查询中收到数据:

SELECT *
FROM sys.indexes

SELECT *
FROM sys.dm_db_index_usage_stats
Run Code Online (Sandbox Code Playgroud)

问题(在原始查询上)是object_id连接。但是,我不知道为什么我在一个表中的对象在另一个表中不存在。

最终:Martin 最初给出了正确答案——即使数据是从sys.dm_db_index_usage_stats表中返回的,它也在msdb数据库中,而不是我正在寻找的特定数据库中。我再次对表运行查询,并在表中找到了数据库 ID。不确定为什么该sys.dm_db_index_usage_stats表没有保留先前对该数据库查询的数据。

index sql-server

7
推荐指数
1
解决办法
1393
查看次数

我应该检查存储过程中是否存在临时表?

是否有任何边缘情况建议在存储过程开始时显式检查、删除和创建临时表,而不是仅仅创建它们?

同样,是否存在在存储过程结束时显式删除它们比让 SQL Server 清理它们更可取的情况?

sql-server stored-procedures sql-server-2012 tempdb sql-server-2014

7
推荐指数
1
解决办法
7290
查看次数

ALTER TABLE 语句与 CHECK 约束冲突

我需要检查datecom小于datelivr

create table Commande
(
Numcom int identity primary key,
Datecom date,
Datelivr date,
Codecli int foreign key references clients (Codecli) 
)

alter table Commande 
    add constraint date_check check(datediff(day,Datecom,Datelivr) > 0)
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:

ALTER TABLE 语句与 CHECK 约束“date_check”冲突。冲突发生在数据库“tp4”,表“dbo.Commande”中。

这怎么会发生?

sql-server constraint alter-table ddl sql-server-2012

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

运行带有多个命令的脚本时,如何找出我们所处的位置?

我有一些流程需要在开始之前采取不同的步骤。例如:

禁用对外键的检查约束:

select 'alter table '+fk.table_schema+'.'+fk.table_name
+' NOCHECK CONSTRAINT '+fk.CONSTRAINT_NAME 
from SAProduct.information_schema.table_constraints fk 
join SAProduct.information_schema.tables t
on t.table_schema = fk.table_schema 
and t.table_name = fk.table_name 
WHERE constraint_type='FOREIGN KEY'
Run Code Online (Sandbox Code Playgroud)

这将产生一个很大的语句列表,我只复制 3 个:

use saproduct
go
alter table dbo.tblProdClassificationCode NOCHECK CONSTRAINT FK_tblProdClassificationCode_tblProdClassification
alter table dbo.tblProdClassificationCodeDescr NOCHECK CONSTRAINT fk_ProdClassificationCodeDescr_ProdClassificationCode
alter table dbo.tblProdClassificationCodeGenerate NOCHECK CONSTRAINT fk_ProdClassificationCodeGenerate_ProdClassification
Run Code Online (Sandbox Code Playgroud)

如果我要一次性运行它,我将如何找到我的位置?我正在处理哪张桌子,下一张是哪一张?

删除也是一样的:

select 'DELETE FROM '+table_schema+'.'+table_name
from saproduct.information_schema.tables 
where table_name like 'tbl%'
Run Code Online (Sandbox Code Playgroud)

上面的脚本将生成以下语句集:

use saproduct
go
DELETE FROM dbo.tblBLanguage
DELETE FROM dbo.tblBLgCategoryXRef
DELETE FROM dbo.tblBLgSegmentXRef
DELETE FROM dbo.tblProdClassification
DELETE …
Run Code Online (Sandbox Code Playgroud)

monitoring sql-server ssms t-sql sql-server-2014

7
推荐指数
2
解决办法
303
查看次数

SQL Server 中的 SOS 代表什么?

我现在正在阅读SQL Server 2012 Internals书。SOS 缩写词有几个短语,例如“SOS 调度程序”(在关于调度程序的章节中)、“SOS 内存节点”(在关于空闲缓冲区列表和惰性写入器的章节中)。但我在任何地方都找不到意思。

sql-server

7
推荐指数
1
解决办法
2068
查看次数

登录触发器阻止任何连接

我正在测试登录触发器以限制与某些 IP 的连接。看起来触发器不正确。现在我无法登录到服务器,即使是SA.

有没有办法来解决这个问题?

trigger sql-server

7
推荐指数
1
解决办法
1812
查看次数

为什么我不能使用 fn_dump_dblog 读取我的事务日志备份文件?

我在 sqlskills.com 上使用此博客作为练习在事务日志备份中查找相关 LSN 以进行时间点恢复的指南。

备份事务日志后,我尝试使用以下命令读取它:

SELECT COUNT(*) FROM fn_dump_dblog (
NULL, NULL, 'DISK', 1, 'D:\TEMP\test_tlog2.bak',
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT,
DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, DEFAULT, …
Run Code Online (Sandbox Code Playgroud)

sql-server-2008 sql-server sql-server-2008-r2 restore transaction-log

6
推荐指数
1
解决办法
2627
查看次数

为现有的 AlwaysOn 数据库启用 TDE

我需要对 AlwaysOn 进行一些基准测试,无论是否启用 TDE。我看到的所有说明都涉及将加密数据库添加到可用性组,但我没有提到为 AG 中已有的数据库启用加密。

我可以将服务器证书恢复到所有节点,然后从主节点启用 TDE 吗?我希望我不需要从 AG 中删除数据库,对其进行加密,然后重新初始化所有节点,因为数据库大约为 100 GB。如果需要,我们可以这样做,但这肯定会减慢我们的测试速度。

更新

我只是在一些实验室虚拟机上尝试过这个。我能够在主节点上创建一个证书,在所有辅助节点上恢复它,然后使用这个证书在主节点上创建一个数据库加密密钥。之后我所要做的就是ALTER DATABASE AdventureWorks SET ENCRYPTION ON在主服务器上,一两分钟后,sys.dm_database_encryption_keys 在所有节点上都显示了 encryption_state = 3。

那么,后续问题:是否有任何理由认为我不应该使用此程序?SQL Server 似乎对结果很满意,但我还没有看到任何地方讨论过这种方法。在处理加密和高可用性问题时,我不想让事情碰运气。

sql-server sql-server-2012 availability-groups transparent-data-encryption

6
推荐指数
1
解决办法
2147
查看次数

如何解决错误 26:“Error Locating Server/Instance Specified”

我正在尝试配置对我的 SQL Server 命名实例(名为 SQL2012)的 TCP 访问。我使用管理工作室连接到数据库引擎。我输入服务器名称:“tcp:localhost\SQL2012”,然后收到此错误消息:

(提供者:SQL 网络接口,错误:26 - 错误定位服务器/指定的实例)

SQL Server 团队的这篇文章似乎非常有用,他们建议使用 PortQry 测试 SqlBrowser 服务。当我这样做时,我会得到以下信息:

Querying target system called:

 localhost

Attempting to resolve name to IP address...


Name resolved to 127.0.0.1

querying...

UDP port 1434 (ms-sql-m service): LISTENING or FILTERED

Sending SQL Server query to UDP port 1434...

Server's response:

ServerName MSWART7
InstanceName SQL2012
IsClustered No
Version 11.0.5058.0
tcp 52329

   ?K   K P?K 5 - 2 1 qK 1 4  rK 8 7 0?    1 …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2012 connectivity

6
推荐指数
1
解决办法
3万
查看次数