
如果你使用SQL Server 2000的主要目的是进行事务处理,你么你应该熟悉SQL的数字数据功能的使用。不过,SQL Server 2000还提供了一些其它功能,你可以用它们来管理一种叫着BLOB(Binary Large Objects,大型二进制对象)的多比特数据类型。
BLOB可以参考大量数值(如保存在文本或者ntext栏中的数据)以及特别长的二进制数据(如图像和数字音频)。
当元素的存储要求超过了SQL所设置的每栏8000个字符时,最好使用text和image数据类型。text和image数据类型的每个对象可以保存多达2GB的二进制数据。
有许多函数和语句可以使用BLOB,如DATALENGTH、PATINDEX、SUBSTRING、TEXTPTR、TEXTVALID、READTEXT、SET TEXTSIZE、UPDATE TEXT和WRITE TEXT。
SQL Server 2000并不在表格栏中保存大段的二进制数据,而是在表格中保存一个16位指针,实际数据则保存在一个单独的数据页中。
BLOB笨重而且影响数据库性能,这一点很值得我们注意。如果有可能的话,我建议你把数据库分解成较小的块。让BOLB难以管理的原因还有:有关栏和数据类型的规则不再适用了。因此,你最好把大的条目分别存储在各自的文件里,然后在数据库中保存这些文件的路径。
当使用BLOB时,你还需要考虑以下几点:
- 由于你不能对BLOG使用常见的选择语句,因此很难检索到它。还有,你不能控制你可能正在检索的大段文本。不过,你可以用READTEXT语句从任何字段中找到特定的文本块。
- 如果你只是想检索一个较小的子字符串,那么使用PATINDEX函数可能比较合适。
- 你可以用UPDATETEXT来修改 BLOB字段的一部分、用WRITETEXT来替代整个字符串的内容。
- 你可以在使用UPDATETEXT和 WRITETEXT时带上WITH LOG,但是默认情况下BLOB的更新是没有日志记录下来的。这就你的交易日志实际上是没有用的,你只有做完全的备份才可以让备份数据有用。
现在,你对BLOB有了全面的认识,你应该对是否依然使用BLOB有了理性的判断。
本文作者J.E.Harvey(获得计算机科学硕士学位和MCDBA认证)从事技术编著工作已逾二十年。