SQL server bulkinsert错误

2024-06-08 03:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

当我运行此查询以在共享驱动器上使用用户名和密码(而不是Windows身份验证)向SQLServer2008批量插入一个文件时,我得到以下错误。DBA,系统管理员和网络人员都否认这些错误与他们的团队有关,我迷失了。。。有人能帮我找出问题出在哪里吗?当我使用数据库用户名和密码运行bulkinsert时,SQL server使用什么身份验证来打开文件?在

在MS Management Studio上运行此程序

BULK INSERT DatabaseName.dbo.TableName
FROM '\\shared_server\parent\child\file_name.txt' 
WITH(FIRE_TRIGGERS, DATAFILETYPE='char', FIELDTERMINATOR='\t',ROWTERMINATOR='\n', FIRSTROW=2);

我得到了

^{pr2}$

在python上运行这个

import pyodbc

database = 'DatabaseName'
username = 'username'
password = 'password'
server = 'server_name'
failover = 'failover_server_name'
cnxn_string = 'DRIVER={SQL Server Native Client 10.0};SERVER=%s;FAILOVER_PARTNER=%s;DATABASE=%s;UID=%s;PWD=%s;CHARSET=UTF8' % (server, failover, database, username, password)
cnxn = pyodbc.connect(cnxn_string)
cursor = cnxn.cursor()

query = r"""
BULK INSERT Estimates.dbo.FundamentalsIS 
FROM '\\shared_server\parent\child\file_name.txt' 
WITH(FIRE_TRIGGERS, DATAFILETYPE='char', FIELDTERMINATOR='\t',ROWTERMINATOR='\n', FIRSTROW=2);
"""
cursor.execute(query)
cursor.commit()"

我得到了

ProgrammingError: ('42000', '[42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot bulk load because the file "\\shared_server\parent\child\file_name.txt" could not be opened. Operating system error code 1326(Logon failure: unknown user name or bad password.). (4861) (SQLExecDirectW)')

Tags: nametxtchildsqlserverusernamepasswordcursor
1条回答
网友
1楼 · 发布于 2024-06-08 03:24:53

MS SQL server 2008是否可能与文件所在的共享驱动器位于不同的安全组(或具有不同的设置)?在

因为大容量插入操作是在MS Management studio服务器端运行的,它可能无法访问该文件,“拒绝访问”使我认为DB server无法访问共享文件驱动器,并且可能没有访问该驱动器的权限。同样,即使使用python执行BULK INSERT语句,DB服务器仍然需要访问文件所在的位置。在

我以前也遇到过类似的问题,因为DB服务器无法访问位于其他位置的共享文件。我的解决方法是使用本地计算机读入文件并使用python运行insert查询。听起来本地环境可以访问这两者,并且可以用作中心通信中心。你可能要做一些类似的事情

相关问题 更多 >

    热门问题