我创建了一个 proc 来获取我机器上本地数据库中的所有用户表。我希望能够使用 BCP 和 SQL 创建我所有表的平面文件。它是通过 Windows 身份验证连接的 SQL 2000 中的虚拟数据库。我在 WinXP SP2 中设置了我的环境路径变量。我创建了新用户来访问数据库,关闭了我的防火墙,使用受信任的连接。我已经尝试了几十个论坛,没有运气。
在 dos 命令提示符下,我得到了同样的错误。
SQLState = 37000,NativeError = 4060 错误 = [Microsoft][ODBC SQL Server Driver][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 连接到主数据库。这是它的设置,我得到同样的错误: SQLState = 37000, NativeError = 4060