为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
SQL Server

 

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消