Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Отказ в доступе при попытке созданя экселевского файла.  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 401
Добрый день!

Установлен SQL Server 2008 x64.
Скачан Microsoft Office 12.0 Access Database Engine OLE DB Provider.

Пытаюсь заставить сервер создать Exel-вский файл.

На что сервер отвечает:
-2147024891 Отказано в доступе.

При том, что запускаю SQL Managment Studio как администратор и всё выполняю под sa.

Не могу понять, в чём дело.

Буду благодарен любой помощи.

Вот скрипт создания файла:

/********************************************************************************/
DECLARE @desc varchar(255) -- text desctiption of the error
declare @Counter int-- internal counter to iterate through the records of the cursor
set @Counter=0
Declare @ExlValue varchar(100) -- this variable holds the value that should be assigned to Excel cell
Declare @ObjProp varchar(100) -- holds the full description of the property
DECLARE @WordObject int, @RetCode int, @Document int , @Filename varchar(255)
EXEC @RetCode = sp_OACreate 'Excel.Application', @WordObject OUTPUT, 4
IF @RetCode <> 0 or @@Error <> 0 GOTO OLE_Error_Handler

EXEC @RetCode = sp_OAMethod @WordObject, 'Workbooks.Add', @Document OUTPUT
IF @RetCode <> 0 or @@Error <> 0 GOTO OLE_Error_Handler
SELECT @Filename = 'd:\success.xls'

------------------------------create a cursor to supply the results in a countable way
DECLARE authors_cursor CURSOR FOR
SELECT au_lname FROM authors 
order by au_lname asc
OPEN authors_cursor
-- Perform the first fetch.
FETCH NEXT FROM authors_cursor
-- Check @@FETCH_STATUS to see if there are any more rows to fetch.
WHILE @@FETCH_STATUS = 0
BEGIN
-- This is executed as long as the previous fetch succeeds.
set @Counter=@Counter+1
	set @ObjProp='Application.ActiveWorkbook.Sheets(1).Cells(' + cast(@Counter as varchar(2)) + ', 1).value'
	-- genaration of correct property addressing
	EXEC @RetCode = sp_OASetProperty @WordObject, @ObjProp, @ExlValue
	-- set the value of the property 
	FETCH NEXT FROM authors_cursor into @ExlValue
	--IF @RetCode <> 0 or @@Error <> 0 GOTO OLE_Error_Handler
END 
CLOSE authors_cursor
DEALLOCATE authors_cursor
------------------------------&#65533;&#65533;&#65533;&#65533; &#65533;&#65533; &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533; &#65533; &#65533;&#65533;&#65533;&#65533;&#65533;&#65533;&#65533;
--EXEC @RetCode = sp_OAMethod @WordObject, 'Application.ActiveWorkbook.Save',Null
-- in case you are creating new Excel file change the upper row with the following 
EXEC @RetCode = sp_OAMethod @WordObject,'Application.ActiveWorkbook.SaveAs',Null, 'd:\success.xls'
IF @RetCode <> 0 or @@Error <> 0 GOTO OLE_Error_Handler
EXEC @RetCode = sp_OAMethod @WordObject, 'Quit'
-- I've commented the following line deliberately. SEE NOTE AT THE END
--EXEC sp_OADestroy @WordObject
GOTO Done
OLE_Error_Handler:
	/*CLOSE authors_cursor
	DEALLOCATE authors_cursor*/
EXEC sp_oageterrorinfo @WordObject, @RetCode out, @desc out
-- the last parameter gives small textual description of the error. It was very usefull!!
select @retCode, @desc
EXEC @RetCode = sp_OAMethod @WordObject, 'Quit'
EXEC sp_OADestroy @WordObject
GOTO Done
Done:

--EXEC sp_OAStop
6 июн 12, 11:04    [12672840]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Александр Бердышев
При том, что запускаю SQL Managment Studio как администратор и всё выполняю под sa.

Не могу понять, в чём дело.


exec master..xp_cmdshell 'dir d:\success.xls'
6 июн 12, 11:11    [12672892]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 401
Том в устройстве D имеет метку LENOVO
Серийный номер тома: DA01-F138
NULL
Содержимое папки d:\
NULL
Файл не найден
NULL


Ещё же не создал файл.
Хочу создать - но говорит, что нет прав.


Правда, вот это настораживает:

Содержимое папки d:\
NULL


P.S:
Вот это уже давно применил:

EXEC sp_configure 'show advanced options', 1
GO
-- To update the currently configured value for advanced options.
RECONFIGURE
GO
-- To enable the feature.
EXEC sp_configure 'xp_cmdshell', 1
GO
-- To update the currently configured value for this feature.
RECONFIGURE
GO
6 июн 12, 11:28    [12673054]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Александр Бердышев
Ещё же не создал файл.
Хочу создать - но говорит, что нет прав.


exec master..xp_cmdshell 'dir * > d:\result.txt'
6 июн 12, 11:33    [12673115]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 401
NULL
6 июн 12, 11:40    [12673190]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Александр Бердышев
NULL

Файл то d:\result.txt появился ?
6 июн 12, 11:41    [12673201]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 401
На пример с MSDN:

DECLARE @cmd sysname, @var sysname
SET @var = 'dir/p'
SET @cmd = @var + ' > dir_out.txt'
EXEC master..xp_cmdshell @cmd

тоже "Отказанно в доступе".

Где могут настраиваться права на это?
6 июн 12, 11:42    [12673216]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Glory
Member

Откуда:
Сообщений: 104751
Александр Бердышев
Где могут настраиваться права на это?

Доступ к внешним ресурсам осуществляется под учетной записью службы сервера
6 июн 12, 11:47    [12673266]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 401
Всё-таки, кто-нибудь может сказать, как по шагам настроить достаточные права?
6 июн 12, 12:48    [12673788]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 401
Права настроил, вопрос закрыт.
6 июн 12, 14:13    [12674555]     Ответить | Цитировать Сообщить модератору
 Re: Отказ в доступе при попытке созданя экселевского файла.  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 401
Для работы под WIN7 надо было отключить контроль UAC.

Потом была ещё проблема - ругался на SaveAs

Решение:
http://translate.googleusercontent.com/translate_c?hl=ru&prev=/search%3Fq%3DSQL%2BSaveAs%2B2146827284%2BAutoWrap%26hl%3Dru%26newwindow%3D1%26client%3Dopera%26sa%3DX%26rls%3Dru%26channel%3Dsuggest%26tbas%3D0%26biw%3D1366%26bih%3D646%26prmd%3Dimvns&rurl=translate.google.ru&sl=en&u=http://social.msdn.microsoft.com/Forums/en-US/innovateonoffice/thread/b81a3c4e-62db-488b-af06-44421818ef91%3Fprof%3Drequired&usg=ALkJrhhsTEkie8ShMW9OPSwg8wn7-gFkIw

Необходимо было создать папку C:\Windows\SysWOW64\config\systemprofile\Desktop
7 июн 12, 17:49    [12683824]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить