对最终用户的SQL查询

时间:2015-01-12 16:07:27

标签: sql sql-server tsql reporting-services

我已经为我们的财务部门的成员编写了一个参数化的交易SQL查询,并且在我运行它的那个月里多次为他复制带有标题的原始输出到excel。现在该部门正在进行区域化,而且我有几个财务部门都想要同样的事情。

我知道最终将部署SSRS,但我们的基础架构团队正在构建一个新环境,并且暂时不希望在“旧世界”中进行任何新安装。

我只需要一种方法来为选择的个人提供对数据库运行参数化查询的访问权限。我曾考虑过将查询转换为视图并为其网络帐户创建登录,只能访问该视图,但我认为您不能使用带有视图的参数。我想知道是否有一个简单的界面可以允许他们在不使用SSRS的情况下针对存储的查询或视图输入参数。这看起来很简单,但我找不到多少运气。

很抱歉,如果这是一个愚蠢的问题,但我刚刚从服务器管理员转到DBA角色,而我只是简单地说了一遍!

2 个答案:

答案 0 :(得分:1)

创建一个视图并在SP中使用参数调用它: -

样本将是

Create View [dbo].[vw_sampleView]
AS
BEGIN
 SELECT * FROM tblSample
END


CREATE PROC [dbo].[proc_GetData]
@id int
AS    
BEGIN
 SELECT * FROM vw_sampleView where id= @id
END

然后此SP重新调整过滤后的数据。将执行此SP的权限授予不同的用户。

GRANT EXECUTE ON [dbo].[proc_GetData] TO [user_logins]

答案 1 :(得分:0)

您可以创建一个UDF,它将根据参数返回一个表格。例如:

CREATE FUNCTION [dbo].[fnt_myfunction]( @id INT)
RETURNS TABLE
AS
RETURN (
        SELECT *
        FROM myTable
        WHERE id = @id
        );

DECLARE @id INT = 1;  

SELECT * FROM [dbo].[fnt_myfunction](@id);

希望有所帮助。