我试图理解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) 我在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)
在这里我得到了?结果。有什么办法可以删除这些特殊字符吗?
我希望以下列格式显示日期时间与TimeZone关联:
7/19/2017 10:15:55 AM CST
Run Code Online (Sandbox Code Playgroud)
是否可以在SQL Server中显示?
谢谢.
我想在Excel的单元格中显示一个来自PowerPivot字段列表的值.
如何在Cell中展示它的价值?