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
謝謝!!!!!! –