如何使用SQLAgent帐户以外的权限从代码中运行BULK INSERT?

问题描述 投票:1回答:1

我们有一些代码要运行BULK INSERT sql命令,但由于安装了帐户SQLAgent,因为它没有对文件所在文件夹的权限而被拒绝访问。我不希望该帐户拥有权限到那个文件夹,如果可以的话,我很乐意使用代理帐户。

不要认为这有多大帮助,但这里是我们用来运行sql命令的vb代码:

        Dim sql As String = "BULK INSERT Visa From '@file' With (ROWTERMINATOR = '\n', FIELDTERMINATOR = '\t', KEEPNULLS)"
        sql = Replace(sql, "@period", _date)
        sql = Replace(sql, "@file", FullPath)
        DBExecute(sql)

如何让这个工作?

vb.net sql-server-2008 bulkinsert
1个回答
1
投票

正如HardCode所写,您可以在每个作业步骤中使用RunAs。基本上,你必须:

  • 添加凭据 - 凭据意味着:“冒充此凭据”
  • 添加代理 - 代理意味着:凭据和动作类型(子系统)之间的链接,如运行SSIS包,运行命令,...
  • 配置作业步骤以使用添加的代理

请注意,您使用的凭据必须具有访问该文件夹的权限以及连接数据库的权限。如果在VB.NET代码中使用SQL Server登录而不是Windows身份验证,则不需要以后。

Here您可以找到有关如何添加凭据和代理的分步说明。

更新:你的评论对原始问题有所启发。您不想更改作业步骤代理/凭据,而是使用.NET来模拟用户。

你可以通过以下方式实现:

  • 切换到SQL Server登录 - 危险,因为您必须在连接字符串中保存密码
  • 使用.NET代码模拟用户 - 检查文章:how to impersonate user并检查此one以获得非常好的安全提示
© www.soinside.com 2019 - 2024. All rights reserved.