Sql server Powershell访问SQL表-权限问题?

Sql server Powershell访问SQL表-权限问题?,sql-server,powershell,Sql Server,Powershell,我有一个通过IDE开发的Powershell脚本。它在一个小库中使用一些通用函数来获取作为dataTable加载的SQL表结构,然后在使用SQLBulkCopy将其写入数据库之前填充dataTable行。脚本和助手函数文件位于网络驱动器上 通过IDE就像一个魔咒,通过日志文件输出,我看到它正在使用我的网络凭据执行 现在,我希望将脚本作为SQL代理作业中的作业步骤执行。作业以windows用户SQLService的身份执行脚本。我已确保该用户对脚本位置具有与我相同的网络权限。我还确保SQLServ

我有一个通过IDE开发的Powershell脚本。它在一个小库中使用一些通用函数来获取作为dataTable加载的SQL表结构,然后在使用SQLBulkCopy将其写入数据库之前填充dataTable行。脚本和助手函数文件位于网络驱动器上

通过IDE就像一个魔咒,通过日志文件输出,我看到它正在使用我的网络凭据执行

现在,我希望将脚本作为SQL代理作业中的作业步骤执行。作业以windows用户SQLService的身份执行脚本。我已确保该用户对脚本位置具有与我相同的网络权限。我还确保SQLService windows帐户在数据库中具有与我相同的权限

当脚本从SQL代理作业执行时,它无法“查看”数据库表以从中获取结构。特别是脚本在尝试访问数据集$ds时失败。从IDE运行时,变量包含一个空数据集-这是所需的结果。从SQL代理作业运行时,该变量显示为默认整数

我已经尝试了很多方法来让它工作。在Powershell中,我尝试在主脚本文件中移动函数,在每个函数中添加Set ExecutionPolicy UnRestricted,将$Sqlconnection Security设置为trusted=yes,等等。在SQL Server中,我添加了SQLService windows用户作为相关数据库的数据库所有者

同样,这个问题是特定于从SQL代理作业运行的,当通过IDE运行时,它会按预期工作。任何建议都将不胜感激

问题函数如下所示

$query = "Select top 1 * from dbo.Mytable where 1=2".
$SqlConnection = "Server=Myserver; Database=Mydb; Integrated Security=SSPI;Connect Timeout=0"


function Get-SQLDataSet()
{
    param (
        [System.Data.SqlClient.SQLConnection]$sqlConnection,
        [string]$query
    )

    $ds = New-Object System.Data.DataSet "dsname"
    $adap = new-object System.Data.SqlClient.SqlDataAdapter ($query, $sqlConnection)

    try
    {
        $adap.Fill($ds) 
    }
    catch
    {
        $err = $_.exception.errorRecord
        $err >> $InternalLogLocation 
    }
    return $ds
}

如果您使用的是SQL任务作业,只需使用EXEC来执行存储过程。您是否需要powershell?什么是[无法“查看”数据库表]?你有什么错误?您使用什么作业步骤类型来执行脚本?Chuck-是的,使用Powershell有一个合理的理由。我正在进行各种文本文件搜索和处理,最终将结果插入到SQL表中。此时不涉及任何存储过程。Shawn-数据库表的“see”是指$adap.Fill($ds)行。当我通过凭证运行流程时,$ds变量将加载所需表的结构。这允许我在Powershell中加载该结构,然后将行写入DB表。从SQL代理作业(account SQLService)运行时,$ds变量返回Null,因此我的代码在下游失败。听起来像是一个隐藏的权限问题,但我已经尝试了我能想到的一切,以确保SQLService帐户和我自己的帐户之间的DB权限匹配。