0
我正在运行SSRS报告,而我的数据源是FetchXML。从表中选择时是否有可能返回标量值?
不幸的是,使用FetchXML,您无法运行存储过程或函数。
这个问题可以问了几个不同的方式:
- 我如何传递一个函数到FetchXML的价值?
- 而不是做好上面的,是有可能只需要创建一个表或视图tbl_finduserGUID将返回功能dbo.fn_finduserguid()的价值?
- 或者有更好的方式通过SSRS/FetchXML获取当前用户的数据库角色?
这里是我的查询将被转换为fetchxml:
SELECT systemuser.fullname AS 'fullname',
usersettings.calendartype AS 'calendartype',
usersettings.uilanguageid AS 'uilanguageid'
FROM filteredsystemuser AS systemuser
INNER JOIN filteredusersettings AS usersettings
ON systemuser.systemuserid = usersettings.systemuserid
WHERE systemuser.systemuserid = dbo.Fn_finduserguid()
这里的dbo.fn_finduserguid()的源
SET ansi_nulls ON
go
SET quoted_identifier ON
go
ALTER FUNCTION [dbo].[Fn_finduserguid]()
returns UNIQUEIDENTIFIER
AS
BEGIN
DECLARE @userGuid UNIQUEIDENTIFIER
--- test whether the query is runing by priviledged user with user role of CRMReaderRole
--- if it is dbo, we trust it as well.
--- There is an issue in SQL. If the user is a dbo, if it not member of any role
IF (Is_member('CRMReaderRole') | Is_member('db_owner')) = 1
BEGIN
SELECT @userGuid = Cast(Context_info() AS UNIQUEIDENTIFIER)
END
IF @userGuid IS NULL
BEGIN
SELECT @userGuid = s.systemuserid
FROM systemuserbase s
WHERE s.domainname = Suser_sname()
END
RETURN @userGuid
END
感谢这么多,这里是我的尝试:http://screencast.com/t/hbWvfmYmT和http://截屏.com/t/8UByawO31 –
我已更新我的回答 – Spock
谢谢!!!!!! –