大容量插入在ssms中工作,但从php执行时不工作

大容量插入在ssms中工作,但从php执行时不工作,php,sql-server,Php,Sql Server,我正在尝试将文本文件中的数据插入数据库。我正在使用SQLServerManagementStudio 17 我正在使用此查询: BULK INSERT db.[dbo].[mytable] FROM 'path/file.txt' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n') 问题在于,它在SQL Server Management Studio中工作,但当我尝试执行此php脚本时,它

我正在尝试将文本文件中的数据插入数据库。我正在使用SQLServerManagementStudio 17

我正在使用此查询:

BULK INSERT db.[dbo].[mytable]
    FROM 'path/file.txt'
    WITH 
        (FIELDTERMINATOR = ';',
         ROWTERMINATOR = '\n') 
问题在于,它在SQL Server Management Studio中工作,但当我尝试执行此php脚本时,它显示了一个错误,尽管我在执行以下操作后授予了用户批量的权限:

错误:

数组([0]=>Array([0]=>42000[SQLSTATE]=>42000[1]=>4834[code]=>4834[2]=>[Microsoft][SQL Server Native Client 11.0][SQL Server]您没有使用批量加载语句的权限。[消息]=>[Microsoft][SQL Server Native Client 11.0][SQL Server]您没有使用批量加载语句的权限。)

我正在使用的代码

<?php

$serverName = "SQLEXPRESS"; 
$connectionInfo = array( "Database"=>"master");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ) {
     echo "Connection established.<br />";
}else{
     echo "Connection could not be established.<br />";
     die( print_r( sqlsrv_errors(), true));
}    
$query1 = "BULK INSERT db.[dbo].[mytable]
    FROM 'path/file.txt'
    WITH 
        (FIELDTERMINATOR = ';',
         ROWTERMINATOR = '\n')";

$result1 = sqlsrv_query($conn,$query1) or  die( print_r(sqlsrv_errors(), true) );

?>

PHP应用程序使用的帐户需要此权限:

GRANT ADMINISTER BULK OPERATIONS TO [server_login]
您的SSMS进程似乎是使用其他凭据运行的,并且它们具有这样的权限


另一个原因可能是,如果SQL Server
服务帐户
没有足够的权限来读取源文件

,我建议用户没有正确的权限。尝试
alterserver角色bulkadmin添加成员{您的PHP SQL登录名}
(显然替换大括号中的文本(
{}
)。是的,原来我在使用其他凭据。奇怪的是,即使我在PHP和SSMS中使用windows身份验证,PHP脚本中的用户也不同于SSMS。我在error.log中发现了这一点。我认为这是另一个问题。谢谢你的帮助。@Morsi.Hamza,你的问题有答案吗?如果是这样,考虑把它标记为这样的一个。