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

Ben*_*ins 8 sql-server ssms

我试图将图像插入VARBINARY(MAX)列.我收到此错误:

您无权使用批量加载语句.

这是我的代码:

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
Run Code Online (Sandbox Code Playgroud)

我意识到这个主题有很多答案,但没有一个对我有用.这个答案对我来说是最简单的,但是当使用对象资源管理器并进入安全>登录>右键单击我的用户时,不会显示要进入的"属性"菜单项.

我正在使用Sql Server Management Studio.也许我没有使用我认为我的SQL Server版本,因为没有一种为我的用户设置权限的编程方法.我想我正在使用SQL Server 2012.我的计算机上可能有几个版本的SQL Server.单击"帮助">"关于",它会在各种组件的版本信息上方显示"Microsoft SQL Server 2012"徽标(此处不显示SQL Server的版本信息).

编辑:也许有人请说出我在insert语句上面使用的确切代码,假设数据库名为MirrorMirror,表称为Stickers,我的用户称为Amber,我的服务器名为gonskh1ou0.database.windows.net .

six*_*ch0 21

要确保您具有使用BULK命令的正确权限,请按照以下说明操作

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

现在,关于你正在使用它的查询是不对的.

用于创建表

CREATE TABLE [dbo].[Stickers] (
        [name] varchar(10)
        , [category] varchar(10)
        , [gender] varchar(1)
        , [imageData] varchar(max)
)
Run Code Online (Sandbox Code Playgroud)

用于插入大值数据

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]
Run Code Online (Sandbox Code Playgroud)

几个笔记:

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

MSDN文章:这里


小智 7

ALTER SERVER ROLE [bulkadmin] ADD MEMBER [user]
Run Code Online (Sandbox Code Playgroud)