SQL Server 2008 FileStream
FileStream:文件流,为了解决大对象BLOB(Binary Large Objects)的存储问题.对于大对象存储,并且不受2GB的限制.
以往有两种方式:
(1)存储在数据库里面,这种方式一般使用image字段,或者varbinary(max)来做,好处是可以统一备份,但实际效率较低;
(2)存储在文件系统,而数据库中存储文件路径,这种方式数据库压力减轻了,但却不方便统一备份和管理.
SQL SERVER 2008新引入的文件流就是两者的统一.文件还是放在文件系统,但由数据库进行管理,可以统一备份和还原.
如何使用FileStream?
一.启用FileStream
(1)在SQL Server配置管理器中打开SQL Server数据库引擎的属性窗口.
(2)切换到FILESTREAM选项卡,选中"针对Transact-SQL访问启用FILESTREAM",其他选项是针对windows进行读写的,都可以选中.
(3)打开SSMS连接到数据库实例(是实例,不是具体的数据库),右击数据库实例,选择"属性"选项,切换到"高级"选项页,在文件流访问级别下拉列表框中选择"已启用完全访问"
二.初始化环境
(1)添加文件组
ALTER DATABASE [DBName] ADD FILEGROUP [FileGrp1] CONTAINS FILESTREAM
(2)添加存放文件的路径
ALTER DATABASE [DBName] ADD FILE(Name=N'filestream',FILENAME=N'C:\FileStream') TO FILEGROUP [FileGrp1]
系统将自动创建C:\FileStream文件夹并在其中写入filestream.hdr文件,该文件是 FILESTREAM容器的头文件不能删除,一定要确保在运行该语句之前C:\FileStream并不存在。
注意:文件组必须定义在NTFS格式分区下的磁盘,并且需要指向本地文件系统位置上,不允许指向网络地址network addressable storage (NAS),除非通过 iSCSI将NAS设备设置为本地NFS卷
原文(the DBA must define a database filegroup that ties an NTFS file system location to a SQL Server database. Note that the filegroup needs to point to a local file system location; filestreams can't live on a remote server or a network addressable storage (NAS) devices unless the NAS device is presented as a local NFS volume via iSCSI)
如数据库之前从未备份过,在执行以上语句时会提示须先备份LOG
三.模拟测试
(1)建表
CREATE TABLE FileStreamTest
(
ID uniqueidentifier ROWGUID NOT NULL UNIQUE DEFAULT NewID(),
FilesName varbinary(max) FILESTREAM NULL
)
FILESTREAM_ON [FileGrp1] --指示存储到哪一个文件流
*如果一个表要使用文件流,则必须有一
相关文档:
有许多不同类型的数据库管理员。 一些类型的数据库管理员致力于于开发领域,而其他的一部分更重视数据库性能的调整以及仍然有一部分数据库管理员则致力于管理SQL Server的业务。 依据数据库管理员的工作环境不同,他们将执行一定数量的不同的任务。为了区分所有不同的任务,数据库管理员可能要执行我清单上所列的任务。
......
1 防止sql注入式攻击(可用于UI层控制) #region 防止sql注入式攻击(可用于UI层控制)
2
3 /**/ ///
4 /// 判断字符串中是否有SQL攻击代码
5 ///
6 /// 传入用户提交数据
7 /// ......
基于msdn 详细学习T-SQL (http://msdn.microsoft.com/zh-cn/library/bb510741.aspx)
Aggregate function--Sum() Two Sample from msdn
USE AdventureWorks;
GO
SELECT Color, SUM(ListPrice), SUM(StandardCost)
from Production.Product
WHERE Color IS NOT NULL
AND ListPrice != 0.00 ......
创建外键约束
CREATE TABLE order_sample
(
orderid int PRIMARY KEY,
cust_id int FOREIGN KEY REFERENCES cuts_sample(cust_id) ON DELETE NO CASCADE
)
ON DELETE--用于控制尝试删除外键相关联的主表指向行时采取的操作
-NO ACTION
删除外键相关联的主表指向行时,报错
-CASCADE
删除外键相关联的主表指向行时 ......
Declare @T Table(
CFF_Loanno nvarchar(100),
BANK_Name_2 nvarchar(100),
CFF_code nvarchar(100),
CFF_date datetime,
CFF_amt decimal(18, 6),
......