Executando o SQL Server proc armazenado no contexto do chamador

votos
4

Isto está a tornar-me louco e eu tenho certeza que a resposta é tão fácil.

Eu tenho vários esquemas que cada um tem uma vista nomeada Task. Eu quero fazer um único proc armazenado que os usuários que executam em vários esquemas padrão podem executar com sucesso - que proc armazenado faz um select na vista de tarefas.

Então, dizer que tenho esses objetos:

Ver: fr.Task (usuários com esquema padrão de 'fr' obter esta se basta digitar seleccionar * da Task Ver: de.Task (idem, mas para usuários com esquema padrão 'de')

StoredProc: dbo.MyProc - todos os usuários têm permissões de execução. O proc é simplesmente:

select count(*) from Task 

Agora eu esperaria (e eu quero) que, se um usuário com esquema padrão 'fr' fez

exec dbo.MyProc

Em seguida, eles obter a contagem de linhas da vista fr.Task. Mas em vez disso, recebo erro Nome de objecto inválido 'Tarefa'.

Não é possível fazer uma storedproc genérico que irá executar um seleto no esquema do usuário executando?

Thx, Bill

Publicado 19/05/2009 em 15:56
fonte usuário
Em outras línguas...                            


3 respostas

votos
3

Para executar um procedimento armazenado no contexto do chamador, você pode usar a cláusula EXECUTE AS entanto, suspeito que isso não é realmente o que você está querendo fazer.

http://msdn.microsoft.com/en-us/library/ms188354.aspx

Respondeu 19/05/2009 em 16:20
fonte usuário

votos
0

"Não é possível fazer uma storedproc genérico que irá executar um seleto no esquema do usuário em execução?" A resposta é não"

o DEFAULT_SCHEMA é retirado do local do stored_procedure

create procedure fr.MyProc as select * from Task
create procedure de.MyProc as select * from Task

voltará no primeiro caso o fr.Task-Tabela e no segundo caso o de.Task-Tabela. Não importa, o que DEFAULT_SCHEMA o chamador tem

Respondeu 26/06/2018 em 11:41
fonte usuário

votos
0

Use dinâmico SQL ie., Exec ( 'SELECT COUNT (*) de Tarefa')

Respondeu 06/05/2010 em 14:01
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more