现在的位置: 首页 > 综合 > 正文

sql中压缩日志文件和ntextl转化为varchar的处理(downmoon)

2013年05月07日 ⁄ 综合 ⁄ 共 1201字 ⁄ 字号 评论关闭

 

1、清空数据库日志

--
清空日志


DUMP
 
TRANSACTION
 库名 
WITH
 NO_LOG


--
截断事务日志


BACKUP
 
LOG
 数据库名 
WITH
 NO_LOG


--
收缩数据库


DBCC
 SHRINKDATABASE(数据库名)

2、使用ntext型字段

--
B. 返回文本数据


--

下例从 pub_info 表中选择 pub_id 列和 pr_info 列的 16 字节文本指针。




USE
 pubs

GO


SELECT
 pub_id, 
TEXTPTR
(pr_info)

FROM
 pub_info

ORDER
 
BY
 pub_id

GO



--
下例显示如何在不使用 TEXTPTR 的情况下返回文本的前 8,000 个字节。





USE
 pubs

GO


SET
 
TEXTSIZE
 
8000


SELECT
 pub_id, pr_info

FROM
 pub_info

ORDER
 
BY
 pub_id

GO



--
 --  DECLARE   @ptr   binary(16)  


--

 -- 


--

 -- -- select max(DATALENGTH(p_singleintro)) from ProductInfo 


--

 -- -- group by P_ID


--

 -- select @ptr=TEXTPTR(p_singleintro)  from ProductInfo 


--

 -- --  where p_id=128





--
 C、ntext变量和varchar变量如何相加


 
--
ntext可以很大,而varchar最大8000个英文字符,当ntext很大时    


 
--
 把ntext转化为varchar可能会把ntext截断而发生数据丢失,我的做法是使用updatetext,例如:  


  
DECLARE
   
@ptr
   
binary
(
16
)  

  

DECLARE
   
@val
   
varchar
(
100
)  

  

SET
   
@val
   
=
   
'
abcdefg
'
  

  

SELECT
   
@ptr
   
=
   
TEXTPTR
(p_intro)    

  

FROM
   ProductInfo  

  

WHERE
   p_id
=
128
  

  

--
注:p_intro(备注)是表ProductInfo中的一个ntext列,p_id是ProductInfo的主键  


   

  

UPDATETEXT
   ProductInfo.p_intro   
@ptr
   
0
   
0
   
@val
    

  

--
注:这是把@val插入到p_intro列值的开头  


  
--
或者  


  
UPDATETEXT
   ProductInfo.p_intro   
@ptr
   
null
   
0
   
@val
  

  

--
注:这是把@val追加到p_intro列值的末尾  


   

  

--
上述方法变相的实现了ntext和varchar的相加,结果类型是ntext



抱歉!评论已关闭.