SQL SERVER 2008 ÐÂÊý¾Ý¿âÀàÐÍhierarchyid
/*
--2010-05-27(¶«Éý)
SQL SERVER 2008 ÐÂÊý¾Ý¿âÀàÐÍhierarchyid
SQL SERVER 2008ÒýÈëÁËеÄhierarchyidÊý¾ÝÀàÐÍ,¿ÉÒÔÓÃËüÀ´×ö±¾µØ´æ´¢²¢ÇÒÔÚÊ÷²ã´Î
½á¹¹ÖйÜÀíÆäλÖÃ.Ö»ÓÃÕâ¸öº¯ÊýÄܼò½àµØ±íʾ²ã´Î½á¹¹ÖеÄλÖÃ.¸Ãº¯ÊýÌṩµÄһЩÄÚÖõĺ¯
Êý·½·¨¿ÉÒÔ²Ù×÷ºÍ±éÀú²ã´Î½á¹¹,ʹµÃ´æ´¢ºÍ²éѯ·Ö²ãÊý¾Ý¸üΪÈÝÒ×,¶ø²»ÐèÒªÏñÄÇÑùͨ¹ý
CTEµÝ¹éÀ´»ñµÃ.
¸ÃÀàÐÍÆäʵÊÇÒ»¸öCLR×Ô¶¨ÒåÊý¾ÝÀàÐÍÒÀ´Î´ò¿ª:Êý¾Ý¿â->ϵͳÊý¾Ý¿â->master->¿É±à³ÌÐÔ
->ÀàÐÍ->ϵͳÊý¾ÝÀàÐÍ->CLRÊý¾ÝÀàÐÍ->hierarchyid,¿ÉÒÔ¿´µ½¸ÃÊý¾ÝÀàÐÍ.
ÓÚhierarchyidÓйصÄһЩº¯ÊýÖ÷ÒªÓÐ:
GetAncestor £ºÈ¡µÃijһ¸ö¼¶±ðµÄ׿ÏÈ
GetDescendant £ºÈ¡µÃijһ¸ö¼¶±ðµÄ×Ó´ú
GetLevel £ºÈ¡µÃ¼¶±ð
GetRoot £ºÈ¡µÃ¸ù
IsDescendantOf £ºÅжÏij¸ö½ÚµãÊÇ·ñΪij¸ö½ÚµãµÄ×Ó´ú
Parse £º½«×Ö·û´®×ª»»Îªhierarchyid¡£¸Ã×Ö·û´®µÄ¸ñʽͨ³£¶¼ÊÇ/1/ÕâÑùµÄ
Read £ºRead ´Ó´«ÈëµÄBinaryReader ¶ÁÈ¡SqlHierarchyId µÄ¶þ½øÖƱíʾÐÎʽ£¬²¢½«
SqlHierarchyId ¶ÔÏóÉèÖÃΪ¸ÃÖµ¡£²»ÄÜʹÓÃTransact-SQL µ÷ÓÃRead¡£Çë¸Ä
ΪʹÓÃCAST »òCONVERT¡£
GetReparentedValue £º¿ÉÒÔÓÃÀ´Òƶ¯½Úµã£¨»òÕß×ÓÊ÷£©
ToString £º½«hierarchyidת»»Îª×Ö·û´®£¬ÓëparseÕýºÃÏà·´
Write : ½«SqlHierarchyId µÄ¶þ½øÖƱíʾÐÎʽд³öµ½´«ÈëµÄBinaryWriter ÖС£ÎÞ·¨Í¨
¹ýʹÓÃTransact-SQL À´µ÷ÓÃWrite¡£Çë¸ÄΪʹÓÃCAST »òCONVERT¡£
ÒÔϾ͸ÃÐÂÀàÐÍ×öһЩÑÝʾ
*/
USE TESTDB
GO
CREATE TABLE TEST(
[PHASE] hierarchyid NOT NULL,
 
Ïà¹ØÎĵµ£º
Èç¹ûûÓÐÔ¶³ÌÊý¾Ý¿âËùÔÚ·þÎñÆ÷µÄwindowsÕ˺ÅÃÜÂ룬½öÓÐÔ¶³ÌSQL ServerÊý¾Ý¿âµÄÓû§ÃÜÂ룬¸ÃÈçºÎ±¸·ÝÔ¶³ÌÊý¾Ý¿âdb1µÄÊý¾Ýµ½±¾µØÄØ£¿
1£ºÔÚ±¾µØ°²×°Í¨°æ±¾µÄÊý¾Ý¿âÈí¼þ£¨±ÈÈ磺SQL Server2000£©
2£ºÔÚ±¾µØÊý¾Ý¿â·þÎñÆ÷ÉÏ´´½¨Êý¾Ý¿âdb2£»
3£ºÊ¹Óñ¾µØ“ÆóÒµ¹ÜÀíÆ÷”×¢²áÔ¶³ÌÊý¾Ý¿â£¬²¢½ ......
×î½üÔÚÒ»¸öÏîÄ¿ÖÐÓöµ½ÐèÒªÔÚÊý¾Ý²ã¾ÍÆ´½Ó±íÖÐÒ»ÁÐÊý¾ÝµÄÎÊÌâ¡£
ÀýÈ磬test±íÖÐÓиö×Ö¶Ît,tÁÐÖеÄ4ÐÐÊý¾ÝΪ1,2,3,4 £¬ÒªÆ´½Ó³É1+2+3+4£¬×ÁÄ¥ÁËÒ»Õ󣬱¾À´ÏëÓÃÓα꣬µ«ÊÇЧÂÊ¡£¡£ºóÀ´ÕÒµ½Ò»¶ÎSQL£¬¿ÉÒԺܷ½±ãµØÆ´½Ó¡£
DECLARE @STR VARCHAR(8000) ----¶¨Òå²éѯ×Ö·û´®
SELECT @STR=ISNULL(@STR+'+','')+t from (SELECT DIST ......
ÔÚSQL Server2000ÖУ¬Ò»¸öÊý¾Ý¿âµÄÈÕÖ¾ÊÇÒÔ*.ldf Îļþ´æ·Å,ÇëÎÊÎÒÏë²é¿´Ä³Ò»¸öÊý¾Ý¿âµÄÈÕÖ¾,¸ÃÈçºÎ²Ù×÷.
·½·¨1¡¢
DBCC LOG('DatabaseName',2)
·½·¨2:
select * from ::fn_dblog(default,default)
·½·¨3
ÓÃLog Explorer ......
--±¸·ÝÊÂÎñÈÕÖ¾ (×ÔÉÏÒ»´Î±¸·ÝÒÔÀ´£¬ÖÁµ±Ç°µÄÒÑÍê³ÉµÄÊÂÎñµÄÈÕÖ¾)
backup log MyDBName to disk='F:\dbbak\GamePoint\MyDBName_log_2010052709.bak';
--½Ø¶ÏÈÕÖ¾(½Ø¶Ïµôµ±Ç°µÄÒÑÍê³ÉµÄÊÂÎñµÄÈÕÖ¾), SQL Server 2005, 2008ûÓÐÕâ¸öÑ¡Ïî.
backup log MyDBName with no_Log;
--ÊÕËõÈÕÖ¾(ÖÁ1M,µ ......