Sql-Server

FILESTREAM 和設置文件路徑的區別

  • November 1, 2019

我想我知道這些情況的基本情況。

1)當您將.PDF文件插入數據庫時,它將在.MDF文件內:

INSERT INTO normal_table(id ,nome_arquivo,arquivo)
SELECT 1,'File_name',bulkcolumn
FROM OPENROWSET(BULK N'C:\Users\yeah\Desktop\something.pdf',SINGLE_BLOB) AS ImageSource

2)當你創建一個文件流數據庫時,你將使用一些文件夾,在一些驅動程序中,分配插入的文件,然後我可以將文件夾設置在另一個有更多空間的磁碟中:

use  Archive 
ON
PRIMARY ( NAME = Arch1,
   FILENAME = 'E:\Filestream_patch\archdat1.mdf'),
FILEGROUP FileStreamGroup1 CONTAINS FILESTREAM( NAME = Arch3,
   FILENAME = 'E:\Filestream_patch\filestream1')
LOG ON  ( NAME = Archlog1,
   FILENAME = 'E:\Filestream_patch\archlog1.ldf')
GO

CREATE TABLE [dbo].[FS_Table]
(
[Id] [int] IDENTITY(1,1) NOT NULL,
[UI] UNIQUEIDENTIFIER ROWGUIDCOL NOT NULL UNIQUE,
[FS_Data] [varbinary](max) FILESTREAM NULL
)

Use Archive
GO
INSERT INTO [dbo].[FS_Table] ( UI, FS_Data)
VALUES (
NEWID()
,(SELECT * FROM OPENROWSET(BULK N'C:\Users\yeah\Desktop\something.pdf', SINGLE_BLOB) AS Image001)
);
GO

但是對於使用類似的東西的開發人員,將 a 設置path為文件,然後在 c# 程式碼中使用它呢?

CREATE TABLE Example
( id int, file_path varchar(500))

使用這種path策略和文件流有什麼區別?我如何評估這種情況,知道什麼對公司更好?

如果您備份託管“範例”表的數據庫,則您備份了字元串c:\asohdo\ash\file.pdf指向您的 pdf 文件),但您沒有備份實際的 PDF 文件。

FILESTREAM 數據包含在您的數據庫備份中(除非您明確排除它)。

查看FILESTREAM概述了解更多資訊

引用自:https://dba.stackexchange.com/questions/187169