您无权使用批量加载语句错误

You do not have permission to use the bulk load statement error

我正在尝试将图像插入 VARBINARY(MAX) 列。我收到此错误:

You do not have permission to use the bulk load statement.

这是我的代码:

INSERT INTO Stickers (Name, Category, Gender, ImageData)
       SELECT   
           'Red Dress',
           'Dress',
           'F',
           BulkColumn FROM OPENROWSET(Bulk '\Mac\Home\Documents\MMImages\reddress.png', 
                                      SINGLE_BLOB) AS BLOB

我知道有很多关于这个主题的答案,但是 none 其中对我有用。 This answer 对我来说是最容易遵循的,但是当使用对象资源管理器并进入安全 > 登录 > 右键单击​​我的用户时,我的用户不会显示要进入的 "properties" 菜单项。

我正在使用 Sql Server Management Studio。也许我没有使用我认为的 SQL 服务器版本,因为 none 为我的用户设置权限的编程方式有效。我想我正在使用 SQL Server 2012。我的计算机上可能有几个版本的 SQL 服务器。点击Help > About,确实会在各个组件的版本信息上方显示标志"Microsoft SQL Server 2012"(此处不显示SQL Server的版本信息)。

编辑:如果数据库名为 MirrorMirror,table 名为 Stickers,我的用户名为Amber,我的服务器名为 gonskh1ou0.database.windows.net.

为确保您拥有使用 BULK 命令的正确权限,请遵循以下内容

  • 展开安全
  • 展开登录
  • 右键单击您的用户名并选择 属性 (出现对话框 window)
  • 选择服务器角色
  • Select bulkadmin 可以使用批量命令或 sysadmin 可以对数据库使用任何命令.

现在,关于您正在使用的查询,它不太正确。

用于创建 table

CREATE TABLE [dbo].[Stickers] (
        [name] varchar(10)
        , [category] varchar(10)
        , [gender] varchar(1)
        , [imageData] varchar(max)
)

用于插入大值数据

INSERT INTO  [dbo].[Stickers] ([name], [category], [gender], [imageData])
SELECT 'Red dress'
        , 'Dress'
        , 'F'
        , photo.*
FROM OPENROWSET(BULK 'C:\Users\username\Desktop\misc-flower-png-55d7744aca416.png', SINGLE_BLOB) [photo]

一些注意事项:

  • 您需要在 FROM 子句 ([photo]) 之后为批量行集设置关联名称
  • 使用已用于关联批量行集的右列前缀(照片。*)
  • 批量插入的列需要设置为varchar(max)

MSDN 文章:here

ALTER SERVER ROLE [bulkadmin] ADD MEMBER [user]

可能有人需要

ALTER ROLE [sysadmin] ADD MEMBER [user]

例如 - 在当前 Linux 版本的 SQL 服务器 bulkadmin 角色不受支持,需要使用系统管理员来批量插入。这是 SQL 服务器 https://github.com/MicrosoftDocs/sql-docs/issues/4198 的一个已知问题 - Linux 上的 SQL 服务器的权限和角色不够精细。