i have user view, let's call [mike].table
wich filtered select select * table tl_filterkey in (1,2,3)
so, if mike connects server , executes
"select * table"
he see part of data table.
there procedure dbo rights , permision mike execution
create procedure tbselect select * table
if mike executes exec tbselect
see rows table, not filtered.
how write procedure select data user view(filtered rows)?
i tried recreate procedure 'with execute 'mike'' , 'with execute caller', rows returned.
your question little confusing, , don't mention sql server version, suspect problem due schemas. when reference object without schema, sql server looks object in user's default schema first, dbo schema.
as complete guess, think have user called mike default schema mike
, view called mike.table
, table called dbo.table
. when mike runs query table
resolved mike.table
when db_owner queries table
it's resolved dbo.table
.
to avoid confusion, should use clearer object names (at least testing) , always qualify object names owner:
create table dbo.testtable (col1 int) go insert dbo.testtable select 1 union select 2 union select 3 go -- return rows select col1 dbo.testtable go create view dbo.testview select col1 dbo.testtable col1 >= 2 go -- return 2 rows select col1 dbo.testview go create procedure dbo.testproc select col1 dbo.testview go -- return 2 rows exec dbo.testproc go drop proc dbo.testproc go drop view dbo.testview go drop table dbo.testtable go
Comments
Post a Comment