Nigba miiran alaye diẹ sii yoo wa ninu XML nla ti o nkọ (awọn aworan ipari ni atokọ ti awọn orisun ti o ṣe iranlọwọ fun ọ lati wa nkan naa ati awọn orukọ atọka), ṣugbọn kii ṣe nigbagbogbo.
Ọrọ yii yoo ṣe iranlọwọ fun ọ lati pinnu wọn.
Gbogbo alaye ti o wa nibi wa lori Intanẹẹti ni awọn aye pupọ, o kan pin kaakiri! Mo fẹ lati fi ohun gbogbo papọ - lati DBCC PAGE si hobt_id ati si awọn iṣẹ%% physloc%% ti ko ni iwe-aṣẹ ati %%lockres%% awọn iṣẹ.
Ni akọkọ, jẹ ki a sọrọ nipa awọn iduro lori awọn titiipa PAGE, ati lẹhinna a yoo lọ si awọn titiipa bọtini.
A yoo lo data_file_id ni igbesẹ ti nbọ lati wa orukọ tabili naa. O le nirọrun foju si igbesẹ ti n tẹle, ṣugbọn ti o ba nifẹ si orukọ faili, o le rii nipasẹ ṣiṣe ibeere kan ni aaye aaye data ti o rii, rọpo data_file_id ninu ibeere yii:
USE WideWorldImporters;
GO
SELECT
name,
physical_name
FROM sys.database_files
WHERE file_id = 3;
GO
Ninu aaye data WideWorldImporters eyi jẹ faili ti a pe ni WWI_UserData ati pe Mo ni pada si C:MSSQLDATAWideWorldImporters_UserData.ndf. (Yeee, o mu mi fifi awọn faili sori disk eto! Rara! Iyẹn buruju).
1.3) Gba orukọ ohun lati DBCC PAGE
Bayi a mọ pe oju-iwe #70133 ninu faili data 3 jẹ ti aaye data WorldWideImporters. A le wo awọn akoonu inu oju-iwe yii nipa lilo DBCC PAGE ti ko ni iwe-aṣẹ ati itọpa asia 3604.
Akiyesi: Mo fẹ lati lo DBCC PAGE lori ẹda ti o tun pada lati afẹyinti ni ibikan lori olupin miiran, nitori pe o jẹ ohun ti ko ni iwe-aṣẹ. Ni awọn igba miiran, o le ja si ni a idalẹnu ni a ṣẹda (isunmọ. onitumọ - ọna asopọ, laanu, ko yorisi nibikibi, ṣugbọn idajọ nipasẹ url, a n sọrọ nipa awọn atọka ti a yan).
/* This trace flag makes DBCC PAGE output go to our Messages tab
instead of the SQL Server Error Log file */
DBCC TRACEON (3604);
GO
/* DBCC PAGE (DatabaseName, FileNumber, PageNumber, DumpStyle)*/
DBCC PAGE ('WideWorldImporters',3,70133,2);
GO
Yi lọ nipasẹ awọn abajade, o le wa object_id ati index_id.
O fẹrẹ ṣe! Bayi o le wa tabili ati awọn orukọ atọka nipa lilo ibeere naa:
USE WideWorldImporters;
GO
SELECT
sc.name as schema_name,
so.name as object_name,
si.name as index_name
FROM sys.objects as so
JOIN sys.indexes as si on
so.object_id=si.object_id
JOIN sys.schemas AS sc on
so.schema_id=sc.schema_id
WHERE
so.object_id = 94623380
and si.index_id = 1;
GO
Ati nisisiyi a rii pe idaduro titiipa wa lori itọka PK_Sales_OrderLines ti tabili Sales.OrderLines.
Akiyesi: Ni SQL Server 2014 ati nigbamii, orukọ ohun naa tun le rii ni lilo DMO ti ko ni iwe-aṣẹ sys.dm_db_database_page_allocations. Ṣugbọn o ni lati beere gbogbo oju-iwe ti o wa ninu ibi ipamọ data, eyiti ko dara pupọ fun awọn apoti isura data nla, nitorinaa Mo lo DBCC PAGE.
1.4) Ṣe o ṣee ṣe lati wo data lori oju-iwe ti o dina?
O dara, bẹẹni. Ṣugbọn... ṣe o da ọ loju pe o nilo rẹ gaan?
O lọra paapaa lori awọn tabili kekere. Ṣugbọn o dara pupọ, nitorinaa niwon o ti ka eyi jina… jẹ ki a sọrọ nipa %% physloc%%!
Ni bayi ti a mọ pe a fẹ lati tii oju-iwe naa ni Sales.OrderLines, a le wo gbogbo data ti o wa ninu tabili yii, eyiti o fipamọ sinu faili data #3 ni oju-iwe #70133, ni lilo ibeere yii:
Use WideWorldImporters;
GO
SELECT
sys.fn_PhysLocFormatter (%%physloc%%),
*
FROM Sales.OrderLines (NOLOCK)
WHERE sys.fn_PhysLocFormatter (%%physloc%%) like '(3:70133%'
GO
Bi mo ti sọ, o lọra paapaa lori awọn tabili kekere. Mo ṣafikun NOLOCK si ibeere naa nitori a ko ni iṣeduro pe data ti a fẹ lati wo jẹ deede kanna bi o ti jẹ nigbati a ti rii titiipa - nitorinaa a le ṣe awọn kika idọti lailewu.
Ṣugbọn, yara, ibeere naa da mi pada awọn ila 25 kanna ti ibeere wa ja fun
To nipa awọn titiipa PAGE. Ti a ba n duro de titiipa bọtini kan nko?
2) waitresource=“KỌ́KỌ́: 6:72057594041991168 (ce52f92a058c)” = Database_Id, HOBT_Id (hash magic ti o le sọkuro ni lilo %%lockres%% ti o ba fẹ iyẹn gaan)
Ti ibeere rẹ ba gbiyanju lati tii igbasilẹ kan ninu atọka ati tiipa funrararẹ, o pari pẹlu iru adirẹsi ti o yatọ patapata.
Pipa “6:72057594041991168 (ce52f92a058c)” sinu awọn apakan, a gba:
database_id = 6
hobt_id = 72057594041991168
idan elile = (ce52f92a058c)
2.1) Decrypt database_id
Eleyi ṣiṣẹ gangan kanna bi awọn apẹẹrẹ loke! Wa orukọ data data nipa lilo ibeere:
SELECT
name
FROM sys.databases
WHERE database_id=6;
GO
Ni aaye ti ibi ipamọ data ti o rii, o nilo lati ṣiṣẹ ibeere kan si sys.partitions pẹlu awọn akojọpọ meji ti yoo ṣe iranlọwọ lati pinnu awọn orukọ tabili ati atọka…
USE WideWorldImporters;
GO
SELECT
sc.name as schema_name,
so.name as object_name,
si.name as index_name
FROM sys.partitions AS p
JOIN sys.objects as so on
p.object_id=so.object_id
JOIN sys.indexes as si on
p.index_id=si.index_id and
p.object_id=si.object_id
JOIN sys.schemas AS sc on
so.schema_id=sc.schema_id
WHERE hobt_id = 72057594041991168;
GO
O sọ fun mi pe ibeere naa nduro lori Ohun elo. Awọn orilẹ-ede tiipa ni lilo atọka PK_Application_Countries.
2.3) Bayi idan kekere kan %% lockres%% - ti o ba fẹ wa iru titẹ sii ti o tiipa.
Ti Mo ba fẹ gaan lati mọ iru ọna ti titiipa naa wa, Mo le rii nipa bibeere tabili funrararẹ. A le lo iṣẹ %%lockres%% ti ko ni iwe-aṣẹ lati wa titẹ sii ti o baamu hash idan.
Jọwọ ṣe akiyesi pe ibeere yii yoo ṣayẹwo gbogbo tabili naa, ati lori awọn tabili nla eyi le ma jẹ igbadun rara:
SELECT
*
FROM Application.Countries (NOLOCK)
WHERE %%lockres%% = '(ce52f92a058c)';
GO
Mo fi NOLOCK kun (lori imọran ti Klaus Aschenbrenner lori Twitter) nitori awọn idena le di iṣoro. A kan fẹ lati wo ohun ti o wa ni bayi, kii ṣe ohun ti o wa nigbati idunadura naa bẹrẹ - Emi ko ro pe aitasera data ṣe pataki fun wa.
Voila, igbasilẹ ti a ja fun!
Awọn iyin ati kika siwaju sii
Emi ko ranti ẹni ti o kọkọ ṣapejuwe ọpọlọpọ awọn nkan wọnyi, ṣugbọn nibi ni awọn ifiweranṣẹ meji nipa awọn nkan ti o kere ju ti o ni akọsilẹ ti o le fẹ: