Im пытается запустить процедуру магазин запрос на экспорт в CSV-файл с помощью BCP в качестве ежедневной задачи на SQL сервереBCP SQL экспорт в CSV
используя обычный запрос в порядке, например
выберите работы @ CSV = 'BCP "выберите * из таблицы" queryout '+ @ FileAndPath2 +' -c -t, -T -S' + @@ имясервера
Однако, когда я добавляю мой запрос, который представляет собой список данных сделок в диапазон дат, похоже, сбой
@p_companyId uniqueidentifier = '189be460-99d1-42e9-b4ed-8de6f8724ce8',
@p_Path varchar(300) = 'C:\temp\','
@p_Date datetime = getutcdate
set @[email protected]_Path + CONVERT(nvarchar(30), @p_Date, 112) + '_' + CONVERT(varchar(36), @p_companyId) + '_transactionslog.csv';
declare @csv varchar(8000)
declare @csvSQL varchar(8000)
set @csvSQL = 'SELECT TOP (100) [KICSDEV].dbo.MOVIEDETAIL.Title , [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.MemberId, [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.CreateDateTime as ''DateTime'' FROM [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG INNER JOIN [KICSDEV].dbo.MOVIEDETAIL ON [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.MovieDetailId = [KICSDEV].dbo.MOVIEDETAIL.MovieDetailId INNER JOIN [KICSDEV].dbo.MEMBER ON [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.MemberId = [KICSDEV].dbo.MEMBER.MemberId INNER JOIN [KICSDEV].dbo.CINEMA ON [KICSDEV].dbo.MEMBER.CinemaId = [KICSDEV].dbo.CINEMA.CinemaId WHERE ([KICSDEV].dbo.CINEMA.CompanyId = '+ @p_companyId + ' and [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.CreateDateTime >= ' + @p_Date +' and [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.CreateDateTime < DATEADD (day , 1 , '[email protected]_Date+'))'
select @csvSQL
select @csv = 'bcp "'+ @csvSQL +'" queryout '[email protected]+' -c -t, -T -S' [email protected]@servername
exec master..xp_cmdshell @csv
Когда я запускаю его, это выглядит как «Типы данных varchar и uniqueidentifier несовместимы в операторе добавления». ошибка
Когда я меняю компанию на строку вместо переменной в запросе, она отлично работает, но ошибки на ней.
set @csvSQL = 'SELECT TOP (100) [KICSDEV].dbo.MOVIEDETAIL.Title , [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.MemberId, [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.CreateDateTime as ''DateTime'' FROM [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG INNER JOIN [KICSDEV].dbo.MOVIEDETAIL ON [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.MovieDetailId = [KICSDEV].dbo.MOVIEDETAIL.MovieDetailId INNER JOIN [KICSDEV].dbo.MEMBER ON [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.MemberId = [KICSDEV].dbo.MEMBER.MemberId INNER JOIN [KICSDEV].dbo.CINEMA ON [KICSDEV].dbo.MEMBER.CinemaId = [KICSDEV].dbo.CINEMA.CinemaId WHERE ([KICSDEV].dbo.CINEMA.CompanyId = ''189be460-99d1-42e9-b4ed-8de6f8724ce8'' and [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.CreateDateTime >= ' + @p_Date +' and [KICSDEV].dbo.MEMBERMOVIEPURCHASELOG.CreateDateTime < DATEADD (day , 1 , '[email protected]_Date+'))'
Конверсия не удалась при преобразовании даты и/или времени из символьной строки.
Я думаю, что это как-то связано со всеми разделителями и типами данных.
Привет, Джаспер, Apolgies о нижнем, поскольку я все еще новичок в stackoverflow. Bcp отлично работает на моей локальной машине, но когда я перехожу к моей базе данных, он не работает и возвращается как «Ошибка = [Microsoft] [Собственный клиент SQL Server 10.0] Поставщик имен и имен: не удалось открыть соединение с SQL Server [53]." Я поставил запрос в представлении, так как это привело к превышению ошибки в имени таблицы. UPDATED BCP - выберите @csv = 'bcp" dbo.vw_deltaMembers "out" + @ FileAndPath2 +' -c -t, -T -S '+ @@ servername – KevinC