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@ptrbinary(16) -- -- -- ----selectmax(DATALENGTH(p_singleintro))fromProductInfo -- ----groupbyP_ID -- --select@ptr=TEXTPTR(p_singleintro)fromProductInfo -- ----wherep_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