逐步实现SQL Server 2008中的本地文件流
配置SQL Server中的文件流:
- 首先进入SQL Server配置管理器。
- 右键单击QL服务器(SQLEXPRESS)并选择属性。
- 选择文件流选项卡并启用文件流。
在SQL Server 2008中执行以下脚本:
EXEC sp_configure filestream_access_level, 2 RECONFIGURE
创建文件流数据库:
CREATE DATABASE MyFsDb
ON
PRIMARY ( NAME = MyFsDat,
FILENAME = 'c:\data\myfsdat.mdf'),
FILEGROUP MyFsGroup CONTAINS FILESTREAM( NAME = MyFs,
FILENAME = 'c:\data\myfs1')
LOG ON ( NAME = MyFsLog,
FILENAME = 'c:\data\myfslog.ldf')
GO
创建表格:
CREATE TABLE MyFsTable
(
fId INT IDENTITY PRIMARY KEY,
fData VARBINARY(MAX) FILESTREAM NULL,
fName NVARCHAR(300),
RowGuid UNIQUEIDENTIFIER NOT NULL ROWGUIDCOL UNIQUE DEFAULT NEWID()
)
在表中添加数据的步骤如下:
:
ALTER PROCEDURE [dbo].[uspAddFile]
@fData VARBINARY(Max),
@ fName varchar(50),
AS
BEGIN
INSERT INTO MyFsTable (fData, fName, RowGuid) VALUES (@Item, @ItemName, DEFAULT)
END
让我们使用C#在前端向表中添加一些数据:
Public void AddFile()
{
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["connectionstring"].ToString();
con = new System.Data.SqlClient.SqlConnection(connectionString);
cmd = new System.Data.SqlClient.SqlCommand("uspAddFile", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@fData", SqlDbType.Binary).Value = GetByte(TempPath);
cmd.Parameters.Add("@fName", SqlDbType.VarChar).Value = tempFile;
con.Open();
result = cmd.ExecuteNonQuery();
con.Close();
}