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@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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值