我正在阅读这篇博客文章,其中包含一个查询,可以让您找到 a 何时DROP
被解雇。我更改LIKE 'DROPOBJ%'
为NOT LIKE 'DROPOBJ%'
这样我可以返回更多行:
SELECT [Current LSN]
,[Operation]
,[Context]
,[Transaction ID]
,[Description]
,[Begin Time]
,[Transaction SID]
,[Transaction Name]
FROM fn_dblog (NULL,NULL)
INNER JOIN(SELECT [Transaction ID] AS tid
FROM fn_dblog(NULL,NULL)
WHERE [Transaction Name] NOT LIKE 'DROPOBJ%')fd ON [Transaction ID] = fd.tid
Run Code Online (Sandbox Code Playgroud)
该查询在 Azure SQL 数据库上轻松执行,但是当我尝试将SUSER_SNAME
博客文章中所述的内容添加到代码中时:
SELECT [Current LSN]
,[Operation]
,[Context]
,[Transaction ID]
,[Description]
,[Begin Time]
,[Transaction SID]
,SUSER_SNAME ([Transaction SID]) AS WhoDidIt
FROM fn_dblog (NULL,NULL)
INNER JOIN(SELECT [Transaction ID] …
Run Code Online (Sandbox Code Playgroud) 在 dba.stackexchange.com 上潜水我找到了一个很好的答案,教我如何.bacpac
使用文件资源管理器打开文件。
我用数据库试了一下,AdventureWorks2008R2
我所做的就是:
.bacpac
文件.zip
好了,您可以将数据库的表作为文件夹查看,并且在每个文件夹中您可以查看原始数据。
但是当我打开文件夹时,Person.Address
我看到里面有 38 个扩展名为.BCP
.
一开始我教他们是数据被分割的页面。但那些不能是页面,因为它们的重量约为67KB
. 页面应该权重8KB
。
所以我用这个查询检查了页数:
-- Total # of pages, used_pages, and data_pages for a given heap/clustered index
SELECT
t.NAME AS TableName,
p.rows AS RowCounts,
SUM(a.total_pages) AS TotalPages,
SUM(a.used_pages) AS UsedPages,
(SUM(a.total_pages) - SUM(a.used_pages)) AS UnusedPages
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = …
Run Code Online (Sandbox Code Playgroud) 我想查看特定记录占用了多少 8K 页。
如果您在 AdventureWorks2019 上运行此查询:
SELECT ProductID
,Name
,DATALENGTH(Name) AS SizeInBytes
,LEN(Name) AS NumberOfCharacters
FROM Production.Product
ORDER BY 1
Run Code Online (Sandbox Code Playgroud)
您可以得到每条记录的咬合列表:
产品ID | 姓名 | 大小(以字节为单位) | 字符数 |
---|---|---|---|
1 | 可调式竞赛 | 30 | 15 |
2 | 轴承球 | 24 | 12 |
3 | BB 球轴承 | 30 | 15 |
4 | 耳机滚珠轴承 | 42 | 21 |
316 | 刀刃 | 10 | 5 |
如何添加包含该记录所用页数的列?
我当然可以,DATALENGTH(Name) / 8 AS PagesTaken
但我想知道是否有一些命令可以让我通过SELECT
.
我有这个查询来迭代我的 SQL Server 上的所有数据库
DECLARE @DB_Name varchar(100)
DECLARE @Command nvarchar(200)
DECLARE database_cursor CURSOR FOR
SELECT name
FROM MASTER.sys.sysdatabases
where name not in ('master','tempdb','model','msdb')
OPEN database_cursor
FETCH NEXT FROM database_cursor INTO @DB_Name
WHILE @@FETCH_STATUS = 0
BEGIN
SELECT @Command = 'SELECT ' + '''' + @DB_Name + '''' + 'as DB_name, SF.filename, SF.size FROM sys.sysfiles SF'
EXEC sp_executesql @Command
FETCH NEXT FROM database_cursor INTO @DB_Name
END
CLOSE database_cursor
DEALLOCATE database_cursor
Run Code Online (Sandbox Code Playgroud)
但是如何将结果全部存储在一张临时表中?