小编Cur*_*Kid的帖子

使用内联查询从SSRS数据集中提取数据库对象依赖性(查询类型:文本)

我正在处理为任何SSRS RDL标识依赖的db对象的特定问题。

我对RDL中的查询是否有任何数据集具有存储过程有很好的了解,然后可以引用关联的存储过程并获取所有依赖对象(详细信息可以在此处找到:查找SQL Server对象依赖关系的不同方法

但是我正在专门针对文本查询或任何rdl的内联查询的数据集。我能够从rdl的XML中提取CommandText,但是我不确定如何提取db对象(例如sp,table,views列)形成一个命令文本,该文本是rdl中的内联查询。

例如,如果我从XML commandText中提取以下查询(这是一个假设查询,则数据库中的名称未标准化,例如vw_用于视图,udf_用于函数):

    -----This query serves Report ABC
    SELECT DATE
        ,[amount]
        ,teamID = (SELECT TeamID FROM Sales.[getSalesPerson](r.date) as s WHERE R.[SalesPersonName] = S.[SalesPersonName])
        ,[channel]
        ,[product]
        ,[Item]
        ,r.[M_ID]
        ,Amount
        ,M.[Type]
    FROM dbo.FactTable AS R
    LEFT JOIN sp_Channel C ON R.[Channel_ID] = C.[Channel_ID]
    LEFT JOIN Marketing.vw_M M ON R.[M_ID] = M.[M_ID]
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以确定此查询具有依赖对象,如下所示:

ObjectName                ObjectType
------------------------------------------
dbo.FactTable             Table 
sp_Channel                Stored Procedure
Marketing.vw_M            View
Sales.[getSalesPerson]    Function
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server reporting-services xml-parsing

11
推荐指数
1
解决办法
282
查看次数

使用STUFF函数花费很长时间的SQL查询

示例数据集:

ID  seat    code
15098   1   AA21
15098   2   AA21
15105   1   AA21
15105   1   DD15
15105   1   NN60
15196   1   AA21
15196   2   DD50
15196   2   DD51
15209   1   AA21
15209   3   AA21
15209   2   CC50
15209   1   DD01
15209   3   DD01
15210   1   AA21
15210   2   AA21
15210   3   AA21
15210   1   DD21
15210   2   DD21
15210   3   DD21
15211   1   CC51
15211   1   DD20
15212   1   AA21
15212   1   DD03
Run Code Online (Sandbox Code Playgroud)

和所需的结果是:

ID  seat    Codes
15098   1    AA21 …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server reporting-services sql-server-2012

5
推荐指数
1
解决办法
3276
查看次数

VBA Excel字符串数据类型变量赋值

我试图为我在下面定义的CurrentClient变量设置一个值,然后用它来计算它在一个范围内出现的次数.我不知道我在这里做错了什么.它给出了错误:"运行时错误9下标超出范围"的步骤,它将Sheet 2单元格A2中的值赋给Currentclient.

请帮忙.

Sub GetValue()

Dim ClientCnt As Integer
Dim CurrentClient As String

CurrentClient = Sheets("Sheet 2").Range("A2").Text

ClientCnt = Application.WorksheetFunction.CountIf(Range("A:A"), CurrentClient)

End Sub
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba

0
推荐指数
1
解决办法
199
查看次数