小编Ram*_*ale的帖子

SQL如何决定添加新数据页面

我试图理解SQL如何在我们将一些新记录插入表中时分配新数据页.

我在新的数据库中创建了一个名为Employee的示例表 -

Create Database TestDb
GO
Use TestDb
GO
Create table Employee (
EmployeeName char(1000))   GO
Insert into Employee values ('Employee1')

DBCC IND('TestDb','dbo.Employee',-1)
Run Code Online (Sandbox Code Playgroud)

运行DBCC后,我看到了2页.一个是IAM页面(PageType = 10),另一个是数据页面(PageType = 1),它保存实际数据.

后来我使用DBCC Page验证了数据页面的实际内容

DBCC TRACEON(3604)
DBCC PAGE('TestDb',1,298,3)
Run Code Online (Sandbox Code Playgroud)

我看到SQL如何计算m_freecnt字节数 -

= 1007字节RecordSize + 96字节标头+ 2字节偏移= 1105字节

即8K页= 8192字节= 8192 - 1105 = 7087字节自由.

在此输入图像描述

现在我继续在此表中添加记录,以便了解此页面将容纳多少条记录,以及SQL何时会分配一个保留m_FreeCnt的新页面.

(记录大小= 1007和偏移字节= 2)

新增第二条记录 -

Insert into Employee values ('Employee2') GO
Run Code Online (Sandbox Code Playgroud)

最后一个自由计数= 7087,即7087 - 1007 - 2 = 6087 => m_FreeCnt = 6078

Insert into Employee values ('Employee3') GO …
Run Code Online (Sandbox Code Playgroud)

sql sql-server

5
推荐指数
1
解决办法
536
查看次数

Unicode 到非 Unicode 的转换

我在NVarchar名为“邮政编码”的字段中有一些 Unicode 字符。当我将它们转换为 时,结果中Varchar有一个。?

我的代码是:

select PostalCode, cast((PostalCode) as varchar)) as val from  table
Run Code Online (Sandbox Code Playgroud)

结果是:

PostalCode       |   val
053000           | 053000?
Run Code Online (Sandbox Code Playgroud)

在这里我得到了?结果。有什么办法可以删除这些特殊字符吗?

t-sql sql-server unicode collation character-encoding

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

带有时区的SQL Server DateTime

我希望以下列格式显示日期时间与TimeZone关联:

7/19/2017 10:15:55 AM CST 
Run Code Online (Sandbox Code Playgroud)

是否可以在SQL Server中显示?

谢谢.

sql t-sql sql-server

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

显示PowerPivot FieldList的值

我想在Excel的单元格中显示一个来自PowerPivot字段列表的值.

如何在Cell中展示它的价值?

powerpivot

0
推荐指数
1
解决办法
2078
查看次数