VirtualIreland.ru - Виртуальная Ирландия
Вернуться   VirtualIreland.ru - Виртуальная Ирландия > Живем в Ирландии > IT и Связь

IT и Связь Обсуждение "айтишных" вопросов и средств связи

Ответ
 
Опции темы Опции просмотра
Старый 23.05.2008, 10:30   #1
Активный Участник
 
Аватар для vertex
 
Сообщений: 437
Благодарности: 152 в 75 сообщениях Поиск благодарностей vertex
По умолчанию Доступ к файлам из SQL Stored Procedure (C#)

Подскажите кто знает....

Есть Stored Procedure написанная на C#, из которой нужно кое-что в файл скинуть либо на локальном компе где сам SQL Server установлен, либо на сетку. В обоих случаях нужно правильно реализовать доступ к русурсам файловой системы чтобы это было возможно, т.к. по умолчанию SQL Stored Procedure не имеет доступа на создание каких-либо файлов где-либо.

Поскажите, как реализовать правильное предоставление доступа, чтобы в файл можно было-бы писать...

Если я в тупую вызываю нечто типа:
Код:
        TextWriter tw = new StreamWriter("c:\\temp\\Test.txt");
        tw.WriteLine("Hi!");
        tw.Close();
То при запуске такой процедуры внутри SQL Server Manager выдает:

Код:
Msg 6522, Level 16, State 1, Procedure Test, Line 0
A .NET Framework error occurred during execution of user-defined routine or aggregate "Test": 
System.Security.SecurityException: Request for the permission of type 'System.Security.Permissions.FileIOPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
System.Security.SecurityException: 
   at System.Security.CodeAccessSecurityEngine.Check(Object demand, StackCrawlMark& stackMark, Boolean isPermSet)
   at System.Security.CodeAccessPermission.Demand()
   at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at System.IO.StreamWriter.CreateFile(String path, Boolean append)
   at System.IO.StreamWriter..ctor(String path, Boolean append, Encoding encoding, Int32 bufferSize)
   at System.IO.StreamWriter..ctor(String path)
   at StoredProcedures.Test(Int32 ID)
vertex вне форума   Ответить с цитированием

Зарегистрируйтесь или войдите под своим именем, чтобы спрятать этот рекламный блок
Старый 23.05.2008, 10:42   #2
Спам-робот
 
Аватар для YellowMan
 
Откуда: Dublin<->Брянск
Сообщений: 21,268
Благодарности: 11,080 в 5,139 сообщениях Поиск благодарностей YellowMan
По умолчанию Re: Доступ к файлам из SQL Stored Procedure (C#)

Это не Скульная ошибка, это ошибка .NET
Аккаунт, под которым запущен Скуль, имеет права писать туда?

Когда создавал Assembly, не забыл сказать WITH PERMISSION_SET = EXTERNAL_ACCESS?

Курить вот это http://msdn2.microsoft.com/en-us/library/ms345101.aspx
__________________
My Church is Black...

Последний раз редактировалось YellowMan, 23.05.2008 в 10:48.
YellowMan вне форума   Ответить с цитированием
Старый 23.05.2008, 10:47   #3
Активный Участник
 
Аватар для vertex
 
Сообщений: 437
Благодарности: 152 в 75 сообщениях Поиск благодарностей vertex
По умолчанию Re: Доступ к файлам из SQL Stored Procedure (C#)

Цитата:
Сообщение от YellowMan Посмотреть сообщение
Это не Скульная ошибка, это ошибка .NET
Аккаунт, под которым запущен Скуль, имеет права писать туда?
Не хочется показаться ламером в этом вопросе, но что такое Cкуль?
vertex вне форума   Ответить с цитированием
Старый 23.05.2008, 10:50   #4
Спам-робот
 
Аватар для YellowMan
 
Откуда: Dublin<->Брянск
Сообщений: 21,268
Благодарности: 11,080 в 5,139 сообщениях Поиск благодарностей YellowMan
По умолчанию Re: Доступ к файлам из SQL Stored Procedure (C#)

Предлагаю угадать
__________________
My Church is Black...
YellowMan вне форума   Ответить с цитированием
Старый 23.05.2008, 10:52   #5
Активный Участник
 
Аватар для vertex
 
Сообщений: 437
Благодарности: 152 в 75 сообщениях Поиск благодарностей vertex
По умолчанию Re: Доступ к файлам из SQL Stored Procedure (C#)

коварный ответчик...

vertex добавил 23.05.2008 в 12:18
Цитата:
Сообщение от YellowMan Посмотреть сообщение
Когда создавал Assembly, не забыл сказать WITH PERMISSION_SET = EXTERNAL_ACCESS?

Курить вот это http://msdn2.microsoft.com/en-us/library/ms345101.aspx
Ок, это уже начало. Я поменял assembly на использование External Permission Level, и теперь когда VS2005 пытается его задиплоить, выдается следующее сообщение:

failed because assembly is not authorized for PERMISSION_SET = EXTERNAL_ACCESS. The assembly is authorized when either of the following is true: the database owner (DBO) has EXTERNAL ACCESS ASSEMBLY permission and the database has the TRUSTWORTHY database property on; or the assembly is signed with a certificate or an asymmetric key that has a corresponding login with EXTERNAL ACCESS ASSEMBLY permission. If you have restored or attached this database, make sure the database owner is mapped to the correct login on this server. If not, use sp_changedbowner to fix the problem.


Ок, вроде я раскопал где это EXTERNAL ACCESS ASSEMBLY свойство устанавливается: В свойствах самого сервера, Permissions, выбрать пользователя, и установить свойство External access assembly в состояние ON для Grant. А вот на счет того чтобы установить TRUSTWORTHY для базы данных - такого найти не могу. Не подскажете куда смотреть?

vertex добавил 23.05.2008 в 12:42
Все, нашел:
Код:
ALTER DATABASE [MyDatabase] SET TRUSTWORTHY ON;
GO
И все теперь заработало!!! Ура!!!

Последний раз редактировалось vertex, 23.05.2008 в 11:43. Причина: Добавлено сообщение
vertex вне форума   Ответить с цитированием
Старый 23.05.2008, 12:51   #6
дядечка предпенсионного возраста
 
Аватар для Oleg123
 
Откуда: Milky Way
Сообщений: 3,137
Благодарности: 2,298 в 988 сообщениях Поиск благодарностей Oleg123
По умолчанию Re: Доступ к файлам из SQL Stored Procedure (C#)

Цитата:
Сообщение от vertex Посмотреть сообщение
И все теперь заработало!!! Ура!!!
мораль, курить гугл и будет счастье.
__________________
Ну, разумеется, - подхватил Степан Аркадьич. - Но в этом-то и цель образования: изо всего сделать наслаждение. (c) Толстой Л.Н.
Oleg123 вне форума   Ответить с цитированием
Старый 23.05.2008, 13:55   #7
Спам-робот
 
Аватар для YellowMan
 
Откуда: Dublin<->Брянск
Сообщений: 21,268
Благодарности: 11,080 в 5,139 сообщениях Поиск благодарностей YellowMan
По умолчанию Re: Доступ к файлам из SQL Stored Procedure (C#)

Курить надо BOL.

Можно проще:

CREATE ASSEMBLY assembly_name ... WITH PERMISSION_SET = EXTERNAL_ACCESS
__________________
My Church is Black...
YellowMan вне форума   Ответить с цитированием
Ответ



Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать на сообщения
Вы не можете добавлять вложения
Вы не можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщ.
Переезжаю, как сохранить доступ в интернет? natalja0809 IT и Связь 2 19.12.2007 23:22
Доступ к финансовым продуктам для вновь приехавших tadpole Финансы и Бизнес 2 02.10.2007 13:40
Как закрыть доступ граберу Roslin IT и Связь 6 30.01.2007 17:34
Интернет доступ через модем Arte IT и Связь 25 18.11.2004 14:48


Часовой пояс GMT, времени сейчас: 20:41.


vBulletin®, Copyright ©2000-2025, Jelsoft Enterprises Ltd., Русификация: zCarot, Vovan & Co
©2003-2025 VirtualIreland.ru - Виртуальная Ирландия