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

时间:2019-02-11 16:52:48

标签: php sql-server

我正在尝试将文本文件中的数据插入数据库。我正在使用SQL Server Management Studio17。

我正在使用以下查询:

BULK INSERT db.[dbo].[mytable]
    FROM 'path/file.txt'
    WITH 
        (FIELDTERMINATOR = ';',
         ROWTERMINATOR = '\n') 

问题在于它在SQL Server Management Studio中正常工作,但是当我尝试执行此php脚本时,即使我在执行以下操作后授予用户批量访问权限,它也会显示错误:

You do not have permission to use the bulk load statement

错误:

  

Array([0] => Array([0] => 42000 [SQLSTATE] => 42000 [1] => 4834 [代码] => 4834 [2] => [Microsoft] [SQL Server Native Client 11.0 ] [SQL Server]您无权使用批量加载语句。[message] => [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) );

?>

1 个答案:

答案 0 :(得分:1)

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

let allAddButton = join('$',addButton);
allAddButton.count().then(function{
//do something;
})

您的SSMS进程似乎正在使用其他凭据运行,并且它们具有这样的权限。

另一个原因可能是SQL Server GRANT ADMINISTER BULK OPERATIONS TO [server_login] 没有足够的权限来读取源文件