J'ai créé un proc qui saisit toutes les tables utilisateur dans un DB local sur ma machine. Je veux être capable de créer un fichier plat de toutes mes tables en utilisant BCP et SQL. C'est une base de données fictive dans SQL 2000 se connectant via l'authentification Windows. J'ai défini ma variable de chemin d'environnement dans WinXP SP2. J'ai créé de nouveaux utilisateurs pour accéder à la base de données, éteint mon pare-feu, en utilisant une connexion de confiance. J'ai essayé des dizaines de forums, pas de chance.BCP out Erreur dans SQL2000: SQLState = 37000, NativeError = 4060
Dans l'invite de commande DOS, j'obtiens la même erreur. Erreur = [Microsoft] [Pilote ODBC SQL Server] [SQL Server] Impossible d'ouvrir la base de données demandée lors de la connexion '[HelpDesk-EasyPay']. La connexion échoue.
Voici mon 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 [email protected]
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 @[email protected]
END
DROP TABLE #T
Quelqu'un peut-il conseiller. Cela semble être un problème de connexion ou BCP? Pas certain.
edit: Je l'utilise depuis l'analyseur de requêtes car j'ai 118 tables à sortir en fichier plat. Je semble être d'accord que c'est un problème d'authentification parce que j'ai essayé de me connecter à master db avec le nom d'utilisateur sa mot de passe root. qui est ce que son ensemble à et je reçois la même erreur: SQLState = 37000, NativeError = 4060
En vous remerciant d'avance. EJ
Quelle est la chaîne de ligne de commande que vous utilisez pour l'exécuter? Cela ressemble à un problème d'authentification. – Light
Je cours ceci à partir de l'analyseur de question parce que j'ai 118 tables à la sortie au dossier plat. Je semble être d'accord que c'est un problème d'authentification parce que j'ai essayé de me connecter à master db avec le nom d'utilisateur sa mot de passe root. qui est ce que son ensemble et je reçois la même erreur: SQLState = 37000, NativeError = 4060 Si je l'exécute à partir de la ligne de commande, même erreur. Ça doit être quelque chose de petit qui me manque? –
Aussi je crois que vous voulez "queryout" pas "out" – TravisO