sql-server - 导出 blob 需要哪些权限
问题描述
我将二进制数据导入 SQL Server 2012 Express。这行得通。
但我无法将其导出到硬盘上的文件中。我非常认为对于尝试导出的用户来说,SQL 服务器上的权限不正确或缺失。
我用 blob 数据备份了数据库,将其复制到另一台机器上,脚本按预期工作。在这台开发机器上没有域用户,没有特定用户登录。
所以我的问题是:导出 blob 需要哪些角色、权限等?
在不工作的机器上,我根本没有收到任何错误,似乎一切正常,但没有创建任何文件。文件夹结构将允许创建文件。
我在网上发现了其他用户的类似问题,他们也要求某些权限,但没有得到任何回复。
使用的脚本
DECLARE @ImageData VARBINARY (max);
DECLARE @Path2OutFile NVARCHAR (2000);
DECLARE @Obj INT
SET NOCOUNT ON
SELECT @ImageData = (SELECT PictureData FROM [dbo].[ScanIT_tblProjektbilder] WHERE ID= @PicID);
SET @Path2OutFile = 'C:\Users\michael\Desktop\test.jpg' -- CONCAT(@ImageFolderPath ,'\', @Filename );
BEGIN TRY
EXEC sp_OACreate 'ADODB.Stream' ,@Obj OUTPUT;
EXEC sp_OASetProperty @Obj ,'Type',1;
EXEC sp_OAMethod @Obj,'Open';
EXEC sp_OAMethod @Obj,'Write', NULL, @ImageData;
EXEC sp_OAMethod @Obj,'SaveToFile', NULL, @Path2OutFile, 2;
EXEC sp_OAMethod @Obj,'Close';
EXEC sp_OADestroy @Obj;
END TRY
BEGIN CATCH
EXEC sp_OADestroy @Obj;
END CATCH
解决方案
我发现了问题:似乎 SQL-server 无法导出和写入 C 的任何文件夹:
我在 3 台机器上试过,到处都是同样的问题。当我导出到任何其他本地驱动器时,它可以工作,但不能在 C 上:
现在,我尝试找出如何在 C: 上为某个用户启用写权限。
我想这个用户必须是登录到 SQL 服务器的用户。
推荐阅读
- stored-procedures - Snowflake 使用来自另一个存储过程的参数调用存储过程
- shell - 如何将脚本外壳的结果与applescript一起使用?
- sdk - Facebook Audience Network SDK 错误(编译时错误)
- vba - 从新列访问 vba 数据表
- google-cloud-functions - Node.js 的冷启动
- angular - 带有 Angular 的 bokehjs:导入时出错
- matlab - MATLAB 积分 2 为 2 个数学上等价的表达式返回不同的值
- webrtc - Azure 上的 Coturn 负载均衡
- web - 为已发布二进制文件的公共存储库寻找解决方案,可使用 wget 工具恢复
- laravel - Laravel Lumen 雄辩的左连接返回连接表数据而不是主数据