SQLSERVER中KeyHashValue的作用(下) 昨天中午跟高文佳童鞋讨论了 KeyHashValue 的作用,到最后还是没有讨论出结果 昨天晚上德国的兄弟傅文伟做了一下实验,将实验结果交给我 感谢他们 SQLSERVER中KeyHashValue的作用(上) 虽然对于keyhashvalue的研究还有
SQLSERVER中KeyHashValue的作用(下)
昨天中午跟高文佳童鞋讨论了KeyHashValue的作用,到最后还是没有讨论出结果
昨天晚上德国的兄弟傅文伟做了一下实验,将实验结果交给我
感谢他们
SQLSERVER中KeyHashValue的作用(上)
虽然对于keyhashvalue的研究还有很多问题还没有解决,但是基本可以确定“keyhashvalue是用来锁定资源的”
而不是我之前说的,在seek的时候根据这个KeyHashValue来快速查找到对应的记录
误导大家了,真的不好意思!!!!
资源 说明
RID 用于锁定堆(heap)中的某一行
KEY 用于锁定索引上的某一行,或者某个索引键
PAGE 锁定数据库中的一个8KB页,例如数据页或索引页
EXTENT 一组连续的8页(区)
HOBT 锁定整个堆或B树的锁
TABLE 锁定包括所有数据和索引的整个表
FILE 数据库文件
APPLICATION 应用程序专用的资源
METADATA 元数据锁
ALLOCATION_UNIT 分配单元
DATABASE 整个数据库
KEY是靠生成的这个KeyHashValue来进行锁定索引中的行
KEY 用于锁定索引上的某一行
为什么需要这个KeyHashValue???
由于很苟很苟没有写C#代码,不过我觉得从C#的多线程同步来理解会更加好
例如:
lock 语句 lock 确保当一个线程位于代码的临界区时,另一个线程不进入临界区。如果其他线程试图进入锁定的代
码,则它将一直等待(即被阻止),直到该对象被释放,大家可以把同步对象理解为KeyHashValue
c# 多线程同步
c# 多线程同步
大家还是看给出的文章链接吧,因为本人很苟很苟没有写C#代码了,细节的东西看文章比较好
网上有很多相关的文章:
例如
建立索引的时候为什麽有900bytes的限制
为了性能,不可能让您在比较大的数据类型下,而且存储了非常多的数据的字段上建立索引
因为这样做的话,要计算出KeyHashValue就会非常消耗性能
这篇文章:Improvement in minimizing lockhash key collisions in SQL Server 2008R2 and its impact on concurrency
Since the key to a row could be as large as 900 bytes, using the real key values would have inflicted larger memory consumption.
引入
The solution to this problem was found when designing SQL server 7.0 in 1996 and 1997 by using the key of the row and apply
a hash algorithm to it which then results in a 6 byte long lockhash value
我将这些文章整理到我的文章里:undocumented virtual column %%lockres%%
在SQLSERVER2005下跟SQLSERVER2012下,建立相同的聚集索引,你会看到在SQL2005下,表的聚集索引页面有KeyHashValue
但是在SQL2012下,表的聚集索引页面的KeyHashValue列全部为NULL
由于我没有SQL2008,所以没有测试SQL2008,估计从SQL2008开始,KeyHashValue开始有些变化了
在SQL2005里,你使用dbcc page查看数据页面,数据页面里的每行记录是没有显示KeyHashValue的,不知道要打开哪个跟踪标记才能看到
在SQL2005里唯一能看到数据页面中的keyhashvalue只有使用%%lockres%%
而在SQL2012,不用做任何设置,使用dbcc page就可以看到KeyHashValue
当然也可以用%%lockres%%:
<span>1</span> <span>SELECT</span> <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>FROM</span> 表名
页面126是数据页面
<span>1</span> <span>DBCC</span> TRACEON(<span>3604</span>,<span>-</span><span>1</span><span>) </span><span>2</span> <span>GO</span> <span>3</span> <span>DBCC</span> PAGE(testhashkey,<span>1</span>,<span>126</span>,<span>3</span><span>) </span><span>4</span> <span>GO</span>
Slot 0 Offset 0x0 Length 0 Length (physical) 0
KeyHashValue = (8194443284a0)
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
SQL2012最大的改进是提示非常清晰,而且以前的SQLSERVER版本没有显示出来的东西都给你显示出来了,
这样有时候就不用做那么多系统表的表连接,如果是以前版本的SQLSERVER要查看某一个信息的时候又要做
这个系统表的表连接又要做那个表的表连接才能得出这个自己想看的东西,非常繁琐
例如如下改进:
聚集索引页面的显示,SQL2005是没有Row Size这一列的
下面的所有测试都是基于SQLSERVER2005 SP4 个人开发版
聚集索引
创建聚集索引的时候无论是唯一还是不唯一都会产生KeyHashValue
但是为了实验的方便,我这里只创建唯一聚集索引,因为不唯一的话会产生range locks不方便查看结果
详细请参考文章:Range locks
脚本:
<span> 1</span> <span>USE</span><span> master </span><span> 2</span> <span>GO</span> <span> 3</span> <span>CREATE</span> <span>DATABASE</span><span> testhashkey </span><span> 4</span> <span>GO</span> <span> 5</span> <span> 6</span> <span>USE</span><span> testhashkey </span><span> 7</span> <span>GO</span> <span> 8</span> <span> 9</span> <span>--</span><span>------------------------------------------</span> <span>10</span> <span>--</span><span>测试聚集索引</span> <span>11</span> <span>CREATE</span> <span>TABLE</span><span> testcluster </span><span>12</span> <span> ( </span><span>13</span> a <span>NVARCHAR</span>(<span>3800</span>) <span>NOT</span> <span>NULL</span><span> , </span><span>14</span> b <span>INT</span> <span>NOT</span> <span>NULL</span> <span>15</span> <span> ) </span><span>16</span> <span>GO</span> <span>17</span> <span>18</span> <span>--</span><span>这里一定要是唯一的</span> <span>19</span> <span>CREATE</span> <span>UNIQUE</span> <span>CLUSTERED</span> <span>INDEX</span> ucl <span>ON</span><span> testcluster(b) </span><span>20</span> <span>GO</span> <span>21</span> <span>22</span> <span>INSERT</span><span> testcluster </span><span>23</span> <span>SELECT</span> <span>CAST</span>(<span>11</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>1</span> <span>UNION</span> <span>ALL</span> <span>24</span> <span>SELECT</span> <span>CAST</span>(<span>22</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>2</span>View Code
查看表情况的脚本
<span> 1</span> <span>CREATE</span> <span>TABLE</span><span> DBCCResult ( </span><span> 2</span> PageFID <span>NVARCHAR</span>(<span>200</span><span>), </span><span> 3</span> PagePID <span>NVARCHAR</span>(<span>200</span><span>), </span><span> 4</span> IAMFID <span>NVARCHAR</span>(<span>200</span><span>), </span><span> 5</span> IAMPID <span>NVARCHAR</span>(<span>200</span><span>), </span><span> 6</span> ObjectID <span>NVARCHAR</span>(<span>200</span><span>), </span><span> 7</span> IndexID <span>NVARCHAR</span>(<span>200</span><span>), </span><span> 8</span> PartitionNumber <span>NVARCHAR</span>(<span>200</span><span>), </span><span> 9</span> PartitionID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>10</span> iam_chain_type <span>NVARCHAR</span>(<span>200</span><span>), </span><span>11</span> PageType <span>NVARCHAR</span>(<span>200</span><span>), </span><span>12</span> IndexLevel <span>NVARCHAR</span>(<span>200</span><span>), </span><span>13</span> NextPageFID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>14</span> NextPagePID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>15</span> PrevPageFID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>16</span> PrevPagePID <span>NVARCHAR</span>(<span>200</span><span>) </span><span>17</span> <span>) </span><span>18</span> <span>19</span> <span>TRUNCATE</span> <span>TABLE</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>20</span> <span>21</span> <span>INSERT</span> <span>INTO</span> DBCCResult <span>EXEC</span> (<span>'</span><span>DBCC IND(testhashkey,testcluster,-1) </span><span>'</span><span>) </span><span>22</span> <span>23</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>PageType</span><span>]</span> <span>DESC</span>View Code
聚集索引页面
其实我这里暂时还不清楚聚集索引页面的KeyHashValue有什么作用,为什麽这样说??请往下看
我们看一下表中的每行记录的所产生的keyhashvalue
<span>1</span> <span>select</span> <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>from</span> testcluster
大家可以看到,无论是索引行还是数据行都有KeyHashValue
我们使用下面语句进行测试,查看SQLSERVER锁定的资源
<span> 1</span> <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> <span>SERIALIZABLE</span> <span> 2</span> <span>GO</span> <span> 3</span> <span>BEGIN</span> <span>TRANSACTION</span> <span> 4</span> <span>SELECT</span> b <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>testcluster</span><span>]</span> <span>WHERE</span> <span>[</span><span>b</span><span>]</span><span>=</span><span>1</span> <span> 5</span> <span>--</span><span>COMMIT TRAN</span> <span> 6</span> <span> 7</span> <span>SELECT</span><span> resource_type , </span><span> 8</span> <span> resource_database_id , </span><span> 9</span> <span> resource_description , </span><span>10</span> <span> resource_associated_entity_id , </span><span>11</span> <span> request_mode , </span><span>12</span> <span> request_type , </span><span>13</span> <span> request_status </span><span>14</span> <span>FROM</span><span> sys.dm_tran_locks </span><span>15</span> <span>WHERE</span> <span>[</span><span>resource_database_id</span><span>]</span><span>=</span><span>DB_ID</span>(<span>'</span><span>testhashkey</span><span>'</span><span>) </span><span>16</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>resource_type</span><span>]</span>View Code
为什麽我刚才说:不清楚聚集索引页面的KeyHashValue有什么作用???
大家可以用下面的脚本来测试一下,无论我select还是update,DepartmentID BETWEEN 0 AND 122之间
使用sys.dm_tran_locks视图来查询,发现resource_description字段都没有显示聚集索引页面的keyhashvalue,只显示数据页面
的keyhashvalue,说明我在select和update的时候没有用到聚集索引页面的keyhashvalue,这里我不知道在什么情况下会用到
聚集索引页面的KeyHashValue
脚本如下:
<span> 1</span> <span>USE</span><span> master </span><span> 2</span> <span>GO</span> <span> 3</span> <span>CREATE</span> <span>DATABASE</span><span> practice </span><span> 4</span> <span>GO</span> <span> 5</span> <span> 6</span> <span>USE</span><span> practice </span><span> 7</span> <span>GO</span> <span> 8</span> <span> 9</span> <span>--</span><span>只有聚集索引</span> <span>10</span> <span>CREATE</span> <span>TABLE</span><span> Department( </span><span>11</span> DepartmentID <span>int</span> <span>IDENTITY</span>(<span>1</span>,<span>1</span>) <span>NOT</span> <span>NULL</span> <span>PRIMARY</span> <span>KEY</span><span>, </span><span>12</span> Name <span>NVARCHAR</span>(<span>200</span>) <span>NOT</span> <span>NULL</span><span>, </span><span>13</span> GroupName <span>NVARCHAR</span>(<span>200</span>) <span>NOT</span> <span>NULL</span><span>, </span><span>14</span> Company <span>NVARCHAR</span>(<span>300</span><span>), </span><span>15</span> ModifiedDate <span>datetime</span> <span>NOT</span> <span>NULL</span> <span>DEFAULT</span> (<span>getdate</span><span>()) </span><span>16</span> <span>) </span><span>17</span> <span>18</span> <span>INSERT</span> <span>INTO</span> Department(name,<span>[</span><span>Company</span><span>]</span>,groupname) <span>VALUES</span>(<span>'</span><span>销售部</span><span>'</span>,<span>'</span><span>中国你好有限公司XX分公司</span><span>'</span>,<span>'</span><span>销售组</span><span>'</span><span>) </span><span>19</span> <span>GO</span> <span>100000</span> <span>20</span> <span>21</span> <span>CREATE</span> <span>TABLE</span><span> DBCCResult ( </span><span>22</span> PageFID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>23</span> PagePID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>24</span> IAMFID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>25</span> IAMPID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>26</span> ObjectID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>27</span> IndexID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>28</span> PartitionNumber <span>NVARCHAR</span>(<span>200</span><span>), </span><span>29</span> PartitionID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>30</span> iam_chain_type <span>NVARCHAR</span>(<span>200</span><span>), </span><span>31</span> PageType <span>NVARCHAR</span>(<span>200</span><span>), </span><span>32</span> IndexLevel <span>NVARCHAR</span>(<span>200</span><span>), </span><span>33</span> NextPageFID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>34</span> NextPagePID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>35</span> PrevPageFID <span>NVARCHAR</span>(<span>200</span><span>), </span><span>36</span> PrevPagePID <span>NVARCHAR</span>(<span>200</span><span>) </span><span>37</span> <span>) </span><span>38</span> <span>39</span> <span>TRUNCATE</span> <span>TABLE</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>40</span> <span>41</span> <span>INSERT</span> <span>INTO</span> DBCCResult <span>EXEC</span> (<span>'</span><span>DBCC IND(practice,Department,-1) </span><span>'</span><span>) </span><span>42</span> <span>43</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>PageType</span><span>]</span> <span>DESC</span> <span>44</span> <span>45</span> <span>DBCC</span> TRACEON(<span>3604</span>,<span>-</span><span>1</span><span>) </span><span>46</span> <span>GO</span> <span>47</span> <span>DBCC</span> PAGE(practice,<span>1</span>,<span>114</span>,<span>3</span><span>) </span><span>48</span> <span>GO</span> <span>49</span> <span>50</span> <span>select</span> <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>from</span><span> Department </span><span>51</span> <span>52</span> <span>53</span> <span>54</span> <span>55</span> <span>56</span> <span>57</span> <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> <span>SERIALIZABLE</span> <span>58</span> <span>GO</span> <span>59</span> <span>BEGIN</span> <span>TRANSACTION</span> <span>60</span> <span>SELECT</span> DepartmentID <span>FROM</span> Department <span>WHERE</span> DepartmentID <span>BETWEEN</span> <span>0</span> <span>AND</span> <span>122</span> <span>61</span> <span>--</span><span>COMMIT TRAN</span> <span>62</span> <span>63</span> <span>SELECT</span><span> resource_type , </span><span>64</span> <span> resource_database_id , </span><span>65</span> <span> resource_description , </span><span>66</span> <span> resource_associated_entity_id , </span><span>67</span> <span> request_mode , </span><span>68</span> <span> request_type , </span><span>69</span> <span> request_status </span><span>70</span> <span>FROM</span><span> sys.dm_tran_locks </span><span>71</span> <span>WHERE</span> <span>[</span><span>resource_database_id</span><span>]</span><span>=</span><span>DB_ID</span>(<span>'</span><span>practice</span><span>'</span><span>) </span><span>72</span> <span>AND</span> <span>[</span><span>resource_description</span><span>]</span> <span>LIKE</span> <span>'</span><span>%b03b%</span><span>'</span> <span>73</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>resource_type</span><span>]</span>View Code
我做了一个大胆的假设:其实聚集索引页面的keyhashvalue是没有用的!!!
原因一:
如果把刚才的脚本在SQL2012下运行,你会发现聚集索引的KeyHashValue列全部为NULL
原因二:
就是我上面的测试脚本,无论我select还是update,DepartmentID BETWEEN 0 AND 122之间
使用sys.dm_tran_locks视图来查询,发现resource_description字段都没有显示聚集索引页面的keyhashvalue,只显示数据页面
的KeyHashValue
原因三:
就是昨天跟高文佳童鞋讨论的时候,他也发现了有时候在聚集索引里也会看到KeyHashValue列全部为NULL
我之前在SQLSERVER2005下也测试过,确实是这样
SQLSERVER中KeyHashValue的作用(上)
原因四:
可能为了不改动代码,原先SQLSERVER团队设计的时候只需要非聚集索引有KeyHashValue就可以了,而聚集索引不需要KeyHashValue的
但是如果是这样,为了减少改动,不写两套代码,或者为了某种兼容性(与前面版本兼容),而不删除聚集索引的KeyHashValue
非聚集索引
非聚集索引表的非聚集索引页有KeyHashValue,但是数据页是没有KeyHashValue的
创建非聚集索引,这里我也是指定唯一的
脚本:
<span> 1</span> <span>--</span><span>测试非聚集索引</span> <span> 2</span> <span>USE</span> <span>[</span><span>testhashkey</span><span>]</span> <span> 3</span> <span>GO</span> <span> 4</span> <span>CREATE</span> <span>TABLE</span><span> testnoncluster </span><span> 5</span> <span> ( </span><span> 6</span> a <span>NVARCHAR</span>(<span>3800</span>) <span>NOT</span> <span>NULL</span><span> , </span><span> 7</span> b <span>INT</span> <span>NOT</span> <span>NULL</span> <span> 8</span> <span> ) </span><span> 9</span> <span>GO</span> <span>10</span> <span>11</span> <span>CREATE</span> <span>UNIQUE</span> <span>NONCLUSTERED</span> <span>INDEX</span> ucil <span>ON</span><span> testnoncluster(b) </span><span>12</span> <span>GO</span> <span>13</span> <span>14</span> <span>INSERT</span><span> testnoncluster </span><span>15</span> <span>SELECT</span> <span>CAST</span>(<span>11</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>1</span> <span>UNION</span> <span>ALL</span> <span>16</span> <span>SELECT</span> <span>CAST</span>(<span>22</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>2</span> <span>17</span> <span>18</span> <span>19</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>testnoncluster</span><span>]</span>View Code
查看表情况的脚本
<span> 1</span> <span>TRUNCATE</span> <span>TABLE</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span> 2</span> <span> 3</span> <span>INSERT</span> <span>INTO</span> DBCCResult <span>EXEC</span> (<span>'</span><span>DBCC IND(testhashkey,testnoncluster,-1) </span><span>'</span><span>) </span><span> 4</span> <span> 5</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>PageType</span><span>]</span> <span>DESC</span> <span> 6</span> <span> 7</span> <span>DBCC</span> TRACEON(<span>3604</span>,<span>-</span><span>1</span><span>) </span><span> 8</span> <span>GO</span> <span> 9</span> <span>DBCC</span> PAGE(testhashkey,<span>1</span>,<span>77</span>,<span>3</span><span>) </span><span>10</span> <span>GO</span>View Code
非聚集索引页面
我们看一下表中的每行记录的所产生的keyhashvalue
<span>1</span> <span>select</span> <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>from</span> testnoncluster
大家可以看到,这里只显示了行记录的FID:PID:RID,并没有显示keyhashvalue
我们使用下面语句进行测试,查看SQLSERVER锁定的资源
<span> 1</span> <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> <span>SERIALIZABLE</span> <span> 2</span> <span>GO</span> <span> 3</span> <span>BEGIN</span> <span>TRANSACTION</span> <span> 4</span> <span>SELECT</span> b <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>testnoncluster</span><span>]</span> <span>WHERE</span> <span>[</span><span>b</span><span>]</span><span>=</span><span>1</span> <span> 5</span> <span>--</span><span>COMMIT TRAN</span> <span> 6</span> <span> 7</span> <span>SELECT</span><span> resource_type , </span><span> 8</span> <span> resource_database_id , </span><span> 9</span> <span> resource_description , </span><span>10</span> <span> resource_associated_entity_id , </span><span>11</span> <span> request_mode , </span><span>12</span> <span> request_type , </span><span>13</span> <span> request_status </span><span>14</span> <span>FROM</span><span> sys.dm_tran_locks </span><span>15</span> <span>WHERE</span> <span>[</span><span>resource_database_id</span><span>]</span><span>=</span><span>DB_ID</span>(<span>'</span><span>testhashkey</span><span>'</span><span>) </span><span>16</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>resource_type</span><span>]</span>View Code
我们使用下面脚本创建一个非聚集索引表testnoncluster2
<span> 1</span> <span>--</span><span>测试堆表和非聚集索引表的数据页也有keyhashvalue</span> <span> 2</span> <span>USE</span> <span>[</span><span>testhashkey</span><span>]</span> <span> 3</span> <span>GO</span> <span> 4</span> <span> 5</span> <span> 6</span> <span>CREATE</span> <span>TABLE</span><span> testnoncluster2 </span><span> 7</span> <span> ( </span><span> 8</span> a <span>NVARCHAR</span>(<span>3800</span>) <span>NOT</span> <span>NULL</span><span> , </span><span> 9</span> b <span>INT</span> <span>NOT</span> <span>NULL</span><span>, </span><span>10</span> c <span>INT</span> <span>NOT</span> <span>NULL</span> <span>11</span> <span> ) </span><span>12</span> <span>GO</span> <span>13</span> <span>14</span> <span>15</span> <span>16</span> <span>CREATE</span> <span>UNIQUE</span> <span>NONCLUSTERED</span> <span>INDEX</span> ucil <span>ON</span><span> testnoncluster2(b) </span><span>17</span> <span>GO</span> <span>18</span> <span>19</span> <span>INSERT</span><span> testnoncluster2 </span><span>20</span> <span>SELECT</span> <span>CAST</span>(<span>11</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>1</span>,<span>1</span> <span>UNION</span> <span>ALL</span> <span>21</span> <span>SELECT</span> <span>CAST</span>(<span>22</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>2</span>,<span>2</span> <span>22</span> <span>23</span> <span>24</span> <span>25</span> <span>SET</span> <span>TRANSACTION</span> <span>ISOLATION</span> <span>LEVEL</span> <span>SERIALIZABLE</span> <span>26</span> <span>GO</span> <span>27</span> <span>BEGIN</span> <span>TRANSACTION</span> <span>28</span> <span>DELETE</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>testnoncluster2</span><span>]</span> <span>WHERE</span> <span>[</span><span>c</span><span>]</span><span>=</span><span>1</span> <span>29</span> <span>--</span><span>ROLLBACK TRAN</span> <span>30</span> <span>31</span> <span>SELECT</span><span> resource_type , </span><span>32</span> <span> resource_database_id , </span><span>33</span> <span> resource_description , </span><span>34</span> <span> resource_associated_entity_id , </span><span>35</span> <span> request_mode , </span><span>36</span> <span> request_type , </span><span>37</span> <span> request_status </span><span>38</span> <span>FROM</span><span> sys.dm_tran_locks </span><span>39</span> <span>WHERE</span> <span>[</span><span>resource_database_id</span><span>]</span><span>=</span><span>DB_ID</span>(<span>'</span><span>testhashkey</span><span>'</span><span>) </span><span>40</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>resource_type</span><span>]</span> <span>41</span> <span>42</span> <span>43</span> <span>44</span> <span>45</span> <span>select</span> <span>%%</span>lockres<span>%%</span> <span>AS</span> <span>'</span><span>数据页的keyhashvalue</span><span>'</span> <span>from</span> testnoncluster2View Code
这次删除非聚集索引表的一行
为了保证我的结论的正确性,我在SQLSERVER2012里也用上面的脚本测试了一下,创建了表testnoncluster2
脚本:
<span> 1</span> <span>--</span><span>测试堆表和非聚集索引表的数据页也有keyhashvalue</span> <span> 2</span> <span>USE</span> <span>[</span><span>testhashkey</span><span>]</span> <span> 3</span> <span>GO</span> <span> 4</span> <span> 5</span> <span> 6</span> <span> 7</span> <span>CREATE</span> <span>TABLE</span><span> testnoncluster2 </span><span> 8</span> <span> ( </span><span> 9</span> a <span>NVARCHAR</span>(<span>3800</span>) <span>NOT</span> <span>NULL</span><span> , </span><span>10</span> b <span>INT</span> <span>NOT</span> <span>NULL</span><span>, </span><span>11</span> c <span>INT</span> <span>NOT</span> <span>NULL</span> <span>12</span> <span> ) </span><span>13</span> <span>GO</span> <span>14</span> <span>15</span> <span>16</span> <span>17</span> <span>CREATE</span> <span>UNIQUE</span> <span>NONCLUSTERED</span> <span>INDEX</span> ucil <span>ON</span><span> testnoncluster2(b) </span><span>18</span> <span>GO</span> <span>19</span> <span>20</span> <span>INSERT</span><span> testnoncluster2 </span><span>21</span> <span>SELECT</span> <span>CAST</span>(<span>11</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>1</span>,<span>1</span> <span>UNION</span> <span>ALL</span> <span>22</span> <span>SELECT</span> <span>CAST</span>(<span>22</span> <span>AS</span> <span>VARCHAR</span>(<span>10</span>))<span>+</span><span>replicate</span>(<span>'</span><span>a</span><span>'</span>, <span>3500</span>),<span>2</span>,<span>2</span> <span>23</span> <span>24</span> <span>25</span> <span>26</span> <span>27</span> <span>28</span> <span>TRUNCATE</span> <span>TABLE</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>29</span> <span>30</span> <span>INSERT</span> <span>INTO</span> DBCCResult <span>EXEC</span> (<span>'</span><span>DBCC IND(testhashkey,testnoncluster2,-1) </span><span>'</span><span>) </span><span>31</span> <span>32</span> <span>SELECT</span> <span>*</span> <span>FROM</span> <span>[</span><span>dbo</span><span>]</span>.<span>[</span><span>DBCCResult</span><span>]</span> <span>ORDER</span> <span>BY</span> <span>[</span><span>PageType</span><span>]</span> <span>DESC</span> <span>33</span> <span>34</span> <span>DBCC</span> TRACEON(<span>3604</span>,<span>-</span><span>1</span><span>) </span><span>35</span> <span>GO</span> <span>36</span> <span>DBCC</span> PAGE(testhashkey,<span>1</span>,<span>165</span>,<span>3</span><span>) </span><span>37</span> <span>GO</span>View Code
数据页面165
<span> 1</span> <span>DBCC</span> 执行完毕。如果 <span>DBCC</span><span> 输出了错误信息,请与系统管理员联系。 </span><span> 2</span> <span> 3</span> PAGE: (<span>1</span>:<span>165</span><span>) </span><span> 4</span> <span> 5</span> <span> 6</span> <span>BUFFER: </span><span> 7</span> <span> 8</span> <span> 9</span> BUF <span>@0x049D10A8</span> <span> 10</span> <span> 11</span> bpage <span>=</span> <span>0x14784000</span> bhash <span>=</span> <span>0x00000000</span> bpageno <span>=</span> (<span>1</span>:<span>165</span><span>) </span><span> 12</span> bdbid <span>=</span> <span>7</span> breferences <span>=</span> <span>0</span> bcputicks <span>=</span> <span>0</span> <span> 13</span> bsampleCount <span>=</span> <span>0</span> bUse1 <span>=</span> <span>23721</span> bstat <span>=</span> <span>0xb</span> <span> 14</span> blog <span>=</span> <span>0xdb215acc</span> bnext <span>=</span> <span>0x00000000</span> <span> 15</span> <span> 16</span> <span>PAGE HEADER: </span><span> 17</span> <span> 18</span> <span> 19</span> Page <span>@0x14784000</span> <span> 20</span> <span> 21</span> m_pageId <span>=</span> (<span>1</span>:<span>165</span>) m_headerVersion <span>=</span> <span>1</span> m_type <span>=</span> <span>1</span> <span> 22</span> m_typeFlagBits <span>=</span> <span>0x0</span> m_level <span>=</span> <span>0</span> m_flagBits <span>=</span> <span>0x8000</span> <span> 23</span> m_objId (AllocUnitId.idObj) <span>=</span> <span>90</span> m_indexId (AllocUnitId.idInd) <span>=</span> <span>256</span> <span> 24</span> Metadata: AllocUnitId <span>=</span> <span>72057594043826176</span> <span> 25</span> Metadata: PartitionId <span>=</span> <span>72057594039238656</span> Metadata: IndexId <span>=</span> <span>0</span> <span> 26</span> Metadata: ObjectId <span>=</span> <span>629577281</span> m_prevPage <span>=</span> (<span>0</span>:<span>0</span>) m_nextPage <span>=</span> (<span>0</span>:<span>0</span><span>) </span><span> 27</span> pminlen <span>=</span> <span>12</span> m_slotCnt <span>=</span> <span>1</span> m_freeCnt <span>=</span> <span>1071</span> <span> 28</span> m_freeData <span>=</span> <span>7119</span> m_reservedCnt <span>=</span> <span>0</span> m_lsn <span>=</span> (<span>35</span>:<span>211</span>:<span>62</span><span>) </span><span> 29</span> m_xactReserved <span>=</span> <span>0</span> m_xdesId <span>=</span> (<span>0</span>:<span>0</span>) m_ghostRecCnt <span>=</span> <span>0</span> <span> 30</span> m_tornBits <span>=</span> <span>0</span> DB Frag ID <span>=</span> <span>1</span> <span> 31</span> <span> 32</span> <span>Allocation Status </span><span> 33</span> <span> 34</span> GAM (<span>1</span>:<span>2</span>) <span>=</span> ALLOCATED SGAM (<span>1</span>:<span>3</span>) <span>=</span><span> ALLOCATED </span><span> 35</span> PFS (<span>1</span>:<span>1</span>) <span>=</span> <span>0x63</span> MIXED_EXT ALLOCATED 95_PCT_FULL DIFF (<span>1</span>:<span>6</span>) <span>=</span><span> CHANGED </span><span> 36</span> ML (<span>1</span>:<span>7</span>) <span>=</span> <span>NOT</span><span> MIN_LOGGED </span><span> 37</span> <span> 38</span> Slot <span>0</span> Offset <span>0x60</span> Length <span>7023</span> <span> 39</span> <span> 40</span> Record Type <span>=</span> PRIMARY_RECORD Record Attributes <span>=</span><span> NULL_BITMAP VARIABLE_COLUMNS </span><span> 41</span> Record Size <span>=</span> <span>7023</span> <span> 42</span> Memory <span>Dump</span> <span>@0x0FB7C060</span> <span> 43</span> <span> 44</span> <span>00000000</span>: 30000c00 <span>01000000</span> <span>01000000</span> <span>03000001</span> 006f1b31 <span>0</span>................o.<span>1</span> <span> 45</span> <span>00000014</span>: <span>00310061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> .<span>1</span><span>.a.a.a.a.a.a.a.a.a </span><span> 46</span> <span>00000028</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 47</span> 0000003C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 48</span> <span>00000050</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 49</span> <span>00000064</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 50</span> <span>00000078</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 51</span> 0000008C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 52</span> 000000A0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 53</span> 000000B4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 54</span> 000000C8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 55</span> 000000DC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 56</span> 000000F0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 57</span> <span>00000104</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 58</span> <span>00000118</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 59</span> 0000012C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 60</span> <span>00000140</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 61</span> <span>00000154</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 62</span> <span>00000168</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 63</span> 0000017C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 64</span> <span>00000190</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 65</span> 000001A4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 66</span> 000001B8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 67</span> 000001CC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 68</span> 000001E0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 69</span> 000001F4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 70</span> <span>00000208</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 71</span> 0000021C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 72</span> <span>00000230</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 73</span> <span>00000244</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 74</span> <span>00000258</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 75</span> 0000026C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 76</span> <span>00000280</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 77</span> <span>00000294</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 78</span> 000002A8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 79</span> 000002BC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 80</span> 000002D0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 81</span> 000002E4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 82</span> 000002F8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 83</span> 0000030C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 84</span> <span>00000320</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 85</span> <span>00000334</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 86</span> <span>00000348</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 87</span> 0000035C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 88</span> <span>00000370</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 89</span> <span>00000384</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 90</span> <span>00000398</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 91</span> 000003AC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 92</span> 000003C0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 93</span> 000003D4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 94</span> 000003E8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 95</span> 000003FC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 96</span> <span>00000410</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 97</span> <span>00000424</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 98</span> <span>00000438</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span> 99</span> 0000044C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>100</span> <span>00000460</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>101</span> <span>00000474</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>102</span> <span>00000488</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>103</span> 0000049C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>104</span> 000004B0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>105</span> 000004C4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>106</span> 000004D8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>107</span> 000004EC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>108</span> <span>00000500</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>109</span> <span>00000514</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>110</span> <span>00000528</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>111</span> 0000053C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>112</span> <span>00000550</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>113</span> <span>00000564</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>114</span> <span>00000578</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>115</span> 0000058C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>116</span> 000005A0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>117</span> 000005B4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>118</span> 000005C8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>119</span> 000005DC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>120</span> 000005F0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>121</span> <span>00000604</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>122</span> <span>00000618</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>123</span> 0000062C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>124</span> <span>00000640</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>125</span> <span>00000654</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>126</span> <span>00000668</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>127</span> 0000067C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>128</span> <span>00000690</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>129</span> 000006A4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>130</span> 000006B8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>131</span> 000006CC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>132</span> 000006E0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>133</span> 000006F4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>134</span> <span>00000708</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>135</span> 0000071C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>136</span> <span>00000730</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>137</span> <span>00000744</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>138</span> <span>00000758</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>139</span> 0000076C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>140</span> <span>00000780</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>141</span> <span>00000794</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>142</span> 000007A8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>143</span> 000007BC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>144</span> 000007D0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>145</span> 000007E4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>146</span> 000007F8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>147</span> 0000080C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>148</span> <span>00000820</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>149</span> <span>00000834</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>150</span> <span>00000848</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>151</span> 0000085C: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>152</span> <span>00000870</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>153</span> <span>00000884</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>154</span> <span>00000898</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>155</span> 000008AC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>156</span> 000008C0: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>157</span> 000008D4: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>158</span> 000008E8: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>159</span> 000008FC: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>160</span> <span>00000910</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>161</span> <span>00000924</span>: <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span> <span>00610061</span><span> .a.a.a.a.a.a.a.a.a.a </span><span>162</span> <span>00000938</span>: <span>00610061</span> <span>00610061</span>

对于 SQL Server 数据库中已存在同名对象,需要采取以下步骤:确认对象类型(表、视图、存储过程)。如果对象为空,可使用 IF NOT EXISTS 跳过创建。如果对象有数据,使用不同名称或修改结构。使用 DROP 删除现有对象(谨慎操作,建议备份)。检查架构更改,确保没有引用删除或重命名的对象。

当 SQL Server 服务无法启动时,可采取以下步骤解决:检查错误日志以确定根本原因。确保服务帐户具有启动服务的权限。检查依赖项服务是否正在运行。禁用防病毒软件。修复 SQL Server 安装。如果修复不起作用,重新安装 SQL Server。

要查看 SQL Server 端口号:打开 SSMS,连接到服务器。在对象资源管理器中找到服务器名称,右键单击它,然后选择“属性”。在“连接”选项卡中,查看“TCP 端口”字段。

SQL Server 数据库文件通常存储在以下默认位置:Windows: C:\Program Files\Microsoft SQL Server\MSSQL\DATALinux: /var/opt/mssql/data可通过修改数据库文件路径设置来自定义数据库文件位置。

问题发现这次使用的是SqlServer数据库,之前并没有使用过,但是问题不大,我按照需求文档的步骤连接好SqlServer之后,启动SpringBoot项目,发现了一个报错,如下:刚开始我以为是SqlServer连接问题呢,于是便去查看数据库,发现数据库一切正常,我首先第一时间问了我的同事,他们是否有这样的问题,发现他们并没有,于是我便开始了我最拿手的环节,面向百度编程。开始解决具体报错信息是这样,于是我便开始了百度报错:ERRORc.a.d.p.DruidDataSource$CreateCo

SQL Server 英文安装可通过以下步骤更改为中文:下载相应语言包;停止 SQL Server 服务;安装语言包;更改实例语言;更改用户界面语言;重启应用程序。

有网友反馈,在win11上无法安装sqlserver这款软件,不知道是怎么回事,根据目前的测试来看,win11存在硬盘问题,部分接口硬盘无法安装这款软件。win11为啥不能安装sqlserver:答:win11不能安装sqlserver是硬盘的问题。1、据了解,win11存在对于硬盘的检测bug。2、这导致sqlserver无法在“三星m.2接口”硬盘上安装。3、因此,如果我们要安装的话,需要准备一块其他硬盘。4、然后将该硬盘安装到电脑里,如果没有额外插槽的话就要换掉之前的硬盘。5、安装完成后,

可以通过以下步骤查询 SQL Server 数据库日志:1. 打开 SQL Server Management Studio,连接到数据库服务器;2. 展开“管理”节点,导航到“SQL Server 日志”;3. 选择要查询的日志文件,右键单击并选择“查看日志文件”;4. 浏览日志记录。其他查询日志方法:使用 Transact-SQL 查询、PowerShell Cmdlet。


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

SublimeText3 English version
Recommended: Win version, supports code prompts!

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment
