【问题标题】:TSQL query to end user对最终用户的 TSQL 查询
【发布时间】:2015-01-12 16:07:27
【问题描述】:

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

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

我只需要一种方法来授予特定个人访问权限以针对数据库运行参数化查询。我曾考虑将查询转换为视图并为他们的网络帐户创建只能访问该视图的登录名,但我认为您不能将参数与视图一起使用。我想知道是否有一个简单的界面可以让他们在不使用 SSRS 的情况下针对存储的查询或视图输入参数。这似乎很简单,但我没有找到太多运气。

很抱歉,如果这是一个愚蠢的问题,但我刚刚从服务器管理员转到 DBA 角色,而我才刚刚触及表面!

【问题讨论】:

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

标签: sql sql-server tsql reporting-services


【解决方案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]

【讨论】:

  • 啊好吧,没想过使用SP。那么使用大部分查询创建视图并使用 SP 来实现参数化部分?我只需要尝试通过 excel 访问 SP,因为它们没有 SSMS 或 Access。
  • 对,或者,如果您不想创建视图,那也可以,直接在SP中添加您的查询
【解决方案2】:

您可以创建一个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);

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2011-04-04
    • 2013-06-08
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2017-08-20
    • 2013-05-23
    • 2023-04-07
    • 2016-05-15
    相关资源
    最近更新 更多