powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как программно запустить dts-пакет с клиентской машины?
6 сообщений из 31, страница 2 из 2
Как программно запустить dts-пакет с клиентской машины?
    #32038654
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Утро доброе!
Так в этом и дело, уважаемый Glory, что вышеуказанная строка содержится именно в пользовательской SP, доступ на которую моей программе дан!.. Может быть, дело в ключе /E? Может, надо строго /Usa /Ppassword? А если пароль на sa отсутствует (ну вот такая дикая ситуация..)?
...
Рейтинг: 0 / 0
Как программно запустить dts-пакет с клиентской машины?
    #32038658
spice
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если пароль на sa присутствует, можно его явно в xp_cmdshell прописать?
Попробуй зайти на форум по SQL, набрать в строке поиска xp_cmdshell (проблема не в Дельфях). Не может быть, чтобы никто с этим не сталкивался.
...
Рейтинг: 0 / 0
Как программно запустить dts-пакет с клиентской машины?
    #32038672
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, по ходу работы возникают новые проблемы. Я нашел, что для того, чтобы мне, не сисадмину, запустить cmdshell, надо или в Server Agent делать job и давать мне на него права (я правильно понял?), или использовать xp_sqlagent_proxy_account, так? Но ни то, ни другое мне сделать не дадут!... Как быть? Может, есть другой способ запустить пакет, кроме как через cmdshell (похоже, что-то моему админу в нем не нравится)?
...
Рейтинг: 0 / 0
Как программно запустить dts-пакет с клиентской машины?
    #32038685
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте сначала

Имеем пользователя - ни sysadmin, ни dbo
Задача - позвволить ему запускать внешнее приложение на сервере из T-SQL.

1. Для запуска внешнего приложения будем использовать xp_cmdshell

2. Т.к. такой пользователь не имеет прав непосредственно запускать xp_cmdshell, то создаем обыкновенную пользовательскую процедуру, вроде такого

create procedure dbo.sp_startmyapp
as
exec master..xp_cmdshell 'dir с:\*.*'
go

3. Даем пользователю право на запуск dbo.sp_startmyapp

4. Т.к. наш пользователь не sysadmin, то запускаемое приложение (в нашем примере 'dir *.*') будет работать в контексте безопасности SQL Server Agent proxy account.
Этот аккаунт задается в EM в свойствах Server Agent-а или с помощью xp_sqlagent_proxy_account.
!NB! Данная процедура не будет выдавать никаких ошибок, если имя/пароль аккаунта заданы неверно, например, с включенным CapsLock.

5. При выполнении всех шагов и если SQL Server Agent proxy account имеет нужные права на с:\, то пользователь, запуская наш пример,
exec dbo.sp_startmyapp
должен получить содержимое директории с:\

6. Все дальнейшие ошибки есть уже ошибки запущенного приложения

У меня все это работает
MS SQL2000SP2, Win2000 AdvServ SP2
...
Рейтинг: 0 / 0
Как программно запустить dts-пакет с клиентской машины?
    #32038800
pau
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
pau
Гость
//Переключаемся на системную БД
Dm1.ManufactureCommand.CommandText:='use msdb';
Dm1.ManufactureCommand.Execute;
//Запускаем задание
Dm1.ManufactureCommand.CommandText:='EXEC sp_start_job @job_name = "Manufacture"';
Dm1.ManufactureCommand.Execute;
//Переключаемся в пользовательскую БД
Dm1.ManufactureCommand.CommandText:='use Calculation';
Dm1.ManufactureCommand.Execute;
//Сообщаем пользователю

Кстати, о птичках про всякие "Login Failed" -
Permissions
Execute permissions default to the public role in the msdb database. A user who can execute this procedure and is a member of the sysadmin fixed role can start any job. A user who is not a member of the sysadmin role can use sp_start_job to start only the jobs he/she owns.

When sp_start_job is invoked by a user who is a member of the sysadmin fixed server role, sp_start_job will be executed under the security context in which the SQL Server service is running. When the user is not a member of the sysadmin fixed server role, sp_start_job will impersonate the SQL Server Agent proxy account, which is specified using xp_sqlagent_proxy_account. If the proxy account is not available, sp_start_job will fail. This is only true for Microsoft® Windows NT® 4.0 and Windows 2000. On Windows 9.x, there is no impersonation and sp_start_job is always executed under the security context of the Windows 9.x user who started SQL Server.

Удачи, рад помочь.
...
Рейтинг: 0 / 0
Как программно запустить dts-пакет с клиентской машины?
    #32038935
Фотография manowar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро, Господа!
Огромное спасибо всем за советы, они мне очень помогли!
Проблема решилась сама собой, так что тему, наверное, можно закрывать. Еще раз благодарю всех, кто принимал участие в обсуждении. Был рад с вами общаться. Удачи всем!
P.S. "О, сколько нам открытий чудных готовит программизма дух..."
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как программно запустить dts-пакет с клиентской машины?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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