powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод результата хранимой процедуры в файл SQLCMD
25 сообщений из 27, страница 1 из 2
Вывод результата хранимой процедуры в файл SQLCMD
    #40028450
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток!
Друзья, помогите, пож-та, небольшой вопрос по sqlcmd:

Есть хранимая процедура, которую запускаю через sqlcmd и сохраняю результат в файл с помощью командной строки :

С:\>sqlcmd -E -S Server\SQLExpress -d DB_test -Q ''exec dbo.proc 1,1,1,2" -o C:\myoutput.csv

-в файл myoutput.csv пишутся только сообщения, без результирующего грида

Когда я эту же процедуру запускаю в редакторе запросов SQL Server в режиме SQLCMD:

:OUT C:\myoutput.csv
exec dbo.proc 1,1,1,2
GO

то в myoutput.csv пишется все - и грид и сообщения...

Что я упустила при работе с командной строкой sqlcmd, чтобы запись в файл происходила как во 2м случае?
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028456
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

попробуйте так :

Код: powershell
1.
С:\>sqlcmd -E -S Server\SQLExpress -d DB_test -Q ''exec dbo.proc 1,1,1,2" >> C:\myoutput.csv
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028658
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,

Код: powershell
1.
С:\>sqlcmd -E -S Server\SQLExpress -d DB_test -Q ''exec dbo.proc 1,1,1,2" >> C:\myoutput.csv



попробовала, но картина все та же((
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028662
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

а так что получается?

Код: sql
1.
sqlcmd -S Server\SQLExpress -E -Q "exec sp_who 'active'" > result.txt
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028666
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,

Код: sql
1.
sqlcmd -S Server\SQLExpress -E -Q "exec sp_who 'active'" > result.txt




все равно одни сообщения в выходном файле
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028667
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123

все равно одни сообщения в выходном файле

какие ?
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028675
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,

это PRINT'ы вшитых хранимых процедур, которые сообщают таким образом о своем успешном выполнении
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028689
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

Код: sql
1.
2>&1

попробуйте
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028691
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

можно поподробнее? не совсем понятно...
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028694
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати. А банально первым шагом вызова сделать SET NOCOUNT ON уже предлагали?
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028696
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

Это перенаправление вывода stderr в stdout для вызова консольной утилиты.
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028697
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

env
Кстати. А банально первым шагом вызова сделать SET NOCOUNT ON уже предлагали?


- даа, делала и это, тоже не спасло((
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028700
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
env,

поняла, это наверное так вызывается

sqlcmd -E -i "somesqlfile1.sql" -b >>deploy.log 2>&1
IF ERRORLEVEL 1 GOTO errorline

---применила, но все равно вывод одних сообщений! ощущение, что он обрезает грид
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028704
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

Попробуйте добавить в вызов опцию -I (устанавливает quoted_identifier в on) или допишите в начало скрипта
Код: sql
1.
2.
set quoted_identifier on;
go
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028705
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
-o C:\result.txt
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028706
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123
komrad,

это PRINT'ы вшитых хранимых процедур, которые сообщают таким образом о своем успешном выполнении

вот этот конкретный пример что возвращает?
Код: sql
1.
sqlcmd -S Server\SQLExpress -E -Q "exec sp_who 'active'" > result.txt
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028707
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Konst_One
Код: sql
1.
-o C:\result.txt



это испробовано в самом начале - см начало ветки
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028708
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

попробовала, пока что без изменений. Файл с сообщениями ... и все. Очень странно, что через SSMS пишет идеально весь результат в файл.
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028710
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad
Yennifer123
komrad,

это PRINT'ы вшитых хранимых процедур, которые сообщают таким образом о своем успешном выполнении

вот этот конкретный пример что возвращает?
Код: sql
1.
sqlcmd -S Server\SQLExpress -E -Q "exec sp_who 'active'" > result.txt



возвращает вот что в файле result.txt

spid ecid status loginame
---------------------------------------------------
59 0 runnable E\eva

(1 rows affected)


то есть грид записался в файл....
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028712
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123
komrad
пропущено...

вот этот конкретный пример что возвращает?
Код: sql
1.
sqlcmd -S Server\SQLExpress -E -Q "exec sp_who 'active'" > result.txt



возвращает вот что в файле result.txt

spid ecid status loginame
---------------------------------------------------
59 0 runnable E\eva

(1 rows affected)

значит sqlcmd ведет себя корректно и "чудеса" только с вашими процедурами

например, "защита" от выполнения из sqlcmd, или "разрешены" только SSMS и приложение
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028713
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123
Очень странно, что через SSMS пишет идеально весь результат в файл.
Ничего странного.
Возьмите профайлер и сравните опции соединения и что выполняется из студии и из sqlcmd
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028716
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
komrad,

залезла в хп (она аутсорсинговая)
и вот что нашла:

if program_name() like '%Microsoft SQL Server Management Studio%'
begin
select * from table
end
-- это как раз тот грид, что мне нужен

действительно так!

спасибо за умные мысли!
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028719
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

к сожалению по ряду причин админы не могу мне дать права на трассировку, что делает мою работу немного рутиннее...


Спасибо большое всем за содействие.
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028904
Yennifer123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Друзья, я рано обрадовалась.
Нашли причину в одной проблеме, но всплыла другая

Вариант 1

sqlcmd -E -S Server\SQLEXPRESS -d DB_test -Q "declare @d datetime;select @d = CONVERT(datetime, '21/10/2020 09:00:00', 104);exec [zapi].[Export_Oper] @Date = @d, @TMode = 3" -o c:\Work\1\result.txt

выводит в файл не весь результат, а только его часть!

результат выполнения данного запроса - одна колонка с очень длинной строкой: преобразованное blob - поле с размером(47932) в varchar(max).

И эта строка тупо обрывается на определенном символе.

Вариант 2

:out c:\Work\1\result.txt
declare @d datetime;
select @d = CONVERT(datetime, '21/10/2020 09:00:00', 104);
exec [zapi].[Export_Oper] @Date = @d, @TMode = 3
GO
экспортирует весь результат полностью.

Кто то из гуру сможет мне указать на ошибку в первом варианте?
...
Рейтинг: 0 / 0
Вывод результата хранимой процедуры в файл SQLCMD
    #40028915
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yennifer123,

добавьте параметр "-y 0"

подробнее тут

кстати, это гуглится за 5 секунд
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вывод результата хранимой процедуры в файл SQLCMD
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]