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

 

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

你可能感兴趣的:(sql中压缩日志文件和ntextl转化为varchar的处理(downmoon))