gpt4 book ai didi

sql - 使用 File I/O Api 创建图像后获取 FileTable stream_id

转载 作者:行者123 更新时间:2023-12-04 20:55:56 24 4
gpt4 key购买 nike

我尝试使用 File I/O API 将图像文件插入到 SQL Server FileTable 目录中。我需要获取 stream_id插入图像并将其用作另一个表作为外键。

任何人都可以帮助我,我如何获得创建的图像 stream_id ?

最佳答案

创建文件后,您需要使用 T-SQL 使用新创建的文件路径查询文件表以获取 stream_id .这最好使用唯一的文件表 path_locator 来完成。柱子。

以下是获取唯一 stream_id 的示例存储过程和用法示例。使用相对或完整 UNC 路径的文件。 path_locator文件表具有唯一的约束索引,因此这些查询非常有效。

CREATE DATABASE FileTableExample
ON PRIMARY
( NAME = N'FileTableExample', FILENAME = N'D:\SqlFiles\FileTableExample.mdf' , SIZE = 8192KB , MAXSIZE = UNLIMITED, FILEGROWTH = 10MB ),
FILEGROUP FileStreamFG CONTAINS FILESTREAM DEFAULT
( NAME = N'FileTableExample_FileStream', FILENAME = N'D:\SqlFiles\FileTableExample_FileStreamFG' , MAXSIZE = UNLIMITED)
LOG ON
( NAME = N'FileTableExample_log', FILENAME = N'D:\SqlFiles\FileTableExample_log.ldf' , SIZE = 10MB , MAXSIZE = UNLIMITED, FILEGROWTH = 10MB );
GO

ALTER DATABASE FileTableExample SET FILESTREAM( NON_TRANSACTED_ACCESS = FULL, DIRECTORY_NAME = N'FileTableExample' )
GO

USE FileTableExample;
GO

CREATE TABLE [dbo].[Images] AS FILETABLE ON [PRIMARY] FILESTREAM_ON [FileStreamFG];
WITH
(
FILETABLE_DIRECTORY = N'Images', FILETABLE_COLLATE_FILENAME = SQL_Latin1_General_CP1_CI_AS
);
GO

CREATE PROC dbo.GetStreamIDByRelativePath
@RelativeFilePath nvarchar(MAX)
AS
SELECT stream_id
FROM dbo.Images
WHERE path_locator = GetPathLocator(FileTableRootPath() + @RelativeFilePath);
GO

EXEC dbo.GetStreamIDByRelativePath @RelativeFilePath = N'\Images\YourImageFile.png';
GO

CREATE PROC dbo.GetStreamIDByFullUNCPath
@FullUNCPath nvarchar(MAX)
AS
SELECT stream_id
FROM dbo.Images
WHERE path_locator = GetPathLocator(@FullUNCPath);
GO

EXEC dbo.GetStreamIDByFullUNCPath @FullUNCPath = N'\\YourSqlServer\YourFileStreamShare\YourDatabaseFileSteamDirectory\Images\YourImageFile.png';
GO

关于sql - 使用 File I/O Api 创建图像后获取 FileTable stream_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56504479/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com