小编Fra*_*ani的帖子

在此版本的 SQL Server 中无法使用参数调用“SUSER_SNAME”

我正在阅读这篇博客文章,其中包含一个查询,可以让您找到 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)

sql-server t-sql azure-sql-database azure

4
推荐指数
1
解决办法
894
查看次数

.bacpak 文件中的 .BCP 文件是什么?

在 dba.stackexchange.com 上潜水我找到了一个很好的答案,教我如何.bacpac使用文件资源管理器打开文件。

我用数据库试了一下,AdventureWorks2008R2我所做的就是:

  1. 将数据库保存为.bacpac文件
  2. 将文件扩展名重命名为 .zip
  3. 解压

好了,您可以将数据库的表作为文件夹查看,并且在每个文件夹中您可以查看原始数据。

在此处输入图片说明

但是当我打开文件夹时,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)

sql-server t-sql bacpac

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

SQL Server :: 该记录占用了多少 8K 页?

我想查看特定记录占用了多少 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 data-pages t-sql database-size size

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

INSERT MASTER.sys.sysdatabases 结果到临时表中

我有这个查询来迭代我的 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)

但是如何将结果全部存储在一张临时表中?

sql-server temporary-tables

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