使用SQL Server 2014
我正在使用OpenRowSet从Excel文件中提取数据。
我在单独的服务器上有一个文件夹,该文件夹已授予我自己的Windows帐户完全权限,并添加到我要导入的文件中。
运行以下代码时
Alter procedure [dbo].[usp_e_import]
WITH EXECUTE AS 'Domain\user'
as
delete from ETable
insert into ETable
select * from openrowset('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=\\server\sharedfolder\upload\Spreadsheet.xlsx;HDR=YES;IMEX=1', 'SELECT * FROM [DataT$]')
我收到错误
Access to the remote server is denied because the current security context is not trusted.
我自己的SQL帐户在SQL Server上具有管理员权限。
还有一点需要注意的是,如果我使用自己的凭据登录到SQL Server并使用设置为WITH EXECUTE
的命令运行代码,它将失败,这没有意义,因为从技术上讲,我只传递了相同的信息凭据两次。
如果我注释掉WITH EXECUTE
,一切都会正常进行。
有人可以指出正确的方向来解决此问题吗?
答案 0 :(得分:0)
使用批量插入
CREATE procedure [dbo].[usp_e_import]
AS
DELETE TableName
BULK INSERT TableName
FROM '\\server\folder\Book1.csv'
WITH
(
FIRSTROW = 1,
FIELDTERMINATOR = ',',
ROWTERMINATOR = '\n',
TABLOCK
)