【发布时间】:2019-02-11 16:52:47
【问题描述】:
我正在尝试将文本文件中的数据插入到我的数据库中。我正在使用 SQL Server Management Studio 17。
我正在使用这个查询:
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 [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) );
?>
【问题讨论】:
-
我建议用户没有正确的权限。试试
ALTER SERVER ROLE bulkadmin ADD MEMBER {Your PHP SQL Login};(显然替换大括号中的文字({}))。
标签: php sql-server