Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 EXEC proc_generate_excel_with_columns  [new]
dimakz
Member

Откуда:
Сообщений: 1574
запускаю процедуру по формированию эксель файла
EXEC proc_generate_excel_with_columns 'test', '_temp_table1','C:\Temp\data_file.xls'


выходит это
User name not provided, either use -U to provide the user name or use -T for Trusted Connection
usage: bcp {dbtable | query} {in | out | queryout | format} datafile
  [-m maxerrors]            [-f formatfile]          [-e errfile]
  [-F firstrow]             [-L lastrow]             [-b batchsize]
  [-n native type]          [-c character type]      [-w wide character type]
  [-N keep non-text native] [-V file format version] [-q quoted identifier]
  [-C code page specifier]  [-t field terminator]    [-r row terminator]
  [-i inputfile]            [-o outfile]             [-a packetsize]
  [-S server name]          [-U username]            [-P password]
  [-T trusted connection]   [-v version]             [-R regional enable]
  [-k keep null values]     [-E keep identity values]
  [-h "load hints"]         [-x generate xml format file]


что значит User name not provided, either use -U to provide the user name or use -T for Trusted Connection
и как его исправить?
18 июн 13, 08:07    [14445437]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
dimakz
что значит User name not provided, either use -U to provide the user name or use -T for Trusted Connection

это означает ошибка в ХП, там у вас вызывается bcp

dimakz
и как его исправить

поправить ХП или, если не Вы её писали, то отправить разработчику
18 июн 13, 08:18    [14445480]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
dimakz
Member

Откуда:
Сообщений: 1574
create procedure proc_generate_excel_with_columns
(
@db_name varchar(100),
@table_name varchar(100),
@file_name varchar(100)
)
as

--Generate column names as a recordset
declare @columns varchar(8000), @sql varchar(8000), @data_file varchar(100)
select
@columns=coalesce(@columns+',','')+column_name+' as '+column_name
from
information_schema.columns
where
table_name=@table_name
select @columns=''''''+replace(replace(@columns,' as ',''''' as '),',',',''''')

--Create a dummy file to have actual data
select @data_file=substring(@file_name,1,len(@file_name)-charindex('\',reverse(@file_name)))+'\data_file.xls'

--Generate column names in the passed EXCEL file
set @sql='exec master..xp_cmdshell ''bcp " select * from (select '+@columns+') as t" queryout "'+@file_name+'" -c'''
exec(@sql)

--Generate data in the dummy file
set @sql='exec master..xp_cmdshell ''bcp "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c'''
exec(@sql)

--Copy dummy file to passed EXCEL file
set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"'''
exec(@sql)

--Delete dummy file
set @sql= 'exec master..xp_cmdshell ''del '+@data_file+''''
exec(@sql)

После создания процедуры, запускаю ее передавая парамметры
database name, table name and file path


EXEC proc_generate_excel_with_columns 'your dbname', 'your table name','your file path'
18 июн 13, 08:31    [14445538]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
dimakz, ну вот и почитайте о параметрах BCP, тем более он и так Вам говорит, что еще ему нужно
автор
User name not provided, either use -U to provide the user name or use -T for Trusted Connection
18 июн 13, 08:35    [14445562]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
dimakz
Member

Откуда:
Сообщений: 1574
а что именно нужно прописать дописать?
18 июн 13, 08:37    [14445566]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
dimakz, ну дык написано же
добавь параметры [-U username] [-P password]
или -T, если используется доверительное соединение
18 июн 13, 08:44    [14445587]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31981
dimakz
а что именно нужно прописать дописать?

dimakz
User name not provided, either use -U to provide the user name or use -T for Trusted Connection

http://translate.google.ru
18 июн 13, 08:44    [14445588]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
dimakz
Member

Откуда:
Сообщений: 1574
а если подключаюсь к ms sql как виндовс авторизация?
18 июн 13, 08:47    [14445604]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
dimakz
Member

Откуда:
Сообщений: 1574
а куда прописывать в процедуру? в какое место?
18 июн 13, 08:49    [14445618]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
dimakz
а куда прописывать в процедуру? в какое место?

везде где есть
'exec master..xp_cmdshell ''bcp "



ЗЫЖ Вы сами писали ХП или как?
18 июн 13, 08:53    [14445644]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
dimakz
Member

Откуда:
Сообщений: 1574
внес, теперь это выходит

Copy direction must be either 'in', 'out' or 'format'.
18 июн 13, 09:03    [14445705]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
Trololoshka
Member

Откуда:
Сообщений: 7
dimakz,

Судя по ошибки, думаю где-то здесь нужно прописать 'in' или 'out'. Только не уверен где именно. Возможно после "xp_cmdshel"...

автор
--Copy dummy file to passed EXCEL file
set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"'''
exec(@sql)
18 июн 13, 09:23    [14445803]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Trololoshka
dimakz,

Судя по ошибки, думаю где-то здесь нужно прописать 'in' или 'out'. Только не уверен где именно. Возможно после "xp_cmdshel"...

автор
--Copy dummy file to passed EXCEL file
set @sql= 'exec master..xp_cmdshell ''type '+@data_file+' >> "'+@file_name+'"'''
exec(@sql)


нет. Это говорит об одном - ЧИТАЙТЕ ХЕЛП и не надо придумывать синтаксис, в БОЛ все есть и даже с примерами (для особо ленивых)
18 июн 13, 09:49    [14445948]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
Trololoshka
Member

Откуда:
Сообщений: 7
HandKot
Trololoshka
dimakz,

Судя по ошибки, думаю где-то здесь нужно прописать 'in' или 'out'. Только не уверен где именно. Возможно после "xp_cmdshel"...

пропущено...


нет. Это говорит об одном - ЧИТАЙТЕ ХЕЛП и не надо придумывать синтаксис, в БОЛ все есть и даже с примерами (для особо ленивых)


Ссылку в студию.

P.S. "в БОЛ все есть" а что такое БОЛ?
18 июн 13, 09:58    [14446010]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
Glory
Member

Откуда:
Сообщений: 104751
Trololoshka
P.S. "в БОЛ все есть" а что такое БОЛ?

Что такое БОЛ, написано в ТОП10 самых популярных вопросов
18 июн 13, 10:04    [14446044]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Trololoshka
Ссылку в студию.

легко
Программа bcp
18 июн 13, 10:11    [14446092]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
Trololoshka
Member

Откуда:
Сообщений: 7
HandKot
Trololoshka
dimakz,

Судя по ошибки, думаю где-то здесь нужно прописать 'in' или 'out'. Только не уверен где именно. Возможно после "xp_cmdshel"...

пропущено...


нет. Это говорит об одном - ЧИТАЙТЕ ХЕЛП и не надо придумывать синтаксис, в БОЛ все есть и даже с примерами (для особо ленивых)


Спасибо за линк. Перечитал весь мануал. Причиной ошибки как я понял с слудующих запросах:
автор
--Generate column names in the passed EXCEL file
set @sql='exec master..xp_cmdshell ''bcp [-U sa] [-P XXXX] " select * from (select '+@columns+') as t" queryout "'+@file_name+'" -c'''
exec(@sql)
--Generate data in the dummy file
set @sql='exec master..xp_cmdshell ''bcp [-U sa] [-P XXXX] "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c'''
exec(@sql)


Исследовал на соответствие стандарту. В хелпе написано:
автор
Е.Копирование данных из запроса в файл данных
Результирующий набор инструкции Transact-SQL копируется в файл данных с помощью параметра queryout. Следующий пример копирует имена из таблицы AdventureWorks2012.Person.Person, упорядоченные по фамилии и далее по имени, в файл данных Contacts.txt. В этом примере предполагается, что используется проверка подлинности Windows и существует доверительное соединение с экземпляром сервера, на котором запускается команда bcp.

В командной строке Windows введите:
bcp "SELECT FirstName, LastName FROM AdventureWorks2012.Person.Person ORDER BY LastName, Firstname" queryout Contacts.txt -c -T


Вроду все правильно написано. А в ошибке говориться:
автор
Copy direction must be either 'in', 'out' or 'format'.
На мой взгляд, queryout там правильно прописан. Так в чем же ошибка?

Сообщение было отредактировано: 18 июн 13, 12:53
18 июн 13, 12:51    [14447263]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
Glory
Member

Откуда:
Сообщений: 104751
Trololoshka
Вроду все правильно написано. А в ошибке говориться:

Сравните
bcp [-U sa] [-P XXXX] "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c'''
bcp "SELECT FirstName, LastName FROM AdventureWorks2012.Person.Person ORDER BY LastName, Firstname" queryout Contacts.txt -c -T

Неужели так уже все как в хелпе
18 июн 13, 12:55    [14447296]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
Trololoshka
На мой взгляд, queryout там правильно прописан. Так в чем же ошибка?

queryout написан правильно, а остальные параметры?

bcp "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c -Usa -PXXXX'''


как уже говорил, не надо придумывать синтаксис, делать так как написано в БОЛ
18 июн 13, 13:44    [14447727]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
Trololoshka
Member

Откуда:
Сообщений: 7
HandKot, Интересно а здесь можно подсветку Excell делать (некоторые линии красным, некоторые зеленым)? Судя по БОЛ невозможно...
18 июн 13, 15:20    [14448487]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
Glory
Member

Откуда:
Сообщений: 104751
Trololoshka
Интересно а здесь можно подсветку Excell делать (некоторые линии красным, некоторые зеленым)?

Вы формируете простой _текстовый файл_.
Просто его расширение "обманывает" Excel
18 июн 13, 15:29    [14448561]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
natya
Member [заблокирован]

Откуда: Азербайджан, Баку
Сообщений: 347
Glory,

ребята зачем так сложно надо работат

ест оптималное вариант
18 июн 13, 23:26    [14451147]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
Trololoshka
Member

Откуда:
Сообщений: 7
natya
Glory,

ребята зачем так сложно надо работат

ест оптималное вариант


Ну и какой же?
20 июн 13, 07:19    [14457307]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: EXEC proc_generate_excel_with_columns  [new]
Dm12464563
Guest
Подниму тему, не могу разобраться с bcp queryout
пробую
declare @execstr varchar(512)
set @execstr='bcp "SELECT ''1''" queryout "C:\sample.txt" -c -S SQLServerName -U UserName -P Password'
EXEC xp_cmdshell @execstr 

или
declare @execstr varchar(512)
set @execstr='bcp "SELECT ''1''" queryout "C:\sample.txt" -c -T'
EXEC xp_cmdshell @execstr 


Ошибка в обоих случаях:
Copy direction must be either 'in' or 'out'.
Syntax Error in 'queryout'.



в MSDN ваще треш какой-то написан

автор
bcp [database_name.] schema.{table_name | view_name | "query"
{in data_file | out data_file | queryout data_file | format nul}

далее куча необязательных параметров

что получается обязательным является только схема? т.е. правильно писать?
declare @execstr varchar(512)
set @execstr='bcp dbo."SELECT ''1''" queryout "C:\sample.txt" -c -S SQLServerName -U UserName -P Password'
EXEC xp_cmdshell @execstr 

выглядит бредово и не помогает.

Так же не понятно, где закрывается эта скобка schema.{table_name

пробовал этот формат из темы
Glory
bcp [-U sa] [-P XXXX] "select * from '+@db_name+'..'+@table_name+'" queryout "'+@data_file+'" -c'''


так
declare @execstr varchar(512)
set @execstr='bcp -S SQLServerName -U UserName -P Password "SELECT ''1''" queryout "C:\sample.txt" -c '
EXEC xp_cmdshell @execstr 


или так
declare @execstr varchar(512)
set @execstr='bcp -U UserName -P Password "SELECT ''1''" queryout "C:\sample.txt" -c -S SQLServerName '
EXEC xp_cmdshell @execstr 


разница только в ошибках

Copy direction must be either 'in' or 'out'.
Syntax Error in 'SQLServerName'.
и
Copy direction must be either 'in' or 'out'.
Syntax Error in 'UserName'.

указание логина или имени сервера в одинарных или двойных кавычках так же не помогает.

что не так?
5 сен 16, 10:49    [19628025]     Ответить | Цитировать Сообщить модератору
 Re: EXEC proc_generate_excel_with_columns  [new]
komrad
Member

Откуда:
Сообщений: 5758
Dm12464563,

выполните "bcp -v" в командной строке на сервере
подозреваю, что подцепляется аналогичный бинарник от Sybase
5 сен 16, 10:58    [19628060]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить