2013-10-08 2 views
0

У нас есть несколько заданий агента SQL, работающих в нашем продукте. Но мы хотим избавиться от агента SQL-сервера, чтобы мы могли использовать Sql server express. Поэтому я пишу наш собственный сервис для выполнения хранимых процедур, которые в настоящее время выполняются как рабочие места. Все остальное, кроме «Владельца», можно легко дублировать. Насколько я понимаю, когда вы указываете владельца в агенте SQL-сервера, задания запускаются в этом контексте входа. Я использую класс SqlCommand из .NET для запуска хранимых процедур. Но этот класс не поддерживает предоставление другого контекста входа. Есть ли другой способ, с помощью которого я могу указать другой логин для задания, как это делает агент SQL Server?Выполнение хранимой процедуры как другой логин

Заранее благодарен, -Ний.

ответ

0

Вы можете использовать EXECUTE AS команду в хранимой процедуре для выполнения в качестве другого пользователя, который передается в качестве параметра:

create procedure testing 
    (@username nvarchar(100)) 
as 
    execute as user = @username; 

    select USER_NAME(); -- this is just to test the current user name, remove it later 
    -- your code goes here 

    revert; 

Вы можете прочитать больше об этом и необходимые разрешения здесь: http://msdn.microsoft.com/en-us/library/ms181362.aspx

+0

Это не то, что я ищу. Как и серверный агент sql, я должен иметь возможность указать логин, не указывая пароль для этого входа. Я видел заявление, приведенное в http://stackoverflow.com/questions/1902084/sql-execute-as-login-command-and-linq-to-sql. Будет ли это работать? –

+0

Позвольте мне посмотреть ..... – Szymon

+0

Отметьте мое редактирование. Думаю, это сработает для вас. – Szymon

0

если вы не хотите использовать текущее соединение для запуска хранимой процедуры из кода, а затем сначала создать пользователя на сервере sql и использовать его для выполнения хранимой процедуры.

SQlCommand принимает соединение как параметр, который содержит информацию о владельце. Вам нужно будет явно создать новое соединение с новым пользователем и использовать его для выполнения вашего SP.

Смежные вопросы