您无权使用批量加载语句错误
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 服务器的权限和角色不够精细。
我正在尝试将图像插入 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 服务器的权限和角色不够精细。