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

присоветуйте, пожалуйста.

Как проверить сетевой файл из процедуры

Три известных мне способа не подходят.
Первый и второй при сетевой ссылке на файл дают FALSE (не существует)
А третий заблокирован на SQL-сервере

-- using the scripting object
	exec sp_OACreate 'Scripting.FileSystemObject', @objFSys out
	exec sp_OAMethod @objFSys, 'FileExists', @i out, @File

-- using xp_fileexists
	exec master..xp_fileexist @File, @i out

-- using xp_cmdshell
	select @cmd = 'dir /B ' + @Path + @FileName
	insert #a exec master..xp_cmdshell @cmd

Что ещё можно предпринять?

Спасибо!
21 мар 14, 14:23    [15766634]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Glory
Member

Откуда:
Сообщений: 104760
Assoll
Первый и второй при сетевой ссылке на файл дают FALSE (не существует)

А права то есть для такой проверки ?
21 мар 14, 14:25    [15766671]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Assoll
Guest
Glory
Assoll
Первый и второй при сетевой ссылке на файл дают FALSE (не существует)

А права то есть для такой проверки ?

Локальные файлы проверяет правильно
Те, что по сети - через проводник открываются
21 мар 14, 14:30    [15766731]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Glory
Member

Откуда:
Сообщений: 104760
Assoll
Те, что по сети - через проводник открываются

Ваши права и права сервера - это совершенно разные права.
21 мар 14, 14:33    [15766749]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Assoll
Guest
Assoll
Glory
пропущено...

А права то есть для такой проверки ?

Локальные файлы проверяет правильно
Те, что по сети - через проводник открываются

как проверить - не знаю
есть возможность запускать процедуры из-под другого пользователя?
21 мар 14, 14:58    [15767015]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
mag2000
Member

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

1. Проверьте под какой уч. записью запускается ваш экземпляр SQL-сервера.
Это можно посмотреть, запустив в Windows программу "Службы" (Services).
Например, так: Пуск --> Администрирование --> Службы

Можно узнать имя уч. записи и из SMSS, выполнив процедуру
EXEC sp_smdshell(WHOAMI)


2. Дать этой уч. записи нужные права на сетевой каталог.

Лучший вариант для этого, если уч. запись SQL-сервера доменная и оба сервера в одном домене.
21 мар 14, 18:19    [15768422]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
mag2000
Member

Откуда:
Сообщений: 182
mag2000,
Ошибся:
EXEC xp_cmdshell(WHOAMI)
21 мар 14, 18:22    [15768434]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
AnyKey45
Member

Откуда: Ekaterinburg-Moscow-EU
Сообщений: 219
разблокировать 3-й вариант полагаю уже пробовали...

http://msdn.microsoft.com/ru-ru/library/ms190693.aspx
24 мар 14, 08:57    [15775352]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31442
Assoll
Assoll
пропущено...

Локальные файлы проверяет правильно
Те, что по сети - через проводник открываются

как проверить - не знаю
есть возможность запускать процедуры из-под другого пользователя?
Если только свою CLR написать.

Но лучше ИМХО дать сиквелу нормальные права. Тем более, вы же не просто так файл проверяете, вы с ним будете что то делать? Права всё равно понадобятся.
24 мар 14, 09:13    [15775415]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
Assoll
есть возможность запускать процедуры из-под другого пользователя?
Есть возможность обращаться к внешним ресурсам из-под другого пользователя: Credentials + SQL Server Authentication.
24 мар 14, 11:00    [15775951]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
o-o
Guest
invm
Assoll
есть возможность запускать процедуры из-под другого пользователя?
Есть возможность обращаться к внешним ресурсам из-под другого пользователя: Credentials + SQL Server Authentication.

подскажите, плиз, на что гуглить.
Credentials + proxy умею только в агенте использовать,
и то для T-SQL script их не используешь
24 мар 14, 13:22    [15776897]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
o-o,

http://technet.microsoft.com/en-us/library/ms189522(v=sql.105).aspx
A credential is a record that contains the authentication information that is required to connect to a resource outside SQL Server. Most credentials include a Windows user and password.
...
After creating a credential, you can map it to a SQL Server login by using CREATE LOGIN or ALTER LOGIN.
24 мар 14, 14:16    [15777439]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
o-o
Guest
invm,

не получается.
где неправильно делаю?
use [master]
go
create credential my_cred with identity = N'dom\acc', secret = N'superpassword'
go

create login test_login with password = 'another_super_password'

alter login test_login
add credential my_cred;
go

--just in case!!!
exec master..sp_addsrvrolemember @loginame = N'test_login', @rolename = N'sysadmin'
go

execute as login = 'test_login'

declare @File varchar(100) = '\\gfhgfhfghfg.gfhgfhgf.fggfgf.fg\kkkk$\uuuu\u_ex140317.log', @i int;


exec master..xp_fileexist @File, @i out 
select @i
-------------
0

declare @cmd  varchar(400)= 'dir /B ' + @File
exec master..xp_cmdshell @cmd
-------------
Access is denied.
NULL


dom\acc -- моя доменная учетка и к файлу \\gfhgfhfghfg.gfhgfhgf.fggfgf.fg\kkkk$\uuuu\u_ex140317.log у ней полный доступ
24 мар 14, 14:53    [15777824]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
sp_xp_cmdshell_proxy_account
24 мар 14, 17:34    [15779219]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Glory
Member

Откуда:
Сообщений: 104760
o-o
где неправильно делаю?

Почему то считаете, что Credentials + proxy влияют на работу xp_fileexist и xp_cmdshell

Про xp_cmdshell в хелпе ясно сказано
The Windows process spawned by xp_cmdshell has the same security rights as the SQL Server service account.
When it is called by a user that is not a member of the sysadmin fixed server role, xp_cmdshell connects to Windows by using the account name and password stored in the credential named ##xp_cmdshell_proxy_account##.

А xp_fileexist - недокументирована. Можно только предполагать, как там организована персонификацмя. Скорее всего, имхо, as the SQL Server service account
24 мар 14, 17:44    [15779281]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
o-o
Guest
а как тогда вот эту фразу понимать?
invm
Assoll
есть возможность запускать процедуры из-под другого пользователя?
Есть возможность обращаться к внешним ресурсам из-под другого пользователя: Credentials + SQL Server Authentication.


как использовать эти Credentials + SQL Server Authentication применительно к проверке существования файла на шаре?
24 мар 14, 17:52    [15779322]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
o-o
Guest
вот это
EXEC sp_xp_cmdshell_proxy_account 'dom\my_acc', 'pswd';

выдает
Msg 15137, Level 16, State 1, Procedure sp_xp_cmdshell_proxy_account, Line 1
An error occurred during the execution of sp_xp_cmdshell_proxy_account. Possible reasons: the provided account was invalid or the '##xp_cmdshell_proxy_account##' credential could not be created. Error code: '1385'.

именно на Error code: '1385' поисковик мне выдает жалобу
connect
Type: Bug
0 Workaround(s)

Posted by Microsoft on 8/13/2008 at 8:33 AM
The message 1385 returned from xp_cmdshell indicates that the proxy account does not have permission to connect to the local machine. Using the "net helpmsg 1385" command in a command window results in:

Logon failure: the user has not been granted the requested logon type at this computer.

выделенное жирным звучит как издевательство
24 мар 14, 18:10    [15779451]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
invm
Member

Откуда: Москва
Сообщений: 9406
o-o
как использовать эти Credentials + SQL Server Authentication применительно к проверке существования файла на шаре?
Ну, очевидно, фокус не удался и xp_fileexist не чувствительна к Credentials. Хотя, вы проверяете из под логина, который sysadmin. Что, имхо, некорректно.
24 мар 14, 18:12    [15779467]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
o-o, а локальная учётка создана с нужными правами?
24 мар 14, 18:13    [15779476]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Glory
Member

Откуда:
Сообщений: 104760
o-o
Logon failure: the user has not been granted the requested logon type at this computer.

выделенное жирным звучит как издевательство

А какой logon type вы назначили dom\my_acc на этой машине ?
24 мар 14, 18:13    [15779477]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
o-o
Guest
invm
o-o
как использовать эти Credentials + SQL Server Authentication применительно к проверке существования файла на шаре?
Ну, очевидно, фокус не удался и xp_fileexist не чувствительна к Credentials. Хотя, вы проверяете из под логина, который sysadmin. Что, имхо, некорректно.


точно, спасибо, проканалось:
exec master..sp_dropsrvrolemember @loginame = N'test_login', @rolename = N'sysadmin'
go

....
exec master..xp_fileexist @File, @i out 
select @i
-----------------
1

видит на шаре. ура!

-----------------------------------
зато.
теперь у меня проблемы с xp_cmdshell.
черт дернул менять аккаунт...

a чтобы дать логину execute on xp_cmdshell,
его обязательно мапить в мастера?
ок, с горем пополам даю ему execute on xp_cmdshell.
и теперь у меня:
Msg 15153, Level 16, State 1, Procedure xp_cmdshell, Line 1
The xp_cmdshell proxy account information cannot be retrieved or is invalid. Verify that the '##xp_cmdshell_proxy_account##' credential exists and contains valid information.
24 мар 14, 18:40    [15779623]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
o-o
Guest
Glory
o-o
Logon failure: the user has not been granted the requested logon type at this computer.

выделенное жирным звучит как издевательство

А какой logon type вы назначили dom\my_acc на этой машине ?


я ничего не назначаю, а как-то могу? сильно сомневаюсь...
я не доменный админ.
у меня просто есть в локальном виде сервер для экспериментов
и есть доменная учетка, к-ая к тому файлу на шаре доступ имеет.

если скажете, где посмотреть, выдам всю имеющуюся информацию.
как-то же мне теперь надо починить нагаженное...
24 мар 14, 18:46    [15779648]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Glory
Member

Откуда:
Сообщений: 104760
o-o
я ничего не назначаю, а как-то могу? сильно сомневаюсь...
я не доменный админ.
у меня просто есть в локальном виде сервер для экспериментов
и есть доменная учетка, к-ая к тому файлу на шаре доступ имеет.

Тогда кто над кем издевается то ?
http://technet.microsoft.com/en-us/library/cc732593(v=ws.10).aspx
24 мар 14, 18:49    [15779662]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
o-o
Guest
Glory,

там про Win Server 2008, а у меня XP, все равно читать?

я почему про издевательство: мне показалось, они пишут, что у меня
user has not been granted the requested logon type at this computer
TYPE как-то...выпустилось.
наверное потому, что я ни про какие LOGON TYPE понятия не имею

думаю, фигасебе. логона у меня нет на мой же комп. кто ж тогда сейчас на нем работает?
24 мар 14, 18:57    [15779691]     Ответить | Цитировать Сообщить модератору
 Re: Проверка сетевого файла на существование  [new]
Glory
Member

Откуда:
Сообщений: 104760
o-o
там про Win Server 2008, а у меня XP, все равно читать?

Вы разницу между авторизацией в домене и на локальной машине понимаете ?
24 мар 14, 18:59    [15779704]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить