マシンのローカル DB にあるすべてのユーザー テーブルを取得する 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でマスターdbに接続しようとしたため、認証の問題であることに同意しているようです。これが設定されており、同じエラーが発生します:SQLState = 37000、NativeError = 4060