Netbeans中的“无法批量加载”错误。

时间:2013-05-01 17:20:53

标签: sql netbeans-7 bulkinsert

我知道这是一个老错误。我到处看,但仍无法找到解决方案。 Stackoverflow是我最后的选择。

这是我正在做的事情。我试图通过java将txt文件导入SQL Server 2008。

我为执行此任务而编写的代码是

 public static void main(String[] args)throws Exception {
    try
    {
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    Connection con=DriverManager.getConnection("jdbc:sqlserver://SMS-GIGO-IDEN:1433; datbaseName=Testing","sa","paswword");

    Statement stmt = con.createStatement();
    ResultSet rs= stmt.executeQuery("Bulk INSERT Testing.dbo.Link from '\\SMS-GIGO-IDEN\\fa2\\Benchmark\\Output\\B20.link' with (FIELDTERMINATOR='\t', FIRSTROW=2)");

    }
    catch(Exception e)
    {
        e.printStackTrace();
    }

如您所见,我已经共享了存储文件的文件夹。另外,我正在使用机器名称。

注意:为了检查机器名称是否正常工作,我从另一台机器的SQL服务器访问了SMS-GIGO-IDEN,并且Bulk工作正常。 简短BULK QUERY正在从任何机器的SQL服务器工作。但是,它不适用于网络豆。

SMS-GIGO-IDEN是一个SQL服务器数据库,我从数据库所在的同一台服务器上运行netbeans。

我使用Windows身份验证登录SMS-GIGO-IDEN。由于我创建了SQL服务器连接,因此我没有使用Windows登录凭据。我创建了另一个,可以在我的连接字符串中看到。

那么,有没有人经历过同样的事情?

感谢。

1 个答案:

答案 0 :(得分:1)

当您从代码运行该查询时,您将其作为SA运行,并且尝试从网络共享获取该文件的用户是SQL进程正在运行的用户。可能你正在遇到许可问题。

请参阅:BULK INSERT (Transact-SQL)

  

使用sqlcmd或osql执行BULK INSERT语句时   一台计算机,在第二台计算机上将数据插入SQL Server,以及   您可以使用UNC路径在第三台计算机上指定data_file   收到4861错误。若要解决此错误,请使用SQL Server   身份验证并指定使用安全性的SQL Server登录   SQL Server进程帐户的配置文件,或配置Windows到   启用安全帐户委派。有关如何使用的信息   启用用户帐户以进行委派,请参阅Windows帮助。

这看起来就像你在做什么。

使用可信连接可能更容易,因为此语句使我相信它只会起作用(如果该用户拥有文件共享权限)。

If a SQL Server user is logged in using Windows Authentication, the user can read only the files accessible to the user account, independent of the security profile of the SQL Server process.

请参阅: Can I connect to SQL Server using Windows Authentication from Java EE webapp?

另外:Working with a Connection

 Connection con=DriverManager.getConnection("jdbc:sqlserver://SMS-GIGO-IDEN:1433; database=testing;integratedSecurity=true;");