我正在尝试使用“批量”将图像插入到 SQL Server 2012 中。但是,最终得到的错误消息是:
Msg 4834, Level 16, State 1, Line 2 您没有使用批量加载语句的权限。
我有“系统管理员”访问权限。
我正在尝试使用“批量”将图像插入到 SQL Server 2012 中。但是,最终得到的错误消息是:
Msg 4834, Level 16, State 1, Line 2 您没有使用批量加载语句的权限。
我有“系统管理员”访问权限。
试试GRANT ADMINISTER BULK OPERATIONS TO [server_login]
。它是服务器级别的权限,而不是数据库级别的权限。这在过去为我解决了一个类似的问题(我相信使用 OPENROWSET)。
尝试这个:
USE master;
GO;
GRANT ADMINISTER BULK OPERATIONS TO shira;
请注意,接受的答案或这两种解决方案中的任何一种仅适用于 Windows。
GRANT ADMINISTER BULK OPERATIONS TO [login_name];
-- OR
ALTER SERVER ROLE [bulkadmin] ADD MEMBER [login_name];
如果你在基于 linux 机器的 SQL Server 上运行它们中的任何一个,你会得到这些错误:
Msg 16202, Level 15, State 1, Line 1
Keyword or statement option 'bulkadmin' is not supported on the 'Linux' platform.
Msg 16202, Level 15, State 3, Line 1
Keyword or statement option 'ADMINISTER BULK OPERATIONS' is not supported on the 'Linux' platform.
检查文档。
需要 INSERT 和 ADMINISTER BULK OPERATIONS 权限。在 Azure SQL 数据库中,需要 INSERT 和 ADMINISTER DATABASE BULK OPERATIONS 权限。Linux 上的 SQL Server 不支持 ADMINISTER BULK OPERATIONS 权限或 bulkadmin 角色。只有系统管理员可以为 Linux 上的 SQL Server 执行批量插入。
Linux 解决方案
ALTER SERVER ROLE [sysadmin] ADD MEMBER [login_name];
如果服务帐户无权读取正在导入的文件,SQL Server 也可能返回此错误。确保服务帐户对文件位置具有读取权限。例如:
icacls D:\ImportFiles /Grant "NT Service\MSSQLServer":(OI)(CI)R
如果您收到错误消息“无法批量加载文件,因为您没有访问权限”
首先确保您提供的路径和文件名是正确的。
然后尝试将 bulkadmin 角色授予用户。为此,请按照以下步骤操作:- 在对象资源管理器中 -> 安全 -> 登录 -> 选择用户(右键单击)-> 属性 -> 服务器角色 -> 选中 bulkadmin 复选框 -> 确定。
这对我有用。
USE Master GO
ALTER Server Role [bulkadmin] ADD MEMBER [username] GO Command failed even tried several command parameters
master..sp_addsrvrolemember @loginame = N'username', @rolename = N'bulkadmin' GO Command was successful..