消息4834“渊ou没有使用批量装入语句的权限”。

消息4834“渊ou没有使用批量装入语句的权限”。,第1张

消息4834“渊ou没有使用批量装入语句的权限”。

正如我在评论中所说,使用模拟时,服务器级别的权限会被剥夺。

有两种解决方法:

坏而又快的方法:

将您的数据库设置为“开”。它将完成工作。但是,如果您不完全了解它的功能,那么我的建议是不要这样做。

但是,这是代码:

ALTER DATAbase [YourDatabase] SET TRUSTWORTHY ON;

好的但较慢的方法

这更加精确,并且没有任何讨厌的安全副作用。

您要做的是使用证书对存储过程进行签名。您可以在数据库中使用该证书创建用户。您向该用户授予对数据库中表的适当权限。您还可以从同一证书创建“登录名”,然后授予该登录名大量权限。

因为您使用该证书对存储的proc进行签名,所以每次执行sp时,都会在该用户的上下文中执行该sp,并登录从该证书创建的位置。

步骤是:

  1. 在母版中创建证书

  2. 从该证书创建登录名

  3. 向该登录名授予批量管理员权限

现在,您需要在用户数据库中使用完全相同的证书,因此我们需要执行一些额外的步骤

  1. 将证书导出到磁盘

  2. 将证书导入您的用户数据库

现在我们可以完成

  1. 从证书创建用户
  2. 向该用户授予表权限
  3. 从存储过程中删除execute as子句
  4. 使用证书签署存储过程

这是代码:

USE mastergoCREATE CERTIFICATE BulkInsertCert   ENCRYPTION BY PASSWORD = 'NicePassword!0'   WITH SUBJECT = 'Gives Bulk Insert Privilegde'goCREATE LOGIN BulkInsert_CertLogin FROM CERTIFICATE BulkInsertCertgoGRANT ADMINISTER BULK OPERATIONS TO BulkInsert_CertLogingoBACKUP CERTIFICATE BulkInsertCert TO FILE = '[your directory]BulkInsertCert.cer'WITH PRIVATE KEY (FILE = '[your directory]BulkInsertCert.pvk' ,       ENCRYPTION BY PASSWORD = 'EvenNicerPassword!0',       DECRYPTION BY PASSWORD = 'NicePassword!0')goUSE [YourDatabase]CREATE CERTIFICATE BulkInsertCert FROM FILE = '[your directory]BulkInsertCert.cer'WITH PRIVATE KEY (FILE = '[your directory]BulkInsertCert.pvk',       DECRYPTION BY PASSWORD = 'EvenNicerPassword!0',       ENCRYPTION BY PASSWORD = 'TheVeryBestPasswordThereIs!0')go--NOW DELETe THE CERTIFICATES FROM DISKCREATE USER BulkInsert_CertUser FOR CERTIFICATE BulkInsertCertgoGRANT ALTER, INSERT ON [YourTable] TO BulkInsert_CertUsergoALTER PROCEDURE usp_myprocASEXEC('INSERT INTO ' + @tablename + ' SELECt col1, col2, col3 FROM OPENROWSET(    BULK '''+ @filepath +''',   FORMATFILE='''+ @formatfile +''',   FIRSTROW=2 )as t'          )-- Sign the test procedure each time you have changed it.ADD SIGNATURE TO usp_myproc BY CERTIFICATE BulkInsertCert    WITH PASSWORD = 'TheVeryBestPasswordThereIs!0'go

最后说明:

请用您确定sql服务帐户具有写权限的路径替换您的目录!

完成设置后,请确保删除那些导出的证书。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4942886.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存