我正在尝试将文本文件中的数据插入数据库。我正在使用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) );
?>
答案 0 :(得分:1)
您的PHP应用程序使用的帐户需要此权限:
let allAddButton = join('$',addButton);
allAddButton.count().then(function{
//do something;
})
您的SSMS进程似乎正在使用其他凭据运行,并且它们具有这样的权限。
另一个原因可能是SQL Server GRANT ADMINISTER BULK OPERATIONS TO [server_login]
没有足够的权限来读取源文件