SQL2000中的BCP输出错误:SQLState = 37000,NativeError = 4060

时间:2008-11-06 15:06:17

标签: sql-server stored-procedures jdbc sql-server-2000 bcp

我创建了一个proc,它可以抓取我机器上本地数据库中的所有用户表。我希望能够使用BCP和SQL创建所有表的平面文件。它是SQL 2000中的虚拟数据库,通过Windows身份验证连接。我在WinXP SP2中设置了我的环境路径变量。我创建了新用户来访问数据库,关闭我的防火墙,使用可信连接。我试过几十个论坛,没有运气。

在dos命令提示符下,我得到了同样的错误。

SQLState = 37000,NativeError = 4060 错误= [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]无法打开登录'[HelpDesk-EasyPay']中请求的数据库。登录失败。

这是我的SP:

@Path VARCHAR(100),
    @UserName VARCHAR(15),
    @PassWord VARCHAR(15),
    @ServerName VARCHAR(15)
AS 

set quoted_identifier off
set nocount on

declare @n int
declare @db varchar(40)
set @db=DB_NAME()
declare @TableName varchar(15) 
declare @bcp varchar(200)
select identity(int,1,1) as tblNo,name tblname into #T from Sysobjects where xtype='u'
select @n=COUNT(*) from #T

WHILE (@n>0)
BEGIN
    SELECT @TableName=tblname FROM #T WHERE tblno=@n
    PRINT 'Now BCP out for table: ' + @TableName
    SET @bcp = "master..xp_cmdshell 'BCP " + "[" + @db + ".." + @TableName + "]" + " OUT" + @Path + "" + @TableName+".txt -c -U" + @UserName + " -P" + @PassWord + " -S" + @ServerName + " -T" + "'" 
    EXEC(@bcp)
    SET @n=@n-1
END

DROP TABLE #T

任何人都可以提供建议。这似乎是一个连接问题或BCP?不确定。

编辑:我从查询分析器运行它,因为我有118个表输出到平面文件。我似乎同意它的身份验证问题,因为我尝试使用用户名sa密码root连接到master db。这是它的设置,我得到相同的错误:SQLState = 37000,NativeError = 4060

提前感谢你。 EJ

3 个答案:

答案 0 :(得分:1)

您的括号扩展到整个限定表名称 - 只有各个组件应该放在括号中:

bcp [HelpDesk-EasyPay].dbo.[customer] out d:\MSSQL\Data\customer.bcp -N -Utest -Ptest -T

应该有效,所以你想要:

SET @bcp = "master..xp_cmdshell 'BCP " + "[" + @db + "]..[" + @TableName + "]" + " OUT" + @Path + "" + @TableName+".txt -c -U" + @UserName + " -P" + @PassWord + " -S" + @ServerName + " -T" + "'" 
你的代码中的

。看起来你给出的错误信息被截断,否则你本来可以看到它试图打开数据库“[HelpDesk-EasyPay.dbo.customer]”当然不存在,即使它没过,你会得到一个没有指定表格的错误。

答案 1 :(得分:0)

我对OUT有同样的问题(减去字符杀死所有事件^不起作用)

我用QUERYOUT来避免它。像这样:

SET  @s = 'BCP "SELECT * FROM [HelpDesk-EasyPay].dbo.customers" QUERYOUT myfile.txt ...'

答案 2 :(得分:0)

也许有人会派上用场:SQL Server 2017也有同样的问题。原因是数据库名称的方括号。